您在這裡

替你的每一篇文章加上小貼紙

drakeguan's 的頭像
drakeguan 在 2006-11-14 (二) 20:07 發表

這是一篇把玩到一半的分享文章,有些內容講得不清不楚,有些地方需要你的補充~~

目的:
在你的每一篇文章(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

<?php if ($links): ?>
<?php if ($picture): ?>

<?php endif; ?>

<?php endif; ?>

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...

參考資料:
Theme developer's guide
PHPTemplate Theme Snippets
Using Theme Override Functions
Themeable functions

附加檔案大小
Image icon drakeguan.org_with_stickers.png222 KB