Squarespace - Multi-условное выражение JSONT. - PullRequest
0 голосов
/ 04 ноября 2018

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

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

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

EDIT

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

1 Ответ

0 голосов
/ 04 ноября 2018

Нет, нет способа проверить равенство для нескольких значений в пределах одного и того же предиката, используя 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" ]
  }
},
...

Затем вы получите раскрывающийся список «Макет» на панели настроек для коллекций, в котором можно различать макеты. Для трех страниц, для которых требуется макет альтернативных продуктов, выберите альтернативный макет в раскрывающемся списке.

enter image description here

Затем через JSON-T вы можете сделать что-то вроде:

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

Это не совсем предполагаемое использование «макетов» (обычно вы используете их для фактического использования другого набора / последовательности файлов региона), но оно позволяет вам иметь изменяемое свойство, специфичное для коллекции, которое затем может быть доступ через серверную часть JSON-T. Ничто не говорит, что у вас есть , чтобы использовать разные файлы региона, в конце концов.

...