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?

9

Comment ajouter 'first'et 'last'classer des noms en addition à 'odd'/ 'even'pour des éléments de collection de champs dans les fonctions de prétraitement?

Alex
la source
1
non testé: dropbucket.org/node/764
commonpike
Yepp, jetez un œil à l'intérieurhook_preprocess_field(&$vars)
leymannx

Réponses:

22

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.
}
ksenzee
la source
2

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);
}
Darvanen
la source