質問: 別のモジュールからデフォルトのビューテンプレートを上書きするにはどうすればよいですか? drupalはhook_theme()を提供します。しかし、hook_theme_alter()はありますか?フックメニューエントリをオーバーライドする hook_menu_link_alter() のようなものを探していますが、テーマについてです。カスタムテンプレートの1つを探す場所を指定できるように、ビューフックのテーマエントリを変更したいと思います。 viewsインターフェイスを介して指定することに興味はありません。テーマフォルダー内のテーマテンプレートを探し、テンプレートを機能モジュールに追加したいからです。 hook_theme_registry_alter() および _theme_process_registry() が見つかりました。どちらを使用するのが最適で、その理由を答えてください。ビューがテンプレートをモジュールからピックアップするようにするには、これらのキーのどれを変更する必要がありますか?機能にviews-data-export-xml-header--richard-feeds-nokia-movies--views-data-export-1を配置すると、ビューはデフォルトでviews-data-export-xml-headerを選択します。 tpl.php。そのテンプレートをテーマレイヤーに配置すると、ビューはそれを取得します(レジストリのalterフックが配置されている場合でも)。
回答: 機能はhook_theme_registry_alter()を実装する必要があります。あなたが説明するユースケースはまさにそのフックの目的です。 apiページにリンクされているサンプルコードから始めることができます。基本的な考え方は、views_theme()がレジストリに挿入しているエントリに対応するエントリをターゲットにし、テンプレートを変更して機能内のものと一致させることです。