我的第一個 Drupal 模組:Thumbview Field

Feb
18

為了回應 Jimmy, 阿翔, kid814 等人,同時也想試著寫個 Drupal 的模組來練習一下,於是有了這個 Thumbview Field 的模組誕生了~
Thumbview Field for Drupal

幾個月前,我寫了篇「Drupal:許每篇文章一張圖」,目的在做出 Cool Hunting 網站上的視覺效果來,使用了 Computed Field 這個模組,搭配 htmlparser 來抓出每篇文章的第一張圖,然後再使用 ViewsImagecache 來秀圖。過程非常的複雜,容易出錯。幾個月後,有了這個模組,目的是在簡化整個過程…

接下來的全文,會有非常多的圖,請有心理準備。

首先,我在自己的機器上,使用 Drupal 架了個臨時站,然後發表了幾篇文章,如下圖:
Thumbview Field for Drupal Thumbview Field for Drupal Thumbview Field for Drupal Thumbview Field for Drupal
 

緊接著,我總計安裝了如下幾個模組:CCK (Content), Imagecache, Views 以及敝人寫的 Thumbview Field:
Thumbview Field for Drupal Thumbview Field for DrupalThumbview Field for Drupal Thumbview Field for Drupal
 

接著,我挑了網站上文章類型為 blog 的,要讓它可以自動產生一張縮圖。現在就讓我們在 blog 這個 node type 上頭動些手腳:
Thumbview Field for Drupal
 

我在上頭新增了一個 Field,Field type 是 Thumbview Field:
Thumbview Field for Drupal
 

於是乎,現在每一篇 blog 都有一個叫 thumb(隨意自行定的名字)的 field 了:
Thumbview Field for Drupal
 

感覺上,應該就大功告成了? 其實還沒 = = 接著我想利用 Imagecache 來產生縮圖(PS. 我使用的 Imagecache 有修改過,請至本文章最下頭下載)。我先使用 Imagecache 產生一個叫 square100 的,然後設定了一下,目的在讓它產生一張 100x100 的正方型縮圖來:
Thumbview Field for Drupal Thumbview Field for Drupal Thumbview Field for Drupal Thumbview Field for Drupal
 

接著,我回到 blog 這個 content type,在它的 Display Field 裏頭,設定 Teaser mode 時,使用剛剛產生的 square100 來秀:
Thumbview Field for Drupal
 

以為大功告成了,很開心地連到首頁,卻發覺什麼也沒變化,有種被耍了的感覺…
Thumbview Field for Drupal
 

這是因為 Thumbview Field 的設計理念是,在新產生或修改一篇文章時,才去找出文章中的第一張圖來,然後存起來,留到有人要來看時,就可以直接拿去用,這樣程式跑起來會比較快。也就是說,讓寫文章的人覺得網站在更新時慢沒關係,因為寫文章的人,通常都是自己,不會太在意這一點點 lag。但是讓來覽瀏的人快一些是有好處的,至少他不會因此而不想再來你的網站 :p

我加寫了一個功能,透過 node_operations 來模擬「修改」或「編輯」這個行為。使用的方式很簡單,先連到 Administrator -> Content management -> Content,然後挑選出你要修改的 node 來,接著在 Update options 裏頭選「Update the selected nodes」,就行了:
Thumbview Field for Drupal
 

經過上面這個一個步驟,你剛剛選出來的 node,都被「更新」過了。於是你再連回首頁,會發覺每一篇都多了一張小縮圖了:
Thumbview Field for Drupal Thumbview Field for Drupal Thumbview Field for Drupal Thumbview Field for Drupal
 

最後,使用 Views 來只秀出縮圖:
Thumbview Field for Drupal
 

然後再配合 CSS,就可以秀出排列得整整齊齊的頁面來了:
Thumbview Field for Drupal
 

檔案下載

  • Thumbview Field
  • 修改過的 Imagecache(請先安裝原來的版本,然後再把這個壓縮檔解開來,會有一個 imagecache.module,覆蓋過去即可)

