【问题标题】:Drupal: How to define variables in one module functions and call it from another in Drupal 7Drupal:如何在一个模块函数中定义变量并在 Drupal 7 中从另一个模块函数中调用它
【发布时间】:2011-07-11 16:08:06
【问题描述】:

我为 Drupal 7 编写了一个模块。它必须在一个函数中获取当前的 $node 变量,例如hook_init() 或类似的,并且这个变量应该可以从另一个函数访问。我发现了关于node_load(arg(1)) 的讨论,解决方案的作者说由于缓存,性能不是问题。

那么,我应该在每个函数中调用node_load(),而不必担心性能问题吗?还有其他方法可以在模块函数之间传递变量吗?

更准确地说:我已经在具有特定节点类型的页面上放置了一个带有模块的块,并且在 hook_block_view 函数中我需要访问当前节点对象。到目前为止,我已成功使用 node_load。但也许有更好的方法。

提前致谢!

【问题讨论】:

  • 我认为在每个函数中调用node_load 并不是一个好主意,尤其是从数据库加载节点时。也许如果您发布一些代码并解释您想要实现的目标,您可能会从其他人那里获得更多帮助。
  • 我会尽量准确一点。我已经在具有特定节点类型的页面上放置了一个带有模块的块,并且在 hook_block_view 函数中我需要访问当前节点对象。到目前为止,我已成功使用 node_load。但也许有更好的方法。

标签: drupal-7 drupal-modules


【解决方案1】:

在drupal 7中node_load()调用entity_load(),会缓存结果,所以如果调用node_load()两次,就会从缓存中返回。

使用node_load() 是比在模块之间传递全局变量更好的解决方案,特别是如果您使用一些第三方缓存模块(APC、memcached 或其他)。如果您关心性能,请尝试使用这些模块之一(我更喜欢 memcached)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    相关资源
    最近更新 更多