charliedev / fallback-site
此包已被弃用且不再维护。未建议替代包。
允许多站点安装的站点在找到匹配的slug时使用其他站点的条目。
1.2.2
2019-04-16 15:39 UTC
Requires
- craftcms/cms: ^3.0.0-RC1
README
此插件允许每个站点在请求的元素找不到时回退到另一个站点。这允许多站点安装(通常用于多种语言)在现有内容可用的情况下优雅地回退。
当请求一个通常找不到的元素时,回退站点 将检查配置的站点是否存在具有相同slug的元素。例如,如果您有一个英文站点和一个西班牙语站点作为您的craft安装的一部分,并且英文是西班牙语的回退,那么对西班牙语站点的请求处理如下
- 首先,如果西班牙语站点上找到了元素,一切照常进行,回退站点 不会介入。
- 如果西班牙语站点上没有找到元素,回退站点 将检查是否存在具有相同slug的英文元素。
- 如果找到了英文元素,则使用该元素的ID查看是否存在西班牙语版本,这可能发生在使用不正确、未翻译的slug的情况下。
- 如果存在西班牙语版本,则将发送301重定向到用户,将他们引导到正确的URL。
- 如果不存在西班牙语版本,则回退站点 将使Craft使用英文元素代替西班牙语元素(以下列出了一些条件)。
- 如果找不到英文元素,则请求将继续作为正常的404进行。
请参阅下面的流程图,展示在多站点Craft安装中请求位于二级西班牙语站点(位于/es
)下的about-us
页面时会发生什么。
正常Craft元素处理
带有回退站点的元素处理
要求
- Craft CMS 3.0.0-RC1或更高版本
- 打开终端并导航到您的项目文件夹
cd /path/to/project
- 通过Composer下载包以要求它
composer require charliedev/fallback-site
- 在Craft控制面板的
设置 -> 插件
页面安装插件。
--- 或 ---
- 通过命令行安装插件
./craft install/plugin fallback-site
配置
在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 %}