业务催化剂:检查我们是否在Liquid的根URL上



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

我尝试使用{{globals。get}},因为根据BC文档,这应该输出…

当前相对路径和URL中传递的查询参数。例如,对于URL的输出http://mtica1.businesscatalyst.com/_s1/s2?a=1&b=2模块:

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

(我强调)

然而,Business Catalyst似乎并没有一致地处理这个Liquid标签。在站点根{{globals.get}}输出{},在其他系统页面(如电子商务布局),IDCatalogueID: "xxxxx"取代,其中xxxxx是目录的ID,而不是"当前相对路径"!

不用说,我无法像预期的那样输出ID: "/"以目标站点根。

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

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

虽然我对下面详细的解决方案没有任何问题,但由于"空白"在BC中未被记录,我更喜欢一个解决方案,如果BC开发团队进行更新,则不会有可能被破坏。


新解决方案

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

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

这里的"关键"信息是关键字空白

我做了一些测试,发现{{globals.get}}输出{}的唯一页面是根URL。(注意:我还没有详尽地测试过这个-如果你找到另一个输出{}的页面,请评论)

我尝试了{% if globals.get == {} -%},但这只是针对所有页面,因为所有页面都有{}内的输出。

BC文档什么都没有,但是我找到了这个提到它的文档,惊喜,惊喜:它工作了。

让我们只希望BC开发团队不要去改变一些阻止这个工作的东西

这实际上是不正确的。系统页面和其他页面通过模块也会遇到这种情况。全局变量。获取数据,可以通过许多不同的方式出现在主页上,比如如果你有谷歌分析或其他第三方跟踪,某些点击量等等。不幸的是,上面的方法是非常不准确的。

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

最新更新