2
六/09
4

关于drupal区块的小问题



drupal模块开发中经常用到区块的概念,将一些相关数据放到区块中,配合权限验证,将用户能看到的信息以区块的形式展示到用户浏览器中。不过区块是跟节点无关了,如果要根据当前节点页面的特性针对性的在区块中显示内容,我的做法是:

if (arg(0) == ‘node’ && is_numeric(arg(1)) { // 初步设想是仅仅当路径是’ node / 3 ‘,类似这样的地址时显示

  $node = node_load(arg(1));

  if (!$node->teaser) // 初步设想是节点以全节点方式显示的时候才有效(提高一点效率)

}

在调试的过程中发现,arg函数是和drupal内置的path模块无关的。也就是说如果给某个节点设置了path,比如给公司的帮助页面设置了path : www.target.com/help,那么arg(0)我们取到的还是node,而不是help。

另外, $node对象中的teaser属性指的是节点的摘要,而不是“是否以全文的方式显示”,这个跟nodeapi钩子,以及hook_view中的$teaser形式参数是不一样的,后者确确实实指的是“是否以全文的方式显示”,也就是说上面的判断是错误的。


相关文章

关键字:
评论 (4) Trackbacks (0)
  1. anyLiv
    09:54 on 六月 4th, 2009

    路径“node/?/”往往是全文显示,其他通常都是 teaser 模式,能否用于判断?

  2. simsuer
    00:45 on 六月 6th, 2009

    博主,您好。我在drupalchina上看到您发的一些文章,对我帮助很大,能给我留个您的联系方式吗?以后还要多请教。再次感谢您的回复!

  3. terrysco
    15:10 on 六月 17th, 2009

    “关于我”里面有我的联系方式,欢迎交流。

  4. seth
    21:40 on 六月 23rd, 2009

    博主好,看了你的文章,虽然没怎么懂,但也觉得学到了不少。那我想请问一下,也是关于drupal的问题:如果想在drupal的数据层做手脚,也就是在所有node,taxonomy,comment,cck从数据库里取出值的时候,做一个简繁中文的转换(函数已有),不知该怎么做?我看了bootstrap和db_rewrite_sql,最后没想出来……(先不计效率问题)。

    另外,如果要在一个.module文件里取出一个node里所有cck的值和label,不知可以怎么写呢?

    谢谢!

发表评论

No trackbacks yet.