【问题标题】:Create hreflang tags only using Liquid in Business catalyst仅使用 Liquid in Business 催化剂创建 hreflang 标签
【发布时间】:2017-03-24 08:46:42
【问题描述】:

我想知道是否有更有效的方法来创建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" />' }}

当然,代码越短越好。

【问题讨论】:

  • 代码实际上在每个页面上都能完美运行,除了主页。
  • 只是一个问题:“pagURL”和“elsif”缺少“e”是否有原因?
  • ''pagURL'' 是一个变量,它是用 ''capture'' 声明的,''elsif'' 是在不列颠哥伦比亚省液体中写“else if”的正确方式。
  • 抱歉没有正确阅读捕获语句。并且不知道 elsif。 :)

标签: html liquid business-catalyst hreflang


【解决方案1】:

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

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

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

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

这个(无论是插入&lt;head&gt;还是&lt;body&gt;不起作用:

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

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

它输出 &lt;link rel="alternate" href="{{pagURL}}" hreflang="en-us"&gt;{{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 有一些自动方法来抓取页面上任何位置包含的头部元素并将它们重新插入头部(即使它们一开始就被插入头部)。

我想知道这是否会在 &lt;link rel="alternate" href="{{pagURL}}" hreflang="en-us"&gt; 这样的情况下引起问题。但它并没有解释我遇到的问题。

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

【讨论】:

  • 嘿卢克,我知道你说的都是真的,我感谢你的帮助,但我的代码仍然是 30 行 :D 。这是一个很好的答案,但我的问题是如何让它简短。
  • 完全 - 对不起,我没有错过,但我忘了在我的回答中解决它。最后,我的目标只是找到一种让您的链接标签真正起作用的方法。在这个阶段,我将研究如何在尝试缩短之前让整个原始设置正常工作。将所有链接标签(或部分链接标签)转换为变量可能仍会缩短您的整体代码。
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
  • 2016-09-08
  • 2020-01-05
  • 2020-12-14
  • 2013-04-10
  • 1970-01-01
相关资源
最近更新 更多