[inmediahk] use of views argument: 作者最新文章

這也是一個少見的要求,
但也相當合理
便是要在node 頁面(node/[nid])的右面欄加一個block, 用作顯示這個node 作者的其他文章
一個多用戶參與寫作的網站便很需要用這些block 來列表特定用戶的文章

這個當然不可能給每一個用戶都做一個views
用戶數是有三萬以上的...
正解也簡單, 始終是views

我想views 的 argument 一開始的理念就是由這類的網站需求帶動的
由url 路徑作參考, 修改views 的過濾器
但這次的url 是node/[nid], 並沒有uid 的資料, 所以還是要花點功夫在php 上
在argument type, 以 user UID is author
然後我們就可以想辦法將uid 傳給views
我們只有NID 可以使用,
便唯有將整個node 用node_load()
再從中抽出UID

argument handling code

if ($view->build_type == 'block' && arg(0) == 'node' && is_numeric(arg(1))) {
  $node=node_load(arg(1));
  $args[0] = $node->uid;
}
return $args;

[inmediahk]全站RSS, 包括 views, nodes.....

全站所有頁面的RSS 其實並不是什麼特別的功能,
views 使用 argument RSS, display all values 已經可以提供該views 的RSS 了
只細心設定, 全站RSS 只是小事一樁
但這對一個新聞性, 互動性高的網站應該很重要吧

但我在檢查RSS 的時候,
發覺node 頁面是不提供RSS 的
即是說, 大家不可以使用RSS 的方式訂閱node 的留言, 回應
所以便使用了comment RSS 模組了
順利提供一個node 的comment 的RSS

[inmediahk] block 標題使用html, 特別的 'more' 連結

大家可能經常遇到一個問題, 就是想使用一個帶有html 的block title
我也看見過其他人在論壇上討論過, 得出使用一個module 的解答

但便用了另一個方法, 給大家參考
因為這次要將首頁右邊的一些block 的title 連到一些頁面
而它們都是使用views 的
很自然便使用views 的"標題" 功能, html 輸出
但我發覺一個小妙用
就是將標題用 包起, 放在在views 的 block header 中, 選用full html
這樣就連CSS 都不用改, 原生已經變成block title 使用的樣式了

還有一點要留意, 用這個方法的話,
empty text 是不會輸出title 的
所以, empty text 也要使用 加標題

這個方法的還有一個延伸應用
就是block 底的 "more" 連結
同樣, views 的footer 使用 便可以使用任何自定義的連結
而獨立媒體的行動日誌便是使用了這個方法
令一個views 的block 連到另一個 views 的頁面的

[inmediahk] content type 自動 taxonomy link

要實現的功能是 "自動放一個內容類型連結"
例如一個"專欄文章"的node, 便放一個連結到頁尾, 可以連結到"專欄文章列表"
"站外連結"node 便連到"站外連結列表"
難度在於"自動"的一部份
因為taxonomy 是用戶選的
連內建的forum 也需要用戶選擇正確的分類
所以連結不難, 但"自動化"便難

原本打算使用taxonomy, 再自己hack 一下form api, 讓它自動成為某一taxonomy
但後來用了一個更好, 更方便, 但沒有那麼直觀的方法
便是用views 的argument, 配合themes

首先在node.tpl.php內, 找出node 的type
但 $node->type 只有一個machine readable 的類型名字
連node_load() 也只有 一個英文的類型名字
番了api, node_get_types('name',$node) 才是正確得出內容類型名字的函數

而連結的地址是一個views (content_type/[node-type])
例如"專欄文章"便連到content_type/column
"站外連結"便是content_type/external_links
[node-type] 可以用 $node->type 找到
先建立一個views頁面, url 為 content_type
再在views 的 argument 內加上Node type
而其他的顯示設定和一般的taxonomy
便得到一個"偽"taxonomy link 了

又一次見證views 的強大
這個方法雖然沒有原生一個taxonomy
但同樣做到taxonomy 做的東西

香港獨立媒體專案

香港獨立媒體 http://www.inmediahk.net

這次的job 是幫香港獨立媒體的網頁由舊有的openACS 轉到 Drupal
而香港獨立媒體是因為參照台灣的苦勞網而決定使用Drupal
經由苦勞的jimmy 大 而找到我
所以要先感謝jimmy 大的推薦, 和苦勞網借出全站source code 參考
特此鳴謝

content access
advertisement
cck
javascript tools
js calendar
BUEditor
comment rss
date api
Google analytics
Google sitemap
logintoboggan
mailout
related links
Captcha
Tagadelic
JQuery interface library
Message effects
calendar
views

轉正題, 上列的名單便是Drupal5.7 以外的使用模組名單
數起來不算太多
因為花了很多心思在"使用輕使", "最大化各模組功能" 的原則上
所以panels 都沒有使用
Drupal 5.7 core 也完全沒有修過
core 中的user.module 因為要增加搜尋用戶email 的功能, 使用了patch: http://drupal.org/node/113983
各附加的模組中, 修改了calendar 1.7 的一個bug
其餘都是css, theme 和"最大化模組功能"的結果

首頁完全使用自定義regions 作客製
將page.tpl.php 分為page-is-front.tpl.php 和 page-normal.tpl.php
分開兩組regions 放不同的block
首頁右欄的regions 因為不同於一般頁面, 所以特別定制了 page-is-front.tpl.php
放特別的regions 以顯示首頁專用的 block.

Pages

Google