Was ist der richtige Weg, um Feldsammlungselemente vorzuverarbeiten, um Vor- und Nachklassennamen hinzuzufügen?

9

Wie füge ich Klassennamen zu / für Feldsammlungselemente in Vorverarbeitungsfunktionen hinzu 'first'und 'last'klassifiziere sie ?'odd''even'

Alex
quelle
1
ungetestet: dropbucket.org/node/764
commonpike
Yepp, werfen Sie einen Blick hineinhook_preprocess_field(&$vars)
Leymannx

Antworten:

22

Normalerweise tun Sie dies in MYTHEME_preprocess_field_collection_item (), aber Feldsammlungselemente haben keinen eigenen Vorprozess. Glücklicherweise handelt es sich um Entitäten, sodass Sie mithilfe der Entitätsvorverarbeitung Ihre eigene Vorverarbeitungsfunktion für die Feldsammlung erstellen können:

/**
 * 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
quelle
2

In Drupal 8 ist die Vorverarbeitungsfunktion vorhanden, ohne dass eine hinzugefügt werden muss:

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