我正在为GravCMS中的手风琴菜单构建模块化模板。
我需要为id创建唯一标识符;是否有任何预先存在的我可以调用并用于标识符?如果没有,我是否需要创建一个额外的字段并在保存时生成它?
目前我的树枝上有{{pane.pane_title}},我需要一个唯一的ID。
非常感谢任何关于练习的建议。
我的accordion.yaml文件如下所示:
title: Accordion
@extends: default
form:
fields:
tabs:
type: tabs
active: 1
fields:
panes:
type: tab
title: Accordion Panes
fields:
header.panes:
name: panes
type: list
label: Panes
fields:
.pane_title:
type: text
label: Title
.pane_content:
type: editor
label: Content
我的文件,accordion.html.twig看起来像这样:
<div class="container">
<div class="row">
<div class="panel-group" id="accordion">
{% for pane in page.header.panes %}
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapse-{{ pane.pane_title }}">
{{ pane.pane_title }}</a>
</h4>
</div>
<div id="collapse-{{ pane.pane_title }}" class="panel-collapse collapse">
<div class="panel-body">{{ pane.pane_content }}</div>
</div>
</div>
{% endfor %}
</div>
</div>
答案 0 :(得分:1)
假设pane
有一个独特的slug
,您最好使用slug
而不是pane_title
,因为您最终可能会遇到特殊情况否则需要转义的字符。
如果slug
不可用,您可以为ID生成随机唯一字符串:
{% for pane in page.header.panes %}
{% set guid = random_string(36) %}
...
<div id="collapse-{{guid}}"...>
...
{% endfor %}
但是,如果您需要确保页面视图中的ID保持一致(例如直接链接到特定面板),您可能会想要MD5哈希标题,这样就无需转义任何内容字符:
{% for pane in page.header.panes %}
{% set guid = pane.pane_title|md5 %}
...
<div id="collapse-{{guid}}"...>
...
{% endfor %}