テーマではなくモジュールでビューテンプレートを保存する方法


13

現在、アクティブなテーマディレクトリに格納されているいくつかのビューテンプレートを作成しました。これらのテンプレートは、私のモジュールディレクトリに保存することをお勧めします。

私の質問は、これらのテーマファイル(views-view-field.tpl.phpなど)をモジュールディレクトリに持ち込んで、Viewsに表示させるにはどうすればよいですか?

Viewsモジュールを見ると、デフォルトのテンプレートがビュー/テーマに保存されていることがわかりますが、どのように実装されているかわかりません。

回答:


29

これも理解するのに時間がかかりました。次のコードを.moduleファイルに配置する必要があります(コードは、モジュールが「NAME」と呼ばれることを前提としています)

/**
* Implements hook_views_api().
*
* Enabling using templates inside module
*/
function NAME_views_api() {
  return array(
    'api' => 3,
    'path' => drupal_get_path('module', 'NAME'),
    'template path' => drupal_get_path('module', 'NAME'),
  );
}

これにより、Viewsはモジュールのルートディレクトリを検索します。私は個人的に、テンプレートファイルを保持するためにモジュールにサブディレクトリを追加するのが好きです。これを行うには、ディレクトリ名をテンプレートパスの最後に追加します。例:

'template path' => drupal_get_path('module', 'NAME') . '/templates',

それらをサブディレクトリに追加するのは素晴らしいアイデアであり、物事を整理して完全に機能します。将来の検索者は、Drupalキャッシュをクリアすることを確認します。ありがとう@Reekan Mantell
Citricguy

ありがとうございました!私は、7つのビューフィールドをオーバーライドするためだけに、数か月間、管理テーマをハッキングしてきました。今、私はする必要はありません。
JM01

また、このコードを実装していても、テーマにTPLを配置できることを言わなければなりません。ありがとう。
-anou

2
これは、Featuresモジュールでは機能しません。代わりに、次のように使用hook_views_api_alter()してください:deeson.co.uk/labs/views-templates-features-module
Aubrey Robertson

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.