这个 {% content %} 标签会在页面上显示一个 CMS 内容块。要显示名为 contacts.htm 的内容块,你需要在 content 标签后以字符串形式传递文件名。
{% content "contacts.htm" %}子目录中的内容块也可以用同样的方式渲染。
{% content "sidebar/content.htm" %}主题文档 中有关于子目录用法的更多详细信息。
内容块可以渲染为纯文本:
{% content "readme.txt" %}你也可以使用 Markdown 语法:
{% content "changelog.md" %}内容块也可以与 布局占位符 结合使用。
{% put sidebar %}
{% content 'sidebar-content.htm' %}
{% endput %}你可以通过在文件名后指定变量,将变量传递给内容块:
{% content "welcome.htm" name=user.name %}你也可以为内容指定新的变量供其使用:
{% content "location.htm" city="Vancouver" country="Canada" %}在内容中,可以使用包含单个 花括号 的基本语法访问变量:
<p>Country: {country}, city: {city}.</p>
你也可以将变量集合作为简单数组传递:
{% content "welcome.htm" likes=[
{name:'Dogs'},
{name:'Fishing'},
{name:'Golf'}
] %}变量集合通过使用一对开闭括号来访问:
<ul>
{likes}
<li>{name}</li>
{/likes}
</ul>
注意:内容块不支持 Twig 语法,请考虑使用 CMS 片段。
在任何模板中,你都可以使用 content() 函数将内容设置为变量。这允许你在显示前操作输出。请记住使用 |raw 过滤器来防止输出转义。
{% set welcomeContent = content('welcome.htm') %}
{{ welcomeContent|raw }}你也可以将变量作为第二个参数传递给内容。
{% set welcomeContent = content('welcome.htm', { foo: 'bar' }) %}可以使用 hasContent() 函数检查内容是否存在,而无需渲染内容。要阻止内容的渲染,请将第二个参数设为 false,如果找到内容文件,它将返回 true 或 false。
{% if hasContent('welcome.htm') %}
{% content 'welcome.htm' %}
{% else %}
<p>Welcome content not found!</p>
{% endif %}使用 {% content %} 标签时,它会自动解析 CMS 片段 以及由 页面查找器表单小部件 创建的链接。
类似地,可以使用 |content 过滤器来解析 HTML 字符串中的多个内容对象并在输出中解析它们。
{{ post.content|content }}也可以使用 |md 过滤器来解析字符串中的 Markdown 内容。
{{ post.markdown_content|md|content }}