2

ブレッドクラムが 1 つのエントリ (「ホーム」) の場合は、ブレッドクラムを削除したいと考えています。私は自分のテーマのtheme_preprocess_page(&$vars)機能にいます。$vars['breadcrumb'] が利用可能ですが、それは単なる HTML です。これは、操作が少し面倒です。パンくずリストの項目の配列として取得し、次のようにします。

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

どこ$varsから来たの?最初に作成したコードをオーバーライドするにはどうすればよいですか?

4

1 に答える 1

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 テーマのオーバーライドと前処理関数の理解を深めるには、テーマ設定可能な出力のオーバーライドについてテンプレートで使用する変数の設定 (前処理関数) を参照してください。

于 2010-01-05T22:48:28.640 に答える