2007-09-16 Microwave Lab(一)

又再消失了兩個星期,
實在是對不起我的讀者..

近來因為在做一單很有趣,
而且之前從沒有做過的類型的網站
而費枕忘餐的, 將工餘的時間都放了上去
連Drupal6 beta1 都還沒有下載
而且工作的過程之中, 更加發覺Drupal 的應用方面的強大

當初看見外國的 New york oberserver 網站
從它的一個 介紹 之中看到它的內部結構的精妙
為之著迷
一直想做一個類似的網站
但一直苦無一個資料性那麼強的網站作為試點
大家都好像一直在做社區性的網站
而忽略了"內容密集"型的

機緣巧合之下, 終於都找到一個資料性比較強網站的作為試點
雖然只是其中一個小的部份需要這麼複雜的結構
但也正好給我一個踏板
先從簡單的作起
而我也很快的接了這一案子

說了這麼久, 還是先介紹網站要求
這是一個大學其中一個實驗室的網站,
但因為實驗室的工作人員, 教授都會教學, 演講
各自有不同的班別
班別之中又有各種功課, 參考資料
全部的資料都會互相關連, 互相參考
工作人員(research staff), 教授(Professors), 班別(course), 功課(homework), lecture notes 等等
都會是一個node, 再用node reference, viewsfield 的型式 加上 argruments
互相控制, 做集合, 整匯
再加上複雜的角式分工
都是Drupal 的強項
所以花了特多的心機時間

因為項目還在功能試驗(functional test) 的階段
很多細節還沒有定下來
所以詳細的教學和各模組的相連關係要留待下一次再詳述
希望大家不要忘了我這個小小的站,
訂一個RSS, 有新的資料就會公告大家的了

Comments

怎麼會忘了JOE呢!

哇!實驗室站點,跟TKY之前做的學術網站有點像喔!
以JOE的能力,挖賽,應該會把學術-社群網站的設計水準推上一個新的頂峰吧!

加油啊!
TKY可是每天都在盯著JOE的RSS看呢!

TKY

對啊,

對啊, 有點像
但會做得更多的
多謝支持~~

我也跟TKY 一樣 每天都在盯著JOE的RSS看

>>TKY可是每天都在盯著JOE的RSS看呢!
哈哈 原來我也跟TKY 一樣
時不時就上來期待 JOE的文章

>>實驗室的工作人員, 教授都會教學, 演講
各自有不同的班別
班別之中又有各種功課, 參考資料
全部的資料都會互相關連, 互相參考

ps. 要是有一個模組能夠設定額外的參數控制 taxonomy 顯示的 列表
跟控制 node的顯示 (使用 _node_load/API)
再加上 node reference, viewsfield 的型式 加上 argruments (應該是 views args吧 ^^)

這樣出來的功能就真的粉給它超級好用囉
^_^

設定額外的參數控制

設定額外的參數控制 taxonomy 顯示的 列表
是什麼意思??我的中文不行..

是這樣子的

是這樣子的
使用 taxonomy_context 模組, 會自動產生各個 vocabulary 的 block
每個 block 等於是該 vocabulary 分類的列表選單
再配合 jtools 模組便能自動生成 AJAX 動態載入的分類選單

只是這樣該 block 連結是 ./taxonomy/term/123
也就是列出 table - term_node 裡頭 tid=123 的 全部 nid 的集合

但是這樣只能列出特定 term 的列表, 例如屬於'英文教材' 分類者
想要進一步縮小列表範圍, 例如列出同時屬如 '英文教材' 而且也是 '進階教材' 分類者
就需要在 tanonomy 顯示列表的時候加上篩選條件
Yelban 就是這個意思

使用 views 作為列表固然可以做出篩選條件
但這樣同時又要做另一個 block 去顯示特定 vocabulary 的分類內容再自己加上到 views 連結
若要加上 AJAX 或其他動態展開的分類列表功能好像麻煩許多
所以才有這樣的想法
直接加上修改 taxonomy 列表顯示的模組
因為 taxonomy 沒有類似 _nodeapi 的 load 等等 hooks
於是想請教 JOE兄有沒有更好的辦法

你的意思是views

你的意思是views 其實可以做到
但用views 做便會做出一個tid 一個views 吧

我的想法是, 如果不用一個views 一個tid,
可以用什麼方法指定你想要的tid 和tid 的組合?

使用views 始終是定義block 的唯一方便又可行的途徑
因為page 和block 是不同的存在義意的

tid+tid views

Views 顯示 tid 組合倒是有辦法
把 terms name 當成參數用逗號「,」隔開傳給 views
在 views Argument 加上解析傳入參數的 php code
切開各個參數後判斷該參數是id(數字)還是name
如果是term's name, 則找出對應該term's name的 tid
再傳回給views

$new_arg0 = '';
$new_args = explode(',', $args[0]);
foreach ($new_args as $this_arg) {
if (is_numeric($this_arg)) {
$new_arg0 .= $new_arg0 == '' ? $this_arg : ','.$this_arg;
} else {
$these_terms = taxonomy_get_term_by_name($this_arg);
foreach ($these_terms as $this_term) {
$new_arg0 .= $new_arg0 == '' ? '' : ',';
$new_arg0 .= _taxonomy_get_tid_from_term($this_term);
}
}
}

這樣可以使用 /myview,engcls,highcls 形式路徑讓 views 顯示特定 tid + tid + tid + ... 組合的結果

只是用來顯示該 views的 menu 選單列表
例如位於頁面左邊的多層分類列表
用 block 形式的 views來顯示兩層列表對 Yelban 來說就困難得多了

所以才想到直接 hack texnonmy modules
又這樣對以後升級會造成困擾
所以才想到用自訂的 module 來做

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <h4> <h3>
  • Lines and paragraphs break automatically.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.

More information about formatting options