Squarespace - мультиусловный оператор JSONT .equal

У меня есть собственный HTML-код на /collections/products.list, который я хочу отображать только на главной странице и на двух других конкретных страницах коллекции моего веб-сайта.

Мне было интересно, есть ли какой-то запрос, в который я могу обернуть свой HTML, чтобы показывать его только на избранных страницах.

Может быть, настроить таргетинг на каждую страницу с помощью {squarespace.page-id}?

РЕДАКТИРОВАТЬ

Мне удалось сделать {.equal?:squarespace.page-id:"collection-12345"}, но я пытаюсь понять, как проверить несколько страниц.


person bryan    schedule 03.11.2018    source источник
comment
Я бы предпочел использовать теги Squarespaces JSON-T, но спасибо @evan.stoddard   -  person bryan    schedule 04.11.2018
comment
Условные выражения с json-t: stackoverflow.com/questions/22568931/   -  person evan.stoddard    schedule 04.11.2018
comment
@evan.stoddard, проверьте мое редактирование, я пытаюсь сделать оператор с несколькими условиями равными   -  person bryan    schedule 04.11.2018


Ответы (1)


Нет, нет способа проверить равенство нескольких значений в одном равном предикате, используя JSON-T в Squarespace. Однако есть пара альтернатив, которые минимизируют дублирование кода и улучшают удобство сопровождения.


Вариант 1:

Вы можете использовать следующее (я показываю, как вы можете использовать разные значения [т.е. использовать urlID вместо идентификатора страницы], но вам не нужно этого делать):

{.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. В конце концов, ничто не говорит о том, что вы должны использовать разные файлы регионов.

person Brandon    schedule 03.11.2018