Business Catalyst:检查我们是否在 Liquid 的根目录 URL

Business Catalyst: Check if we are on the root URL with Liquid

我想使用 Liquid 标记来测试正在查看的页面是否是主页(但特别是网站的根 URL),例如www.mysite.com/

我尝试使用 {{globals.get}},因为根据 BC Documentation,这应该输出...

The current relative path and the query parameters passed in the URL. For example, for the URL http://mtica1.businesscatalyst.com/_s1/s2?a=1&b=2 the output of the module is:

{
    "ID": "/_s1/s2",
    "a": "1",
    "b": "2"
}

[强调我的]

但是,Business Catalyst 似乎没有始终如一地处理此 Liquid 标记。在站点根 {{globals.get}} 输出 {} 和其他系统页面(例如电子商务布局)上,ID 替换为 CatalogueID: "xxxxx",其中 xxxxx 是目录的 ID,不是"current relative path" 完全没有!

不用说,我无法按预期输出 ID: "/" 以定位站点根目录。

如何使用 Liquid 测试用户是否在根 URL 上?

编辑:我在这个答案的开头添加了另一个解决方案,但将我原来的解决方案留在下面,以便其他人可以看到我经历的过程。

虽然我对下面详述的解决方案没有任何问题,但由于 "blank" 在 BC 中没有记录,我更喜欢一个解决方案,如果 BC 开发团队做出更新。


新解决方案

您可以使用以下 Liquid 标记检查您是否是站点根用户:

    {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 site root

    {% else -%}

        // we are not on the site root

    {% endif -%}

上一个解决方案

您可以使用以下 Liquid 标记测试您是否在站点根目录中:

{% if globals.get == blank -%}
    // we are on the root URL - do something
{% else -%}
    // we are not on the root URL
{% endif -%}

这里的"key"条信息是关键词空白.

我做了一些测试,发现作为 {{globals.get}} 结果输出 {} 的唯一页面是根 URL。 (注意: 我没有对此进行详尽的测试 - 如果您发现另一个输出 {} 的页面,请发表评论)

我试过 {% if globals.get == {} -%} 但这只是针对所有页面,因为它们在 {}.

中都有输出

BC 文档什么都没有,但我发现 this document 提到了它,惊喜,惊喜:它有效。

我们只是希望 BC 开发团队不要去改变阻止它工作的东西。

这实际上是不正确的。 系统页面和其他通过模块的页面也会遇到。 Globals.get 是数据,可以通过许多不同的方式出现在主页上,例如如果您有 google 分析或其他第 3 方跟踪、某些点击等等。 不幸的是,以上是一种非常不准确的方法。

您能解释一下您的目标是什么吗?为什么需要这个?