3

drupalのhook_theme()を使用してテンプレートファイルをロードするための非常に単純なモジュールを取得しようとしています。それはあなたがおそらく想像できるのと同じくらい簡単です。

function sectionheader_theme ( $existing, $type, $theme, $path ) {
  return array(
    'sectionheader' => array(
      'variables' => array( 'foo' => NULL ),
      'template' => 'sectionheader',
    ),
  );
}

テンプレートの名前はsectionheader.tpl.phpです。モジュールの残りの部分は期待どおりに機能しています。Drupalキャッシュをクリアしました。この関数にdie( "Debug")ステートメントを挿入し、実行してますが、テンプレートが呼び出されていません。テンプレートにはデバッグテキストが含まれているだけなので、テンプレートが機能していることがわかりますが、モジュールのどのビューにも表示されません。

私は見つけることができるすべての例ですべてを行いました。他のモジュールから直接コードをコピーして貼り付けたのですが、このテンプレートはまだ読み込まれません。

4

3 に答える 3

5

テンプレート ファイルをモジュール dir の /theme サブフォルダーに配置した場合 (これがベスト プラクティスです)、hook_theme でファイル パスも指定する必要があります。

function example_theme($existing, $type, $theme, $path) {
  return array(
    'example_function' => array(
      'variables' => array('var1' => array(), 'var2' => array(), 'var3' => array()),
      'template' => 'example-template',
      'path' => drupal_get_path('module', 'example').'/theme'
    ), 
  );  
}
于 2011-10-28T09:51:09.913 に答える
0

上記のコメントで述べたように、私は同じ問題にぶつかりました。開発モジュールではすべてが正常に機能していましたが、このモジュールを新しいモジュールにコピーしただけで、本番モジュールになり、テンプレートファイルは機能しなくなりました。私は運がなくて上記のすべてを試しました。元のモジュールは無効になり、新しいモジュールのみが有効になりました。

元のモジュールのテーマが機能するかどうかを確認するために戻ったのですが、機能しませんでした。うーん。

テーマの名前を変更すると、突然機能し始めました。テンプレートファイルが見つかり、表示されました。

したがって、テーマ名を登録するモジュールは、無効になっている場合でも、テーマを登録しているように見えます。また、テーマ名はシステム全体で一意である必要があるようです。

回答:他のモジュールで宣言されている同じテーマ名を探してください

于 2012-07-15T03:50:00.230 に答える