我在寻找的是page_id/view_id,我可以用它来识别和设置特定页面。我会使用标题或网址,但如果高层决定不应再将页面称为高尔夫球,而有可能改变它,但是因为他更喜欢它,所以它可能会改变。如何得到Drupal的当前视图/页面标识符?
如果当前页面是分页视图(页面1,2,3,4 ...),那么这个标识符可能不会改变。
我在寻找的是page_id/view_id,我可以用它来识别和设置特定页面。我会使用标题或网址,但如果高层决定不应再将页面称为高尔夫球,而有可能改变它,但是因为他更喜欢它,所以它可能会改变。如何得到Drupal的当前视图/页面标识符?
如果当前页面是分页视图(页面1,2,3,4 ...),那么这个标识符可能不会改变。
解决这个问题的方法如下。这取决于url,所以如果它改变了,那么类名也是如此。
在我的主题我的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; ?>">
这不是一个通用的解决方案。因此,您可能必须根据您的特定需求进行自定义。它会例如需要调整以适应路径自动。
这取决于你的网站如何放在一起(面板页面,查看页面,“普通”页面)。从本质上讲,你需要弄清楚范围内的变量,然后确定可以使用哪些变量。要确定范围内的内容,您可以使用print_r(array_keys(get_defined_vars()));
,然后在各个变量中戳一下。
一个选项是在theme_preprocess_page
中做些事情。其中一种方法是通过page_manager_get_current_page()
获取页面数据,并在其中徘徊,然后根据需要添加主体类。不知道你在做什么,你基本上需要在某个地方的结果,看看你有什么,并从那里去。
我最终做了类似的事情,谢谢! – SeanJA 2010-11-11 05:08:56