使用Drupal 7中的hook_init在特定页面上加载内容

时间:2014-02-12 15:41:56

标签: drupal drupal-7

我在模块中有hook_init,只需要在特定页面上执行。 目前,每个页面加载都会执行hook_init

问题:

  1. hook_init正确的继续进行方式吗?
  2. 如果不是使用我的自定义模块执行页面特定操作的正确选项?
  3. 使用hook_init然后验证网页的网址。根据比赛我可以执行我的条件吗?

1 个答案:

答案 0 :(得分:0)

我尽量避免使用hook_init或boot。 这些钩子在所有页面上执行,对我来说,即使是路径掩码匹配也是一种性能上的痛苦。

如果要将java脚本或css添加到页面,使用hook_init或boot是错误的。 hook_init不在缓存页面上执行。要添加资产,请实现hook_page_build并使用#attached属性添加它们。

要初始化模板中可用的变量,请实现预处理挂钩。

我不是说hook_init很糟糕。许多模块使用该钩子添加其资产。但是从Drupal 7开始,几乎所有东西都是可渲染的数组,并且可以被修改,直到它达到最后阶段,你可以改变,调整变量等。