我想在只有一个条目(“主页”)时删除面包屑。我在我的主题theme_preprocess_page(&$vars)
功能中。 $ vars ['breadcrumb']可用,但它只是HTML。使用起来有点笨拙。我宁愿把它作为面包屑列表中的一系列项目来做,并做这样的事情:
if (count($breadcrumb) == 1) {
unset($breadcrumb);
}
$vars
来自哪里?如何覆盖最初创建它的代码?
答案 0 :(得分:1)
在所有预处理函数之间传递$ 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_breacrumb返回一个痕迹痕迹元素数组,然后由theme_breadcrumb()函数(或其覆盖)主题化。
获得所需内容的最简单方法是覆盖theme_breadcrumb函数。为此,您可以使用原始的theme_breadcrumb函数(http://api.drupal.org/api/function/theme_breadcrumb/6),将其复制到template.php,将函数名称中的'theme'替换为您的主题名称,并更改代码,使其如下所示:
function THEMENAME_breadcrumb($breadcrumb) {
if (count($breadcrumb) > 1) { // This was: if (!empty($breadcrumb))
return '<div class="breadcrumb">'. implode(' » ', $breadcrumb) .'</div>';
}
}
为了更好地理解Drupal主题覆盖和预处理功能,请参阅About overriding themable output和Setting up variables for use in a template (preprocess functions)。