web-dev-qa-db-fra.com

Quelle est la bonne façon de prétraiter les éléments de collection de champs pour ajouter des noms de première et de dernière classe?

Comment ajouter des noms de classe 'first' Et 'last' En plus de 'odd'/'even' Pour les éléments de collection de champs dans les fonctions de prétraitement?

9
Alex

Vous feriez normalement cela dans MYTHEME_preprocess_field_collection_item (), mais les éléments de collection de champs n'ont pas leur propre prétraitement. Heureusement, ce sont des entités, vous pouvez donc utiliser le prétraitement d'entité pour créer votre propre fonction de prétraitement de collection de champs:

/**
 * Implements template_preprocess_entity().
 */
function MYTHEME_preprocess_entity(&$variables, $hook) {
  $function = 'MYTHEME_preprocess_' . $variables['entity_type'];
  if (function_exists($function)) {
    $function($variables, $hook);
  }
}

/**
 * Field Collection-specific implementation of template_preprocess_entity().
 */
function MYTHEME_preprocess_field_collection_item(&$variables) {
  $variables['classes_array'][] = 'your-class-here';
  // Plus whatever other preprocessing you want to do.
}
22
ksenzee

Dans Drupal 8 la fonction de prétraitement existe sans avoir à en ajouter une:

/**
 * Implements hook_preprocess_field_collection_item().
 */
function mymodule_preprocess_field_collection_item(array &$vars, $hook) {
  //dpm($vars);
}
2
Darvanen