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 方跟踪、某些点击等等。
不幸的是,以上是一种非常不准确的方法。
您能解释一下您的目标是什么吗?为什么需要这个?
我想使用 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 方跟踪、某些点击等等。 不幸的是,以上是一种非常不准确的方法。
您能解释一下您的目标是什么吗?为什么需要这个?