Чи можна визначити функцію прив'язки_процесу на основі типу об'єкта, такого як profile2?


8

Я пройшов можливі гачки за допомогою функції, hook_preprocess(&$vars, $hook)і лише сутність була доступна для використання. Чи можливо зробити щось на кшталт hook_preprocess_profile2_entity()або мені потрібно написати умову if для перевірки типу сутності hook_preprocess_entity()?

Відповіді:


15

Це адаптує шаблон теми Zen для функцій попередньої обробки вузла до сутностей:

<?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) {
}

Це круто. Я завжди забуваю, що PHP дозволяє робити такі речі.
mpdonadio

Якщо ви хочете зробити це в батьківській темі та успадкувати / переосмислити, тоді вам доведеться заглибитися в куту_тему. Прикраса_теми Дзен - хороший приклад (хоча і тривалий).
Capi Etheriel

Буду вдячний, якби хтось показав мені, як я можу досягти чогось подібного поза шаром теми!
Загнав
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.