0

drupal 版本是 6。只是想知道那些 $body_classes 是从哪里形成的。

我知道在 template_preprocess_page 中,有一个名为“body_classes”的变量。

但我的问题是,并非所有 body_classes 都来自预处理页面。

例如:

我有一个名为“活动和景点”的术语,然后在我的 page.tpl.php 中,我的标签中有一个类“页面活动和景点”。看起来分类模块生成了一个body_class,但我可以在搜索分类模块的源代码后找到它。

4

1 回答 1

2

模块(例如分类)通常不会覆盖页面模板变量。尽管可以通过在 hook_theme_registry_alter() 中提供自定义预处理函数来完成。(例如见上下文模块

'page-activities-and-attractions' 类很可能来自第 1894 行 include/theme.inc 中的 template_preprocess_page()

$body_classes[] = preg_replace('![^abcdefghijklmnopqrstuvwxyz0-9-_]+!s', '', 'page-'. form_clean_id(drupal_strtolower(arg(0))));

这为 drupal 路径的第一部分添加了一个 body 类。
例如,路径“node/1”将具有主体类“page-node”,路径“taxonomy/term/1”将具有主体类“page-taxonomy”。

如果您有一个路径“活动和景点”(可能来自视图的页面显示?),那么您将获得一个主体类“页面活动和景点”。

注意:这使用内部 Drupal 路径而不是 url 别名。别名“content/mypage”在内部可能实际上是“node/12”,因此主体类将是“page-node”而不是“page-content”。

于 2010-04-29T18:59:55.427 回答