doublesecretagency/craft-siteswitcher

轻松地在网站任何页面上切换站点。

3.0.0 2024-02-21 06:06 UTC

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。如果 siteHandleelement 无效,则返回 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 查看完整目录