web-dev-qa-db-ja.com

Devel Themerを使用せずにページのすべてのテンプレート提案を表示する方法は?

何らかの理由で テーマ開発者 モジュールが私のサイトで機能しません(これをアクティブ化して自分のサイトで移動するたびに、「メインコンテンツにジャンプ」と書かれた白いページが表示されるだけです)。知りたいのは、現在のページのレンダリングに使用されているTPLファイルです。

_preprocess_html_または_preprocess_page_関数(または重要な他の前処理関数)にprint_r($variables["theme_hook_suggestions"]);を置くと、_html.tpl.php_および_page.tpl.php_ファイルをそれぞれ使用しますが、実際に深く調べて、現在のページをレンダリングするためにチェックされているすべてのテンプレート候補を確認する必要があります。

テーマ開発者 モジュールを使用せずにこれを行う方法はありますか?

3
valepu

関数/テンプレート固有のフックに加えて、 hook_preprocess() もあります。

このフックにより、モジュールはテーマテンプレートのテーマ変数を前処理できます。テンプレートとして実装されたすべてのテーマフックに対して呼び出されますが、関数として実装されたテーマフックに対しては呼び出されません。

それをDevelモジュールのdpm()関数と組み合わせると、必要なものが得られます。

function MYTHEME_preprocess(&$vars, $hook) {
  if (!empty($vars['theme_hook_suggestions'])) {
    dpm(t('Hook - @hook', array('@hook' => $hook)));
    dpm($vars['theme_hook_suggestions']);
  }
}
3
Clive

これをsettings.phpに置くことができます$ conf ['theme_debug'] = true;

これにより、ページにHTMLコメントが出力され、テーマの提案がどのように選択されているかをデバッグするのに役立ちます。

10
Mamadou