Accordion 组件

简介

Accordion 组件允许开发人员在其 Mautic 模板中创建可折叠的部分。 此组件用于将内容组织成可展开和可折叠的面板,通过使大量内容更易于管理来增强用户体验。

模板结构

accordion.html.twig 模板定义了此 Accordion 组件。 该模板采用列表结构 <ul>,其中每个项目 <li> 代表一个 Accordion 面板。 每个面板由标题和一个可折叠的内容部分组成。

主要特性

  • 单击标题可以展开或折叠每个 Accordion 项目。

  • 此组件包含 ARIA 属性以提高可访问性。

  • 您可以使用 Twig 变量自定义每个 Accordion 面板的内容。

应用 Accordion 组件

要使用 Accordion 组件,请将其包含在您的模板中并传递必要的数据。

定义您想要包含在 Accordion 中的内容。 例如,如果您想包含一组 UTM 标签字段,您可以按以下方式定义内容:

{% set utmTagsContent %}
    {% for i, utmTag in form.utmTags %}
        {{ form_row(utmTag) }}
    {% endfor %}
{% endset %}

Note

例如,您可以循环遍历表单字段或任何其他数据以动态生成内容。

在您的主模板中包含 accordion.html.twig 模板并传递一个数组,其中每个项目应具有以下属性:

  • id: 一个唯一标识符。

  • title: Accordion 项目的标题。

  • padding_inline: 可选布尔值,用于控制内容内的内边距。 如果未定义,则默认为 true。

  • content: 当项目展开时显示的内容。

示例:

{% include '@MauticCore/Helper/accordion.html.twig' with {
    'items': [
        {
            'id': 'UTM',
            'title': 'mautic.email.utm_tags',
            'padding_inline': false,
            'content': utmTagsContent,
        }
    ]
} %}

虽然单独定义 set 块不是严格必需的,但它可以帮助确保依赖于 Twig 函数的操作继续正常工作。 set 块允许您预定义复杂的内容或操作,从而使您的模板更清晰、更易于维护。

没有 set 块的示例

如果您的内容很简单,您可以直接将其包含在 items 数组中,而无需使用 set 块。 以下是一个示例:

{% include '@MauticCore/Helper/accordion.html.twig' with {
    'items': [
        {
            'id': 'Example',
            'title': 'Example Title',
            'padding_inline': true,
            'content': '<p>This is a simple content example.</p>',
        }
    ]
} %}

这种灵活性允许您根据每个情况选择最佳方法。

自动 CSS 处理

当使用此组件时,所有必要的 CSS 样式都将为您自动处理。这意味着该组件预定义了类,例如 accordion-headingaccordion-wrapperaccordion-content,从而确保开箱即用的统一且美观的外观。

  • 该组件包含预定义的 CSS 类,用于管理手风琴的布局、间距和交互元素。

  • 您无需添加任何额外的 CSS 即可使手风琴正常运行并具有视觉吸引力。

  • 它使用现有的 Bootstrap 函数来折叠面板。

  • 请避免在您自己的 CSS 中覆盖这些类。

手风琴的设计使其易于实现,所有必要的 CSS 样式都已预先设置。这允许您专注于集成和使用该组件,而无需担心额外的样式。

完整示例

以下是一个完整的示例,演示如何在 Mautic 模板中使用此组件:

{% set utmTagsContent %}
    {% for i, utmTag in form.utmTags %}
        {{ form_row(utmTag) }}
    {% endfor %}
{% endset %}

{% include '@MauticCore/Helper/accordion.html.twig' with {
    'items': [
        {
            'id': 'UTM',
            'title': 'mautic.email.utm_tags',
            'padding_inline': false,
            'content': utmTagsContent,
        }
    ]
} %}

对于更复杂的结构,例如包含数十个手风琴项的结构,您可能更喜欢复制该结构并构建一些独特的内容,但最佳方法是将每个内容放在一个块中。