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

StackOverflow https://stackoverflow.com/questions/1403048

  •  05-07-2019
  •  | 
  •  

我想在只有一个条目(“Home”)时删除面包屑。我在我的主题的 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_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主题覆盖和预处理功能,请参阅关于覆盖可输出的输出和< a href =“http://drupal.org/node/223430”rel =“nofollow noreferrer”>设置用于模板的变量(预处理函数)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top