template_preprocess_field(&$variables, $hook)
Prepares variables for field templates.
Default template: field.html.twig.
Parameters
array $variables: An associative array containing:
- element: A render element representing the field.
- attributes: A string containing the attributes for the wrapping div.
- title_attributes: A string containing the attributes for the title.
File
- core/includes/theme.inc, line 1526
- The theme system, which controls the output of Drupal.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | function template_preprocess_field(& $variables , $hook ) { $element = $variables [ 'element' ]; // Creating variables for the template. $variables [ 'entity_type' ] = $element [ '#entity_type' ]; $variables [ 'field_name' ] = $element [ '#field_name' ]; $variables [ 'field_type' ] = $element [ '#field_type' ]; $variables [ 'label_display' ] = $element [ '#label_display' ]; $variables [ 'label_hidden' ] = ( $element [ '#label_display' ] == 'hidden' ); // Always set the field label - allow themes to decide whether to display it. // In addition the label should be rendered but hidden to support screen // readers. $variables [ 'label' ] = $element [ '#title' ]; $variables [ 'multiple' ] = $element [ '#is_multiple' ]; static $default_attributes ; if (!isset( $default_attributes )) { $default_attributes = new Attribute(); } // Merge attributes when a single-value field has a hidden label. if ( $element [ '#label_display' ] == 'hidden' && ! $variables [ 'multiple' ] && ! empty ( $element [ '#items' ][0]->_attributes)) { $variables [ 'attributes' ] = NestedArray::mergeDeep( $variables [ 'attributes' ], ( array ) $element [ '#items' ][0]->_attributes); } // We want other preprocess functions and the theme implementation to have // fast access to the field item render arrays. The item render array keys // (deltas) should always be numerically indexed starting from 0, and looping // on those keys is faster than calling Element::children() or looping on all // keys within $element, since that requires traversal of all element // properties. $variables [ 'items' ] = array (); $delta = 0; while (! empty ( $element [ $delta ])) { $variables [ 'items' ][ $delta ][ 'content' ] = $element [ $delta ]; // Modules (e.g., rdf.module) can add field item attributes (to // $item->_attributes) within hook_entity_prepare_view(). Some field // formatters move those attributes into some nested formatter-specific // element in order have them rendered on the desired HTML element (e.g., on // the <a> element of a field item being rendered as a link). Other field // formatters leave them within $element['#items'][$delta]['_attributes'] to // be rendered on the item wrappers provided by field.html.twig. $variables [ 'items' ][ $delta ][ 'attributes' ] = ! empty ( $element [ '#items' ][ $delta ]->_attributes) ? new Attribute( $element [ '#items' ][ $delta ]->_attributes) : clone ( $default_attributes ); $delta ++; } } |
Please login to continue.