Squarespace-多条件JSONT .equal语句

时间:2018-11-03 21:37:34

标签: squarespace

我在/collections/products.list上有自定义HTML代码,只想显示在首页以及我网站的其他两个特定收藏页上。

我想知道是否存在某种查询,我可以将HTML包装成只在选定页面上显示。

也许每个页面都以{squarespace.page-id}为目标?

编辑

我能够做{.equal?:squarespace.page-id:"collection-12345"},但是我想弄清楚如何检查多个页面。

1 个答案:

答案 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" ]
  }
},
...

然后,您将在集合的设置面板中看到一个“布局”下拉菜单,您可以在其中区分布局。对于要具有替代产品布局的三个页面,请从下拉列表中选择替代布局。

enter image description here

然后,通过JSON-T,您可以执行以下操作:

{.equal? collection.regionName "productsAlt"}
  <!-- Alt layout. -->
{.or}
  <!-- Std./Non-Alt layout. -->
{.end}

这并不是“布局”的预期用途(通常您会使用它们实际使用不同的区域文件集/序列),但是它允许您具有可修改的,特定于集合的属性,然后可以通过服务器端JSON-T访问。毕竟,什么都没说您必须使用不同的区域文件。