久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Drupal-hook nodeapi

來自站長百科
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

導(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:

Drupalnodeapi.jpg

這個肯定就是涉及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é)論.

  1. drupal函數(shù)hook_nodeapi的$op為load的時候,是可以向node節(jié)點添加內(nèi)容的時候,比如$node->popularterms_html_content = popularterms_html_content();,就是在node節(jié)點上添加了$node->popularterms_html_content 。
  2. 節(jié)點顯示的內(nèi)容是$node->content['body']['#value']里面的內(nèi)容,而不是$node->body里面的內(nèi)容。
  3. drupal函數(shù)hook_nodeapi的$op為load的時候,你可以添加新的節(jié)點屬性,也可以操縱原來的節(jié)點屬性。

但是當(dāng)$op為view,就只是節(jié)點的顯示了。

參考資料[ ]