Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Drupal7中使用hook_init加载特定页面上的内容_Drupal_Drupal 7 - Fatal编程技术网

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

在Drupal7中使用hook_init加载特定页面上的内容,drupal,drupal-7,Drupal,Drupal 7,我在一个模块中有一个hook\u init,它只需要在特定页面上执行。 目前,每次页面加载都会执行hook_init 问题: hook\u init是正确的继续方式吗 如果不是,使用自定义模块执行页面特定操作的正确选项是什么 使用hook_init,然后验证页面的URL。根据比赛情况,我可以执行我的状态吗 我会尽可能避免使用hook_init或boot。 这些钩子会在所有页面上执行,对我来说,即使是路径掩码匹配也会影响性能 如果要将java脚本或css添加到页面,则使用hook_init或boo

我在一个模块中有一个
hook\u init
,它只需要在特定页面上执行。 目前,每次页面加载都会执行
hook_init

问题:

  • hook\u init
    是正确的继续方式吗
  • 如果不是,使用自定义模块执行页面特定操作的正确选项是什么
  • 使用
    hook_init
    ,然后验证页面的URL。根据比赛情况,我可以执行我的状态吗

  • 我会尽可能避免使用hook_init或boot。 这些钩子会在所有页面上执行,对我来说,即使是路径掩码匹配也会影响性能

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

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


    我不是说hook_init不好。许多模块使用这个钩子添加它们的资产。但是自从Drupal 7以来,几乎所有的东西都是可渲染的数组,可以修改,直到最后一个阶段,您可以修改、调整变量等等。

    您想用这个钩子做什么?Hook init用于在呈现页面之前定义变量和加载样式或脚本。您可以使用drupal\u get\u path\u别名按url进行过滤:在我的例子中,我使用它来定义和初始化稍后在页面中使用的变量。所以我应该继续使用hook_init和drupal_get_path_alias?是的,记住hook_init不会在缓存页面中运行。如果你的站点有缓存页面,你应该使用hook_引导,但我不建议这样做,只需快速阅读hook_引导。是的,如果我理解正确的话,这个页面既有缓存版本也有未缓存版本。但是我可以从hook\u boot中调用drupal\u get\u path\u别名吗?谢谢你提供的信息。我将研究hook_预处理。但需要明确的是,我的模块只是根据某些条件执行操作,结果被分配给页面加载后要使用的变量。