WIKI使用導(dǎo)航
站長百科導(dǎo)航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計算
- 微博營銷
- 虛擬主機管理系統(tǒng)
- 開放平臺
- WIKI程序與應(yīng)用
- 美國十大主機
Drupal-hook nodeapi
來自站長百科
導(dǎo)航:上一頁
下面內(nèi)容基于版本drupal 6.
Nodeapi是一個非常有用的hook,它能夠讓你為一個節(jié)點加載額外的信息,在節(jié)點內(nèi)容被渲染前為其添加額外的元素。在不同的操作上(更新、刪除、插入等)執(zhí)行額外的任務(wù)。
格式:hook_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL)
在其他模塊內(nèi)定義,對節(jié)點施于任務(wù)。
實例:(選自Drupal愛好者) 當(dāng)前有一個需求,就是在每個node的下面添加一個“最近流行”的一個內(nèi)容。如下圖1:
這個肯定就是涉及drupal函數(shù)hook_nodeapi的應(yīng)用了。我第一開始想的比較簡單了,就是節(jié)點load的時候直接在$node->body下面添加內(nèi)容
第一次代碼如下:
function popularterms_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) { switch ($op) { case 'load': $node->body = $node->body.popularterms_html_content(); //popularterms_html_content()函數(shù)就是“最近流行”里面顯示的內(nèi)容 break; } }
這樣加上以后,每個節(jié)點顯示的時候的確也是在節(jié)點下面顯示了“最近流行”的內(nèi)容.但是,當(dāng)編輯這個節(jié)點的時候,這個“最近流行”的內(nèi)容也出現(xiàn)在了內(nèi)容添加的編輯器里。
這樣的話只使用$op為load肯定是不行了,那就用$op為view試試。于是換成如下代碼。
function popularterms_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) { switch ($op) { case 'load': $node->popularterms_html_content = popularterms_html_content(); ////popularterms_html_content()函數(shù)就是“最近流行”里面顯示的內(nèi)容 break; case 'view': $node->content['body']['#value'] = $node->content['body']['#value'].$node->popularterms_html_content; break; } }
這樣“最近流行”的內(nèi)容就正常顯示到了node節(jié)點的最下面了。并且在編輯節(jié)點的時候不會出現(xiàn)“最近流行”的內(nèi)容。
從上面的實例中可以得到如下幾個結(jié)論.
- drupal函數(shù)hook_nodeapi的$op為load的時候,是可以向node節(jié)點添加內(nèi)容的時候,比如$node->popularterms_html_content = popularterms_html_content();,就是在node節(jié)點上添加了$node->popularterms_html_content 。
- 節(jié)點顯示的內(nèi)容是$node->content['body']['#value']里面的內(nèi)容,而不是$node->body里面的內(nèi)容。
- drupal函數(shù)hook_nodeapi的$op為load的時候,你可以添加新的節(jié)點屬性,也可以操縱原來的節(jié)點屬性。
但是當(dāng)$op為view,就只是節(jié)點的顯示了。