Skip to content

Autoroute (OrchardCore.Autoroute)

该模块允许您为内容项指定自定义URL(永久链接)。

Autoroute部分

将此部分附加到内容类型以指定内容项的自定义URL。

然后,转到内容类型的定义并编辑Autoroute部分:

  • 使用Liquid表达式输入模式,该表达式将表示生成的slug。

例如,对于使用它来生成slug的TitlePart的内容:

{{ ContentItem | display_text | slugify }}

例如,对于具有ListPart和TitlePart(例如:嵌套在Blog中的BlogPost)的内容类型,它将使用容器和标题来生成slug:

{{ ContentItem | container | display_text | slugify }}/{{ ContentItem | display_text | slugify }}
  • 如果您想在编辑内容项时能够输入自定义路径,请勾选“允许自定义路径”。
  • 如果您想将内容项设置为主页,请勾选“显示主页选项”。

在模式中使用字段

字段也可以用作模式的一部分。以下示例使用名为Color的Text字段,在Product内容类型上。将文本slugify,以使其与URL兼容。

{{ ContentItem.Content.Product.Color.Text | slugify }}

Autoroute Slug Handle

具有Autoroute的内容项可以通过URL检索,您可以在任何可以通过其slug handle检索内容的地方检索它(请参见下面的示例)。其语法为slug:<URL>,例如slug:my-blog/my-blog-post

Liquid

启用Autoroute后,您可以在Liquid视图和模板中通过URL检索内容:

{% assign my_content = Content["slug:my-blog/my-blog-post"] %}

{% assign my_content = Content.Slug["my-blog/my-blog-post"] %}

容器路由

AutoroutePart支持父内容项的子项的路由。

容器和包含的定义

容器定义

容器内容项是父内容项,其中包含子内容项。

例如:

  • 附加了BagPart的内容项是容器或父内容项。

  • Taxonomy也是容器内容项。

包含的定义

包含的内容项是指包含在容器内容项中的内容项。

例如:

  • 包含在BagPart中的内容项被视为包含或子内容项。

  • Taxonomy的术语由Taxonomy包含。

包含的内容项作为json的一部分存储在容器文档中。

支持的容器

AutoroutePart支持这些容器类型的路由。

  • BagPart和由BagPart包含的内容项
  • Taxonomy内容项和包含的术语

配置

要启用包含的内容项的路由,必须正确配置AutoroutePart。

  • 将AutoroutePart添加到容器或父内容类型定义中。
  • 在AutoroutePart设置上启用“允许包含项路由”。
  • 在容器内容项上启用“路由包含项”。

可选地,将AutoroutePart添加到包含或子内容项的内容类型定义中,以管理包含项路由。

路径生成

默认情况下,当将AutoroutePart添加到容器内容项中并启用“路由包含项”时,生成的路由将由容器段、包含的内容项的ContentItemId以及如果存在,则由DisplayText组成。

例如: https://www.mysite.com/categories/47twnxzx9hs5k3dyn9j1mc5rny-travel

要为子内容项添加友好的slug,请将AutoroutePart添加到这些内容类型的内容类型定义中。

然后,您可以使用Liquid模式生成友好的slug。

例如: https://www.mysite.com/categories/travel

路由默认相对于父级,并且与ListPart不同,没有父级的Liquid过滤器

AutoroutePart设置

AutoroutePart上的设置允许站点管理员控制如何为用户启用容器和包含的路由。

允许路由包含项

在容器内容类型定义上启用此选项,即父项,以允许用户为包含的即子项启用路由。

管理包含项路由

在包含的内容类型定义上启用此选项,即子项,以允许AutoroutePart配置对这些内容项的单独路由控制。

允许绝对路径

启用AllowAbsolutePath以允许用户将路径设置为绝对路径。

默认情况下,容器路由将构建相对于容器路由的URL。

允许禁用

启用此选项以允许内容编辑器禁用路由生成。

当您有两个BagParts的容器并且应仅启用一个路由时,请使用此选项。

AutoroutePart内容项编辑器

禁用

内容编辑器可以选择禁用特定的包含内容项的路由生成。

路由包含项

在编辑内容项时,在容器内容项上选择“路由包含项”以为包含的内容项启用路由。

绝对

当选中时,将路由从相对路由强制为绝对路由。

注意

当您为BagPart配置容器路由时,您将希望更改部分的默认显示类型为“Summary”,并创建“Summary”和“Detail”模板,以在其容器中显示该项时使用,以及在通过路由详细显示时使用。

该文档由ChatGPT 4 翻译


Last update: March 22, 2023