【问题标题】:Drupal 6 - hook theme_preprocess(&$vars, $hook) is called many timesDrupal 6 - hook theme_preprocess(&$vars, $hook) 被多次调用
【发布时间】:2014-04-02 08:07:14
【问题描述】:

由于某种原因,每次我刷新页面时都会多次调用此函数,因此会多次渲染页面。这会导致加载时间过长(该函数包括对 DB 的调用),我怎样才能将对该函数的调用减少到最低限度? 谢谢。

【问题讨论】:

  • Drupal 中的钩子函数被多次调用是正常的——这就是系统工作的方式。要么找到一个更具体的钩子,要么查看传递给它的参数,使其仅在需要时执行某事(对所有其他调用不执行任何操作)。
  • 好的,那么我可以使用哪个钩子来设置模板变量一次?坦克
  • 发现该钩子被其他钩子无故调用,导致函数不必要的运行。我找到的解决方案是使用与以前相同的钩子,但在开始时检查谁是调用钩子 - if ($hook == "block" || $hook == "views_view_fields" || $hook == " views_view_unformatted" || $hook == "views_view" || $hook == "lead_form" || $hook == "page")) { return; }

标签: php drupal drupal-6 drupal-theming


【解决方案1】:

template_preprocess 为每个模板调用。通过使用更具体的挂钩来限制调用次数,例如template_preprocess_pagetemplate_preprocess_nodetemplate_preprocess_block

【讨论】:

    猜你喜欢
    • 2020-03-10
    • 2020-08-18
    • 2022-06-12
    • 2022-12-21
    • 1970-01-01
    • 2014-03-22
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多