我在/collections/products.list
上有自定义HTML代码,只想显示在首页以及我网站的其他两个特定收藏页上。
我想知道是否存在某种查询,我可以将HTML包装成只在选定页面上显示。
也许每个页面都以{squarespace.page-id}
为目标?
我能够做{.equal?:squarespace.page-id:"collection-12345"}
,但是我想弄清楚如何检查多个页面。
答案 0 :(得分:0)
否,无法使用Squarespace中的JSON-T在单个相等谓词中针对多个值测试相等性。但是,有两种选择可以减少重复代码并提高可维护性。
选项1:
您可以使用以下内容(我演示了如何使用不同的值[即使用urlID代替page-id],但不必这样做):
{.equal? collection.urlId "home"}
{@|apply mycustomblock.block}
{.or equal? squarespace.page-id "collection-12345"}
{@|apply mycustomblock.block}
{.or equal? squarespace.page-id "collection-54321"}
{@|apply mycustomblock.block}
{.or}
<!-- all the rest -->
{.end}
这并不是您想要的,但是比嵌套{.equal}{.or}
或在.list文件中保留重复的代码更具可维护性。
选项2:
另一种方法是通过template.conf文件添加其他布局。这将引用与其他布局相同的区域,但是将具有不同的区域名称。
...
"layouts" : {
"default" : {
"name" : "Standard Page Layout",
"regions" : [ "site" ]
},
"productsAlt" : {
"name" : "Products Enhanced",
"regions" : [ "site" ]
}
},
...
然后,您将在集合的设置面板中看到一个“布局”下拉菜单,您可以在其中区分布局。对于要具有替代产品布局的三个页面,请从下拉列表中选择替代布局。
然后,通过JSON-T,您可以执行以下操作:
{.equal? collection.regionName "productsAlt"}
<!-- Alt layout. -->
{.or}
<!-- Std./Non-Alt layout. -->
{.end}
这并不是“布局”的预期用途(通常您会使用它们实际使用不同的区域文件集/序列),但是它允许您具有可修改的,特定于集合的属性,然后可以通过服务器端JSON-T访问。毕竟,什么都没说您必须使用不同的区域文件。