Profile2 gibi varlık türüne dayalı bir hook_preprocess işlevi tanımlamak mümkün müdür?


8

Ben fonksiyonu kullanarak olası kancalar yürüdü hook_preprocess(&$vars, $hook)ve sadece varlık kullanılabilir. Gibi bir şey yapmak mümkün mü hook_preprocess_profile2_entity(), yoksa varlık türünü kontrol etmek için bir if koşulu yazmak zorunda mıyım hook_preprocess_entity()?

Yanıtlar:


15

Bu, düğüm önişleme işlevleri için Zen tema modelini varlıklara uyarlar:

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

Bu harika. Her zaman PHP'nin böyle şeyler yapmanıza izin verdiğini unutuyorum.
mpdonadio

Bunu bir ana temada yapmak ve devralmak / geçersiz kılmak istiyorsanız, hook_theme içinde daha derinlere inmeniz gerekir. Zen'in hook_theme iyi bir örneğidir (uzun olmasına rağmen).
Capi Etheriel

Birisi bana tema katmanının dışında benzer bir şeyi nasıl başarabileceğimi gösterirse minnettar olurum! Beni deli ediyor ...
NikLP
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.