Apakah mungkin untuk mendefinisikan fungsi hook_preproses berdasarkan pada tipe entitas seperti profile2?


8

Saya berjalan melalui kemungkinan kait dengan menggunakan fungsi hook_preprocess(&$vars, $hook)dan hanya entitas yang tersedia untuk digunakan. Apakah mungkin untuk melakukan sesuatu seperti hook_preprocess_profile2_entity(), atau apakah saya harus menulis syarat jika untuk memeriksa jenis entitas hook_preprocess_entity()?

Jawaban:


15

Ini menyesuaikan pola tema Zen untuk fungsi preprocess node ke entitas:

<?php

/**
 * Implements template_preprocess_entity().
 *
 * Runs a entity specific preprocess function, if it exists.
 */
function MYTHEME_preprocess_entity(&$variables, $hook) {
  $function = __FUNCTION__ . '_' . $variables['entity_type'];
  if (function_exists($function)) {
    $function($variables, $hook);
  }
}

/**
 * Profile2 specific implementation of template_preprocess_entity().
 */
function MYTHEME_preprocess_entity_profile2(&$variables, $hook) {
}

/**
 * Field Collection specific implementation of template_preprocess_entity().
 */
function MYTHEME_preprocess_entity_field_collection_item(&$variables, $hook) {
}

Ini luar biasa. Saya selalu lupa bahwa PHP memungkinkan Anda melakukan hal-hal seperti ini.
mpdonadio

Jika Anda ingin melakukannya dalam tema induk dan mewarisi / menimpa, maka Anda harus menggali lebih dalam ke hook_theme. Zen's hook_theme adalah contoh yang bagus (meskipun panjang).
Capi Etheriel

Saya akan berterima kasih jika seseorang menunjukkan kepada saya bagaimana saya dapat mencapai sesuatu yang serupa di luar lapisan tema! Membuatku gila ...
NikLP
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.