Drupal6:theme_preprocess_page(& $ vars)では、$ varsはどこから来たのですか? (パンくずリストの操作方法)

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

  •  05-07-2019
  •  | 
  •  

質問

パンくずリストが1つのエントリ(" 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