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.