drupal函数hook_nodeapi的一次深入…

当前有一个需求,就是在每个node的下面添加一个“最近流行”的一个内容。
如下图1:

hook_nodeapi

这个肯定就是涉及drupal函数hook_nodeapi的应用了。
我第一开始想的比较简单了,就是节点load的时候直接在$node->body下面添加内容

第一次代码如下:
function popularterms_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
  switch ($op) {
   case 'load':
 
    $node->body =  $node->body.popularterms_html_content();
    //popularterms_html_content()函数就是“最近流行”里面显示的内容
    break;
  }

}
这样加上以后,每个节点显示的时候的确也是在节点下面显示了“最近流行”的内容

但是,当编辑这个节点的时候,这个“最近流行”的内容也出现在了内容添加的编辑器里。

图2如下:

hook_nodeapi

这样的话只使用$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()函数就是“最近流行”里面显示的内容
    break;

    case 'view':
      $node->content['body']['#value'] = $node->content['body']['#value'].$node->popularterms_html_content;
     break;
  }

}
这样“最近流行”的内容就正常显示到了node节点的最下面了。并且在编辑节点的时候不会出现“最近流行”的内容。

从上面的实例中可以得到如下几个结论

1、drupal函数hook_nodeapi的$op为load的时候,是可以向node节点添加内容的时候,比如$node->popularterms_html_content = popularterms_html_content();,就是在node节点上添加了
$node->popularterms_html_content 。

2、节点显示的内容是$node->content['body']['#value']里面的内容,而不是$node->body里面的内容。

3、drupal函数hook_nodeapi的$op为load的时候,你可以添加新的节点属性,也可以操纵原来的节点属性。

但是当$op为view,就只是节点的显示了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值