doublesecretagency / craft-siteswitcher
轻松地在网站任何页面上切换站点。
Requires
- craftcms/cms: ^5.0.0-beta
This package is auto-updated.
Last update: 2024-09-21 07:19:21 UTC
README
轻松地在网站任何页面上切换站点。
此插件提供了一种轻松在网站之间切换的方法。无论您目前在哪个页面,都会链接到其并行站点中的相同页面。
* 注意:您必须使用 Craft 的 多站点 功能才能访问网站上的多种语言。
Twig 函数
siteSwitcher(siteHandle, element = null)
siteHandle
- 您站点的名称(例如:english
)。element
- (可选) 如果当前页面是entry
(或其他元素类型),您可以将该元素作为第二个参数传递。这确保了任何翻译后的 slug 都被正确使用。
返回一个链接到当前页面备用站点版本的 URL。如果 siteHandle
或 element
无效,则返回 false
。
基本用法
只需使用一行代码,如下所示
<a href="{{ siteSwitcher('spanish') }}">Español</a>
这将链接到当前页面的西班牙语版本。
高级用法
如果当前页面是条目,您的条目可能为每种语言使用不同的 slug。在这种情况下,您可以将 entry
对象作为第二个参数传递
<a href="{{ siteSwitcher('spanish', entry) }}">Español</a>
第二个参数可以接受任何 Craft 元素类型,因此您也可以使用其他元素!显然,只有使用 slug 的元素(如 category
元素)才能工作。
<a href="{{ siteSwitcher('spanish', category) }}">Español</a>
在条目与非条目之间共享站点链接
使用 空合并运算符,您可以链式调用潜在元素类型。如果某个特定页面上未定义某个值,则将使用下一个值。
{% set element = (category ?? entry ?? null) %}
这将使用找到的第一个非空值(或不存在元素时的 null)。
总结
这样一行简单的代码在 99% 的网站上都能很好地工作
{% set element = (category ?? entry ?? null) %} <ul> <li><a href="{{ siteSwitcher('english', element) }}">English</a></li> <li><a href="{{ siteSwitcher('spanish', element) }}">Español</a></li> <li><a href="{{ siteSwitcher('french', element) }}">Français</a></li> <li><a href="{{ siteSwitcher('german', element) }}">Deutsch</a></li> </ul>
您可以在 include
中使用此代码,并在整个网站上共享它。如果页面是 entry
页面,它将使用条目的本地化 slug 版本。否则,它将为每个链接保留相同的 URI。
动态遍历所有站点
如果您想动态遍历每个站点,请尝试这样做
{% set element = (category ?? entry ?? null) %} <ul> {% for site in craft.app.sites.getAllSites() %} <li><a href="{{ siteSwitcher(site.handle, element) }}">{{ site.name }}</a></li> {% endfor %} </ul>
检查是否存在翻译元素
您可以在显示链接之前检查该元素的翻译版本是否存在
{% set element = (category ?? entry ?? null) %} <ul> {% for site in craft.app.sites.getAllSites() %} {% set siteLink = siteSwitcher(site.handle, element) %} {% if siteLink %} <li><a href="{{ siteLink }}">{{ site.name }}</a></li> {% endif %} {% endfor %} </ul>
回退到翻译后的主页
假设您的首页在每个站点上都得到了适当的翻译,您可以将主页设置为一个最后的备选方案。如果链接无法确定,则将链接到翻译后的主页。
只需将可选的第三个参数设置为 true
{% set element = (category ?? entry ?? null) %} <ul> <li><a href="{{ siteSwitcher('english', element, true) }}">English</a></li> <li><a href="{{ siteSwitcher('spanish', element, true) }}">Español</a></li> <li><a href="{{ siteSwitcher('french', element, true) }}">Français</a></li> <li><a href="{{ siteSwitcher('german', element, true) }}">Deutsch</a></li> </ul>
还有其他问题吗?
我们还有其他插件!
请访问 doublesecretagency.com/plugins 查看完整目录