Drupal6:theme_preprocess_page(& $ vars)では、$ varsはどこから来たのですか? (パンくずリストの操作方法)
-
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">テンプレートで使用する変数の設定(前処理関数)。