section 组件定义了一个网站分区,并带有一个关联条目。当从后端面板预览该条目时,此分区将被使用。
该组件支持以下属性。
| 属性 | 说明 |
|---|---|
| handle | 条目蓝图 的句柄。 |
| identifier | 用于查找条目的标识符键,支持的值有 slug、fullslug 或 id。默认值为 slug。 |
| value | 用于查找条目的标识符值(可选)。留空时将使用标识符键作为 URL 参数名。可以设置为硬编码值,也可以为自定义参数,例如:{{ :slug }} |
| isDefault | 在预览条目时将此页面设为默认页面。默认值为 true。 |
以下会创建一个用于 Blog\Author 条目的部分,并使用默认的 :slug URL 参数 定位它。作者名称会作为标题显示,通过访问 {{ section.title }} Twig 变量。
url = "author/:slug"
[section]
handle = "Blog\Author"<h1>Posts by {{ section.title }}</h1>当同一页面使用多个部分时,可以使用组件别名来为页面分配一个不同的可用变量名。以下组件别名 author 转而使用 {{ author.title }} Twig 变量使标题可用。
[section author]
handle = "Blog\Author"<h1>Posts by {{ author.title }}</h1>默认标识符是 slug,这可以通过更改 identifier 属性来改变,例如,转而使用 id 列来定位记录。请注意,页面 URL 也会随之更改,以使用 :id 参数名称。
url = "author/:id"
[section]
handle = "Blog\Author"
identifier = "id"您可以使用 value 属性硬编码标识符查找,例如,将其设置为 7 将通过静态查找显示记录。
url = "author/ceo"
[section]
handle = "Blog\Author"
identifier = "id"
value = 7value 属性也接受外部参数,以下使用 foobar URL 参数来查找记录。
url = "author/:foobar"
[section]
handle = "Blog\Author"
identifier = "id"
value = "{{ :foobar }}"预览链接和使用页面查找器小部件不支持自定义值的标识符。
大多数情况下,当记录无法找到时,您会希望显示一个 404 页面。这可以通过使用 {% if %} 语句结合 abort(404) 函数来实现。
{% if author is empty %}
{% do abort(404) %}
{% endif %}当记录未找到时,
abort()Twig 函数 用于显示 404 页面。
当使用入口蓝图的内容组功能时,您可以使用 content_group 属性访问组代码。例如,一篇博文可能拥有内容组 regular_post 和 markdown_post,其中内容处理方式不同。
{% if post.content_group == 'markdown_post' %}
<!-- Render content as Markdown -->
{{ post.content|md }}
{% else %}
<!-- Render content as HTML -->
{{ post.content|raw }}
{% endif %}如果条目类型是 structure,则它将具有一个 fullslug 可用属性。要在页面 URL 中使用完整 slug,它应该被定义为一个 通配符 URL 参数。组件的 identifier 属性应设置为 fullslug。
url = "/wiki/:fullslug*"
[section article]
handle = "Wiki\Article"
identifier = "fullslug"作为一种替代方法,我们建议以 ID 为目标,并将其放置在 URL 末尾. 这样,记录就可以自由移动,而不会破坏您网站中的链接. 以下示例展示了如何通过重定向来为任何以前使用的 URL 实现这一点.
url = "/wiki/:fullslug*/:id"
[section article]
handle = "Wiki\Article"
identifier = "id"{% if article is empty %}
{% do abort(404) %}
{% elseif article.fullslug != this.param.fullslug %}
{% do redirect(this|page({ fullslug: article.fullslug }), 301) %}
{% endif %}
<!-- Contents here -->
redirect()Twig 函数 用于在 slug 不匹配时进行永久性 301 重定向。该|pageTwig 过滤器 提供当前页面,并将fullslugURL 参数重写为正确匹配。