仅使用Liquid in Business催化剂创建hreflang标签

时间:2016-11-10 10:45:56

标签: html liquid business-catalyst hreflang

我想知道是否有更有效的方法来创建hreflang标签,只需在BC中使用液体,而无需创建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" />' }}

代码越短,当然越好。

1 个答案:

答案 0 :(得分:2)

好的Daut,你会爱上这个! ; P

在为this issue开发解决方案时遇到了类似的障碍。 (我将在下面解释)。

据我所知,BC涉及到URL和变量时,它在呈现Liquid方面存在一些问题。我不太了解Liquid在服务器端处理方面的细节,但事情似乎并不像BC那样有效。

例如,如果我们接受您的代码并将其剥离回原来的基本要素:

(无论是插入<head>还是<body> DOESN&#39; T工作:

    {% 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}}

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

这个DOESN&#39; T:

    {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}}。不确定问题是什么,但它无法解决问题。

但这可行:

    {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">这样的问题。它并没有解释我遇到的问题。

当天结束时,我认为卑诗省实施Liquid还存在一些重大问题。