より一般的な質問です。明確にするために。 template.phpファイルで次の方法で前処理関数を使用できます。
function mytheme_preprocess_node(&$vars) {
// Do some stuff
}
しかし、モジュールでノードを前処理する方法はありますか? drupal APIで関数hook_preprocess_node()を検索してきましたが、D7にはそのような関数はありませんが、8を含む他のすべてのバージョンのdrupalには存在しますが、template_preprocess_node( )モジュールで使用できる関数として?たとえば、モジュールの名前が 'custom'の場合、この方法で使用できますか?
function custom_preprocess_node(&$vars) {
// Do some stuff
}
カスタムモジュールのノードをオーバーライドするにはどうすればよいですか?
確かにできます。 hook_preprocess_HOOK() はあなたが探しているものです。ドキュメントから...
特定のテーマフックのテーマ変数を前処理します。
このフックにより、モジュールは特定のテーマフックのテーマ変数を前処理できます。モジュールが定義していないテーマフックのテーマ前処理をオーバーライドまたは追加する必要がある場合にのみ使用してください。
Drupal7では、モジュールとテーマの両方が同じ方法で前処理関数を使用でき、指定されたテーマフックは、モジュールとテーマの両方に由来する多くの前処理実装を持つことができます。
Drupalフレームワークにおけるこのようなものと同様に、これらの関数が実行される順序を知ることが重要です。モジュールからのプリプロセス実装が最初に実行され、テーマによる実装が最後に実行されます。
Drupalコアモジュールを簡単に検索すると、nodeおよびrdfモジュールの例が表示されます。
これに関する良い記事を見つけました http://themery.com/dgd7/advanced-theming/preprocess-process/implement