这听起来像是一个执行顺序问题。查看menu_breadcrumb
模块,它在 上进行操作hook_init
,而 views 模块drupal_set_title
在 的 execute 方法中调用它views_plugin_display_page
,这发生在稍后阶段。在这种情况下,操作模块权重并没有帮助,因为权重仅确定每个 hook的调用/执行顺序,但它们不会影响整个模块的执行顺序。(换句话说,“较重”的模块hook_init
将在hook_init
较轻的模块之后被调用,但仍然在例如hook_nodeapi
较轻的模块之前。)
正如您所说,这在另一个站点上有效,我感到有些惊讶-可能是drupal_set_title
视图的调用在以后的版本中被移动了,但我对此表示怀疑,因为我记得大约一年前就面临过这个问题。也许menu_breadcrumb
模块改变了?
但是,我当时通过将面包屑操作从 移动hook_init
到somemodule_preprocess_page()
,直接在那里调整$variables['breadcrumb']
而不是调用来“解决”了这个问题drupal_set_breadcrumb
。这不是最佳选择,因为它禁用了在页面主题化之前可能发生的任何其他面包屑操作,但如果您知道您总是想要您的面包屑,这可能是一个优势。
作为替代方案,可以在面包屑操作模块中实现其中一个视图挂钩,例如hook_views_pre_render
并检查标题是否已经设置在那里。