diff --git a/agaric/templates/field/field.html.twig b/agaric/templates/field/field.html.twig new file mode 100644 index 0000000..9283e0c --- /dev/null +++ b/agaric/templates/field/field.html.twig @@ -0,0 +1,87 @@ +{# +/** + * @file + * Theme override for a field. + * + * To override output, copy the "field.html.twig" from the templates directory + * to your theme's directory and customize it, just like customizing other + * Drupal templates such as page.html.twig or node.html.twig. + * + * Instead of overriding the theming for all fields, you can also just override + * theming for a subset of fields using + * @link themeable Theme hook suggestions. @endlink For example, + * here are some theme hook suggestions that can be used for a field_foo field + * on an article node type: + * - field--node--field-foo--article.html.twig + * - field--node--field-foo.html.twig + * - field--node--article.html.twig + * - field--field-foo.html.twig + * - field--text-with-summary.html.twig + * - field.html.twig + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - label_hidden: Whether to show the field label or not. + * - title_attributes: HTML attributes for the title. + * - label: The label for the field. + * - multiple: TRUE if a field can contain multiple items. + * - items: List of all the field items. Each item contains: + * - attributes: List of HTML attributes for each item. + * - content: The field item's content. + * - entity_type: The entity type to which the field belongs. + * - field_name: The name of the field. + * - field_type: The type of the field. + * - label_display: The display settings for the label. + * + * @see template_preprocess_field() + */ +#} +{# + Ensures that the visually hidden option for field labels works correctly. + @todo: Remove when https://www.drupal.org/node/2779919 is resolved. +#} +{% + set title_classes = [ + 'label', + label_display == 'visually_hidden' ? 'visually-hidden', + label_display == 'inline' ? 'is-pulled-left' + ] +%} +{% set title_attributes = title_attributes.addClass(title_classes) %} +{# Child templates can specify classes to be added to items. #} +{% set item_classes = item_classes ?? [] %} +{# Child templates can specify whether items should be wrapped. #} +{% set use_item_wrapper = use_item_wrapper is defined ? use_item_wrapper : true %} + +{% macro render_item(item, item_classes, use_item_wrapper) %} + {% + set item = item|merge({ + 'attributes': item.attributes.addClass(item_classes) + }) + %} + {% if use_item_wrapper %} + {{ item.content }} + {% endif %} +{% endmacro render_item %} +{% import _self as helpers %} + +{% if label_hidden %} + {% if multiple %} + {% for item in items %} + {{ item.content}} + {% endfor %} + {% endif %} +{% else %} + + {{ label }} + {% if multiple and use_item_wrapper %} +
+ {% endif %} + {% for item in items %} + {{ helpers.render_item(item, item_classes, use_item_wrapper) }} + {% endfor %} + {% if multiple and use_item_wrapper %} +
+ {% endif %} + +{% endif %}