charliedev/fallback-site

此包已被弃用且不再维护。未建议替代包。

允许多站点安装的站点在找到匹配的slug时使用其他站点的条目。

1.2.2 2019-04-16 15:39 UTC

This package is auto-updated.

Last update: 2020-02-19 17:10:35 UTC


README

此插件允许每个站点在请求的元素找不到时回退到另一个站点。这允许多站点安装(通常用于多种语言)在现有内容可用的情况下优雅地回退。

当请求一个通常找不到的元素时,回退站点 将检查配置的站点是否存在具有相同slug的元素。例如,如果您有一个英文站点和一个西班牙语站点作为您的craft安装的一部分,并且英文是西班牙语的回退,那么对西班牙语站点的请求处理如下

  • 首先,如果西班牙语站点上找到了元素,一切照常进行,回退站点 不会介入。
  • 如果西班牙语站点上没有找到元素,回退站点 将检查是否存在具有相同slug的英文元素。
  • 如果找到了英文元素,则使用该元素的ID查看是否存在西班牙语版本,这可能发生在使用不正确、未翻译的slug的情况下。
    • 如果存在西班牙语版本,则将发送301重定向到用户,将他们引导到正确的URL。
    • 如果不存在西班牙语版本,则回退站点 将使Craft使用英文元素代替西班牙语元素(以下列出了一些条件)。
  • 如果找不到英文元素,则请求将继续作为正常的404进行。

请参阅下面的流程图,展示在多站点Craft安装中请求位于二级西班牙语站点(位于/es)下的about-us页面时会发生什么。

正常Craft元素处理

Craft routing without Fallback Site

带有回退站点的元素处理

Craft routing with Fallback Site

要求

  • Craft CMS 3.0.0-RC1或更高版本

  1. 打开终端并导航到您的项目文件夹
cd /path/to/project
  1. 通过Composer下载包以要求它
composer require charliedev/fallback-site
  1. 在Craft控制面板的设置 -> 插件页面安装插件。

--- 或 ---

  1. 通过命令行安装插件
./craft install/plugin fallback-site

配置

Fallback Site settings panel

在Craft控制面板中,转到设置 -> 插件页面,然后查找由回退站点插件列出的设置按钮。

在此,您可以选择哪个站点作为其他站点的回退。回退也可以跨多个站点链式连接,每个站点都回退到下一个站点。

使用

虽然插件无需任何额外配置即可正常工作,但您可能想知道是否正在显示的条目已被回退站点替换。这可能是为了显示有关特定站点内容的可用性的通知,或通知用户已进行替换。通过比较Craft存储的当前站点与条目的关联站点可以检测此情况。

{% if craft.app.sites.currentSite != entry.site %}
	{# Entry content is coming from a different site. #}
{% endif %}
{# ... or ... #}
{% if craft.app.language != entry.site.language %}
	{# Entry content is in a different language. #}
{% endif %}

Craft CMSCharlie Development构建