Синтаксис оператора If с шаблонами JSON Squarespace

Я пытаюсь оценить строку в операторе if, используя шаблоны JSON.

Это работает:

{.if true}
  <h1>It is true</h1>
{.end}

Однако этот синтаксис разбивает страницу:

{.if "foo"=="bar"}
  <h1>Not true</h1>
{.end}

Как сравнить строки, используя шаблоны JSON?

2 ответа

Squarespace решает эту проблему с помощью предиката ".equal" (я не могу опубликовать ссылку из-за нехватки реп. Баллов):

{.equal foo "bar"}
  <h1>It's true</h1>
{.or}
  <h1>Not true</h1>
{.end}

где foo - ключ к значению, предоставленному в данных JSON. Если вам нужна только "ложная / не равная" часть, то она может быть сокращена до:

{.equal foo "bar"}{.or}<h1>Not true</h1>{.end}

Теперь, когда "bar" содержит пробел, вам нужно использовать символ, отличный от пробела, в качестве разделителя. Из форумов Squarespace:

Тогда решение состоит в том, чтобы указать любой другой символ в качестве разделителя (тот, который не будет использоваться ни в какой другой части строки). Например, это будет работать:

{.equal?: categoryFilter: "Семейное право"}

Вы можете видеть, что вместо пробела после.equal?, я использовал: (двоеточие). Таким образом, пространство в вашем втором аргументе "Семейное право" обрабатывается правильно, и вы не пытаетесь разделить слова на два отдельных аргумента.

Примечание: чтобы увидеть те данные, которые предоставляются для страницы, добавьте "? Format=json-pretty" в URL. Вот пример.

Я не думаю, что это выполнимо, и я уверен, что вы не хотите использовать такие значения, особенно в шаблоне, который побеждает цель.

пытаться:

{.if foo}
  <h1>Not true</h1>
{.end}
Другие вопросы по тегам