È possibile definire una funzione hook_preprocess in base al tipo di entità come profile2?


8

Ho esaminato i possibili hook utilizzando la funzione hook_preprocess(&$vars, $hook)e solo l'entità era disponibile per l'uso. È possibile fare qualcosa del genere hook_preprocess_profile2_entity()o devo scrivere una condizione if per verificare il tipo di entità hook_preprocess_entity()?

Risposte:


15

Ciò adatta il modello di tema Zen per le funzioni di preelaborazione del nodo alle entità:

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

Questo è bellissimo. Dimentico sempre che PHP ti consente di fare cose del genere.
mpdonadio

Se vuoi farlo in un tema genitore ed ereditare / sovrascrivere, dovrai scavare più a fondo in hook_theme. Hook_theme di Zen è un buon esempio (anche se lungo).
Capi Etheriel,

Le sarei grato se qualcuno mi mostrasse come posso ottenere qualcosa di simile al di fuori del tema! Mi sta facendo impazzire ...
NikLP,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.