新增小貼紙

Nov 15 2006

drupal

修改了一下這個版型的 node.tpl.php,給每一篇文章的底部加上了個小貼紙,這樣一來,有需要的人,或是支持這個小地方的,可以透過小貼紙,方便你把它給加到你常用的 web2.0 的 list 裏頭。目前放了四個 web2.0 的小貼紙,分別是 HEMiDEMiHEMiDEMi sticker, del.icio.usdel.icio.us sticker, diggdigg stickerTechnoratiTechnorati sticker

這四個 web2.0 的服務,都是讓你方便把常去的網站,或是在網路上看到一個不錯的網頁,透過這些服務,登入到裏頭。一來,可以做為你私人的「網路書籤」,二來,可以推薦給更多人知道,本著所謂「好東西與好朋友分享」的精神,也順道看看別人對於你推薦的網頁有什麼看法,再者,可以幫你推薦的網頁打個小廣告什麼的。

舉個例子,我在 del.icio.us 裏頭的書籤的聯結,裏頭我整理了不少與 3D 動畫相關的,當然還有一些像是 Linux 的啦,Apple 的 MacBook 啦(好吧,我承認,我真的很想要一台 MacBook Pro,不過好貴呀)之類的。然後我也在 HEMiDEMi 註冊了一個帳號

目的:

在你的每一篇文章(node,ex, blog)的最下頭,加上現在 web2.0 很流行的小貼紙。

必要條件:

  • Drupal 4.7
  • 使用 phptemplate 的 theme
  • 懂一點點 php

作法:

  1. 修改你安裝的 theme 裏頭的 node.tpl.php
  2. 決定你想把小貼紙放在哪,我是把它放在文章的最末端(links 的前頭)
  3. 我決定加上 hemidemi, del.icio.us, digg 和 technorati 等的小貼紙,然後就前往各家 social bookmarks service 的官網,找到他們加小貼紙的 url。
  4. 新增一個 stickers 的 css class 在你的 style.css。
  5. 加上如下的程式碼就搞定了 :) (其中的 div=“stickers” 這一段就是我加上去的)

in node.tpl.php

Bookmark to HEMiDEMi Keep this in Del.icio.us Digg it! Add to Technorati Favorites

in style.css

.stickers { text-align: right; }

in template.php
在 ooxx_node() 這個 function 裏頭(ooxx 代表你用的 theme 的名字),新增了一個 full_url 的變數給 theme,記得要加個 global $base_url; 在 ooxx_node() 的開頭,不然無法存取到。

'full_url' => $base_url . url('node/'. $node->nid),

心得:

  1. 使用了很直接的方法來得到 full_url,如果直接拿 node_url 這個變數的話,會得到相對路徑,這在站內的聯結是 ok 的,但要給別人時就不行了。
  2. 我在想,好像改寫 theme_node 這個 function 時,可以 ooxx_node 也可以 phptemplate_node,還不是很清楚差別,即使看了官方的文件也還是搞不清楚。
  3. drupal 官方的 handbook 雖然有很多寶,但有找東西還真是有點麻煩,尤其有時還得看完落落長的 comments 才會比較知道比較好的作法時,就覺得有點累人了~
  4. 有不少貼紙的參數都不曉得要給啥值,像是 tag, description, topic…

參考資料:

最後,我也在 tw-drupal(現在改叫 Drupal Taiwan 了),一個推廣 Drupal 這套 CMS 的台灣社群裏頭,放了這篇。

PS. 後來,我發現,原來 Drupal 有個叫 Service links 的 module,做的事就是加小貼紙…

comments powered by Disqus