後記

  • 後來我發覺,這是個命名得很爛的模組。Thumbview 是取其「縮圖」的功能,但如果認真想想,它真正做的事,其實是抓出文章中的第一個圖片聯結,就這樣而已。至於要把這張圖以什麼樣子秀出來,則是透過 Imagecache 與 Views 來做到的,跟它根本沒有關係 = = 換句話說,它應該取個叫 FirstImg Field 什麼來的才對…
  • 為了讓這個模組正常作用,還得修改 Imagecache,感覺不是一個好作法,有想好不用動到 Imagecache 的作法了,不過有點懶 :p
  • Drupal 6 已經出來,現在就等 Views 與 CCK 的穩定版出來,聽說 Form API 與 CCK 改了很多,藉時這隻程式一定得改寫,不過我其實沒有把握,會有多少人對這個模組感興趣 @@
  • 寫這種 step-by-step 的文章,而且還放了滿滿的圖片,說明卻只有一點點,感覺挺有趣的,像是一位不負責任的推銷員,隨意地把腦子裏的東西唸完後,就覺得了事了似的,哈。

9 comments

Drake,看過一些你在DTW上的文章,讓我這樣的菜鳥非常容易搞懂。
你寫的文章非常到位,很喜歡,我個人希望你能介紹幾個“DRUPAL網站案例的構建”過程文章。并且給予一定的提示幫助。

比如:目前大多數的網站大致分為幾類:

1:新聞模式的
2:blog日志模式的
3:圖片/相冊模式的(也許是模板展示之類的)
4:論壇/BBS/FORUM
5:購物、商品展示之類的(這一累類似商業網站)

用到的模組,和難點,以及實現同一個展示/外觀效果使用的不同方式、不同方式的利弊共用等。

親自動手實驗室學習的最基礎,但像我等初學乍練的新手,往往是不知道從何處入手,所以提了這個要求,希望 Drake有空的時候考慮一下,為我們好好講講。

先謝謝哦!

Zerro, 快速地回應你的留言,說一下我目前的想法:

首先非常感謝你花了這麼多時間,留了段以稱讚開頭的留言,而且看得出來,還是想了一陣子才有的內容,讓這段留言顯得彌足珍貴 :)

我使用 Drupal 的經驗還沒有到那麼豐富,主要的優點可能是,我會盡量以「一般人看得懂,但又不是把大家當完全不懂的人」的心態來寫文章,雖然也常常會有無法達到這個目的的時候,不過我的確是有盡量在注意我寫的文章內容的「普及性」。

就 CMS (Drupal 就是一個 CMS 的實作)來說,所有在 Internet 上的網站,都可以算是 CMS 的一種呈現,所以呢,Drupal 可以做到的事,遠比我們想像中的廣一些。不過你提到的這五類(portal, blog, photo, forum, e-commerce)則是目前最熱門的 :)

我想來想去,就一直不覺得現在我有什麼值得寫下來,對你(對更多人當然是更好)有直接幫助的,所以我決定把你的問題丟到你所說的 DTW(是指 DrupalTaiwan 是嗎?),讓更多人參與這個議題,最後再統整起來,說不定會有讓人很滿意的觀點出來 :)

http://drupaltaiwan.org/forum/20081110/2768

YES!
感謝你的回復,期待這個話題可以有個圓滿的總結,以幫助我們這些渴望學習并深究DRUPAL的入門學生。
多謝啊!
我會經常來你的網站學習的,希望您能經常寫些東西,相信很多像我一樣的瀏覽者、朋友會很期待你的文章。
PS:
DTW就是指drupaltaiwan.org

sun

我看了很多相關資料,還是做不到<安裝Thumbview Field >的一步

始終就是卡住了>~<

那個Thumbview Field 下載了後,只有一個 thumbview_field <<沒副檔名的>>

那我在後面加上.module又不行 ><
直接上載又不行 ><

到底是我解壓縮有問題嗎??

==========================================================
我想用你這個模組來實現
每個drupal站的會員的部落格的每篇blog都自動做一篇縮圖,通通放在一個頁面上,

這樣能實現嗎?

Anonymous

你可以把抓下來的檔案,副檔名改成 .tar.gz 再試試看喔 :)

sakivan

請問你的最後一個步驟”使用 Views 來只秀出縮圖”及”配合 CSS”,可以詳細說明嗎?

我不斷的爬文,知道"views"相當厲害,可是我卻怎麼學到看不懂

麻煩你說明一下,拜託!拜託!

Anonymous

这个idea很不错, subscribe下, 有机会可以在项目中使用。

哈哈~感覺中了open source的毒越來越深啊...

Post new comment

這個欄位並不會被公開,請放心輸入。
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <blockquote>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options