我为Drupal 7编写了一个模块。它必须在一个函数中获得当前的$node
变量,例如hook_init()
或类似的,此变量应该可以从另一个函数访问。我找到了关于node_load(arg(1))
的讨论,解决方案的作者说,由于缓存,性能不受关注。
那么,我是否应该在每个函数中调用node_load()
我不必担心性能问题是否有其他方法在模块函数之间传递变量?
更确切地说:我已经在具有某些节点类型的页面上放置了带模块的块,并且在hook_block_view函数中我需要访问当前节点对象。到目前为止,我成功使用了node_load。但也许有更好的方法。
提前致谢!
答案 0 :(得分:0)
在drupal 7 node_load()
调用entity_load()
,它会缓存结果,因此如果您调用node_load()
两次,它将从缓存中返回。
使用node_load()
比在模块之间传递全局变量更好,特别是如果您使用某些第三方缓存模块(APC,memcached或其他)。如果您关心性能,请尝试使用其中一个模块(我更喜欢memcached)。