1

我想知道是否有一种更有效的方法来创建hreflang标签,只在BC中使用liquid,而不需要创建webapp。

我尝试了这种有意义的方式,但由于某种原因它不起作用。

{% capture pagURL -%}{module_pageaddress}{% endcapture -%}
{% if pagURL contains "http://us." -%}
<link rel="alternate" href="{{ pagURL}}" hreflang="en-us" />
<link rel="alternate" href="{{ pagURL | replace: 'http://us', 'http://www' }}" hreflang="en-uk" />
<link rel="alternate" href="{{ pagURL | replace: 'http://us', 'http://au' }}" hreflang="en-au" />
<link rel="alternate" href="{{ pagURL | replace: 'http://us', 'http://eu' }}" hreflang="en" />
{% elsif pagURL contains "http://au." -%}
<link rel="alternate" href="{{ pagURL}}" hreflang="en-au" />
<link rel="alternate" href="{{ pagURL | replace: 'http://au', 'http://www' }}" hreflang="en-uk" />
<link rel="alternate" href="{{ pagURL | replace: 'http://au', 'http://us' }}" hreflang="en-us" />
<link rel="alternate" href="{{ pagURL | replace: 'http://au', 'http://eu' }}" hreflang="en" />
{% elsif pagURL contains "http://eu." -%}
<link rel="alternate" href="{{ pagURL}}" hreflang="en" />
<link rel="alternate" href="{{ pagURL | replace: 'http://eu', 'http://us' }}" hreflang="en-us" />
<link rel="alternate" href="{{ pagURL | replace: 'http://eu', 'http://au' }}" hreflang="en-au" />
<link rel="alternate" href="{{ pagURL | replace: 'http://eu', 'http://www' }}" hreflang="en-uk" />
{% elseif pagURL contains "http://www." -%}
<link rel="alternate" href="{{ pagURL}}" hreflang="en-uk" />
<link rel="alternate" href="{{ pagURL | replace: 'http://www', 'http://us' }}" hreflang="en-us" />
<link rel="alternate" href="{{ pagURL | replace: 'http://www', 'http://au' }}" hreflang="en-au" />
<link rel="alternate" href="{{ pagURL | replace: 'http://www', 'http://eu' }}" hreflang="en" />
{% else -%}
{% endif  -%}

奇怪的是,以下它在同一页面上工作。

{% capture pagURL -%}{module_pageaddress}{% endcapture -%}
{{ pagURL}}<br>
{{ pagURL | replace: 'http://www', 'http://us' }}<br>
{{ pagURL | replace: 'http://www', 'http://au' }}<br>
{{ pagURL | replace: 'http://www', 'http://eu' }}<br>

这也有效

{{ pagURL | replace: 'http://www', 'http://us' | prepend: '<link rel="alternate" href="' | append: '" hreflang="en-us" />' }}

当然,代码越短越好。

4

1 回答 1

2

好的,Daut,你会喜欢这个的!;p

在解决此问题时,我遇到了类似的障碍。(我将在下面解释)。

据我所知,当涉及到 URL 和变量时,BC 对 Liquid 的渲染存在一些问题。在服务器端处理方面,我并不真正了解 Liquid 的来龙去脉,但事情似乎并没有像在 BC 中那样工作。

例如,如果我们获取您的代码并将其剥离为基本要素:

(无论是否插入<head><body>不起作用:

    {% capture pagURL -%}
        {module_pageaddress}
    {% endcapture -%}    

    <link rel="alternate" href="{{pagURL}}" hreflang="en-us">

它输出<link rel="alternate" href="{{pagURL}}" hreflang="en-us">{{pagURL}}即呈现的文字文本。

但这确实有效:

    {% capture pagURL -%}
        {module_pageaddress}
    {% endcapture -%}     

    {% assign test = '<link rel="alternate" href="' | append: {{pagURL}} | append: '" hreflang="en-us">' -%}

    {{test}}

将上述与我遇到的问题进行比较。

这不起作用:

    {module_pageaddress collection="page" template=""}
    {module_siteUrl collection="site" template=""}

    {% assign fullUrl = "http://{{site.siteUrl}}/" -%}

    {% if page.pageUrl == {{fullUrl}} -%}

        // We are on the home page

    {% else -%}

        // We are not on the home page

    {% endif -%}

这里的问题在于{{site.siteUrl}}变量声明。不知道问题是什么,但它无法处理jandle。

但这确实有效:

    {module_pageaddress collection="page" template=""}
    {module_siteUrl collection="site" template=""}

    {% assign fullUrl = 'http://' | append: {{site.siteUrl}} | append: '/' -%}

    {% if page.pageUrl == {{fullUrl}} -%}

        // We are on the home page

    {% else -%}

        // We are not on the home page

    {% endif -%}

最后回到你的例子,(具有讽刺意味的是)这有效:

    {% capture pagURL -%}
        {module_pageaddress}
    {% endcapture -%}

    <a href="{{pagURL}}">test</a>

去搞清楚。

我很确定 BC 有一些自动方法来抓取页面上任何位置包含的头部元素并将它们重新插入头部(即使它们一开始就被插入头部)。

我想知道这是否会在诸如<link rel="alternate" href="{{pagURL}}" hreflang="en-us">. 它并没有解释我遇到的问题。

归根结底,我认为 BC 对 Liquid 的实施仍然存在一些大问题。

于 2016-11-28T22:51:20.213 回答