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.