Drupal6:在theme_preprocess_page(& $ vars)中,$ vars来自哪里? (如何操纵面包屑)

时间:2009-09-10 02:04:29

标签: drupal-6 themes breadcrumbs

我想在只有一个条目(“主页”)时删除面包屑。我在我的主题theme_preprocess_page(&$vars)功能中。 $ vars ['breadcrumb']可用,但它只是HTML。使用起来有点笨拙。我宁愿把它作为面包屑列表中的一系列项目来做,并做这样的事情:

if (count($breadcrumb) == 1) {
    unset($breadcrumb);
}

$vars来自哪里?如何覆盖最初创建它的代码?

1 个答案:

答案 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 outputSetting up variables for use in a template (preprocess functions)