Как правильно обрабатывать элементы коллекции полей для добавления имени и фамилии класса?

9

Как добавить 'first'и 'last'имена классов в дополнение к 'odd'/ 'even'для элементов коллекции полей в функциях предварительной обработки?

Alex
источник
1
не проверено: dropbucket.org/node/764
commonpike
Йепп, загляни внутрьhook_preprocess_field(&$vars)
leymannx

Ответы:

22

Обычно вы делаете это в MYTHEME_preprocess_field_collection_item (), но элементы коллекции полей не имеют своего собственного предварительного процесса. К счастью, они являются сущностями, поэтому вы можете использовать предварительную обработку сущностей для создания собственной функции предварительной обработки сбора полей:

/**
 * 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
источник
2

В Drupal 8 функция предварительной обработки существует без необходимости ее добавления:

/**
 * Implements hook_preprocess_field_collection_item().
 */
function mymodule_preprocess_field_collection_item(array &$vars, $hook) {
  //dpm($vars);
}
Darvanen
источник