GravCMS 字段唯一 ID
GravCMS field unique ID
我正在为 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>
假设 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 %}
我正在为 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>
假设 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 %}