当它只是一个条目(“主页”)时,我想删除面包屑。我在我的主题的theme_preprocess_page(&$vars)
功能。$vars['breadcrumb'] 可用,但它只是 HTML。这有点笨拙。我宁愿将它作为面包屑列表中的一组项目,并执行以下操作:
if (count($breadcrumb) == 1) {
unset($breadcrumb);
}
从哪里来$vars
?如何覆盖最初创建它的代码?
当它只是一个条目(“主页”)时,我想删除面包屑。我在我的主题的theme_preprocess_page(&$vars)
功能。$vars['breadcrumb'] 可用,但它只是 HTML。这有点笨拙。我宁愿将它作为面包屑列表中的一组项目,并执行以下操作:
if (count($breadcrumb) == 1) {
unset($breadcrumb);
}
从哪里来$vars
?如何覆盖最初创建它的代码?
$vars 数组在所有预处理函数之间传递。对于 _preprocess_page 函数,$vars 中的大部分值都是在 template_preprocess_page 中创建的(参见http://api.drupal.org/api/function/template_preprocess_page/6)。在该函数中,您将看到:
$variables['breadcrumb'] = theme('breadcrumb', drupal_get_breadcrumb());
在这里,drupal_get_breadcrumb 返回一个面包屑元素数组,然后由 theme_breadcrumb() 函数(或其覆盖)进行主题化。
获得所需内容的最简单方法是覆盖 theme_breadcrumb 函数。为此,您使用原始的 theme_breadcrumb 函数(http://api.drupal.org/api/function/theme_breadcrumb/6),将其复制到您的 template.php 中,将函数名称中的“主题”替换为您的主题并更改代码,使其看起来像这样:
function THEMENAME_breadcrumb($breadcrumb) {
if (count($breadcrumb) > 1) { // This was: if (!empty($breadcrumb))
return '<div class="breadcrumb">'. implode(' » ', $breadcrumb) .'</div>';
}
}
要更好地理解 Drupal 主题覆盖和预处理函数,请参阅关于覆盖主题输出和设置用于模板的变量(预处理函数)。