我正在寻找的是一个page_id / view_id,我可以使用它来识别和设置特定页面的样式。我会使用标题或网址,但如果高层决定该网页不再被称为高尔夫,而是Tee-Time因为他更喜欢它,那么它有可能会改变。
如果当前页面是分页视图(第1,2,3,4页......),大概这个标识符不会改变。
答案 0 :(得分:2)
解决此问题的一种方法如下。它取决于url,所以如果它改变了,那么class-name也是如此。
在我的主题template.php中,我实现了hook_preprocess_page:
function mytheme_preprocess_page(&$vars, $hook) {
$body_classes = array();
$body_classes[] = 'page-' . _get_page_name($_SERVER['REQUEST_URI']);
$vars['body_classes'] = implode(' ', $body_classes);
}
function _get_page_name($request_uri) {
static $numeric_subsection = array(
'/node/' => 'node',
);
$preAlias = $request_uri;
$alias = substr(strrchr($preAlias, "/"), 1);
if (strpos($alias, '?') > -1) {
$alias = substr($alias, 0, strpos($alias, '?'));
}
$page_name = $alias;
if (empty($alias)) {
$page_name = 'start';
}
else if (is_numeric($alias)) {
foreach ($numeric_subsection as $section => $pn) {
if (strpos($preAlias, $section) > -1) {
$page_name = $pn;
}
}
}
return $page_name;
}
然后在主页面模板中:
<body class="<?php print $body_classes; ?>">
这不是通用的解决方案。因此,您可能需要根据您的特定需求进行自定义。例如,它需要som调整才能很好地使用路径自动。
答案 1 :(得分:1)
这取决于您的网站如何组合在一起(面板页面,查看页面,“普通”页面)。实质上,您需要确定范围内的变量,然后确定可以使用哪些变量。要确定范围内的内容,您可以使用print_r(array_keys(get_defined_vars()));
,然后在各个变量中查看。
选项是在theme_preprocess_page
中执行某项操作。一种选择是通过page_manager_get_current_page()
获取页面数据,在那里查看,然后根据需要添加正文类。在不知道你在做什么的情况下,你基本上需要print_r
某处的结果,看看你拥有的是什么,然后从那里开始。