Как мне показать предмет из коллекции Jekyll в указанную дату c? (Проблема с жидким синтаксисом?) - PullRequest
0 голосов
/ 18 июня 2020

Думаю, самый простой c вопрос, который у меня есть, - почему использование числа в начале оператора Liquid if кажется не работает.

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

{% if quip.show == "foo" %}

Это не:

{% if quip.show == "1" %}

… но, конечно, это еще не все, вот что у меня происходит.

У меня есть Jekyll Коллекция маленьких шуток, которые я хочу показать, когда сайт строится на определенной c дате. Вещь повседневного статуса. Я установил коллекцию файлов, сделал свой шаблон, все замечательно. Проблема заключается в том, чтобы в назначенную дату одновременно появлялся только один.

Моя первая мысль заключалась в том, чтобы добавить date: 2020-06-17 к началу, а затем запустить проверку, чтобы увидеть, совпадает ли это с сегодняшней датой, но это, похоже, противоречит предполагаемой дате Джекила. Поэтому я изменил тег переднего плана на show: 2020-06-17 просто для устранения неполадок.

Итак, теперь у меня есть для l oop, в котором показаны все мои замечания вроде этого:

{% for quip in site.quips %}
    (this is where my HTML is and it loops and renders each collection file perfectly)
    {% if quip.show == "2020-06-17" %}
        It's working. (this is where the quip HTML will go but I'm isolating it)
    {% endif %}
 {% endfor %}

Это все вручную, на обложке буквально написано show: 2020-06-17, но, очевидно, я ' Я бы хотел, чтобы дата автоматически определялась, подробнее об этом чуть позже. … Но он не печатает «Работает». Как ни странно, когда я меняю начальную часть на show: foo в одном из файлов моей коллекции, он показывает «Работает». Кроме того, когда я меняю его на номер 1, он не работает. Итак, похоже, что Джекиллу не нравятся числа в качестве первого символа в `` == `.

Итак, в основном это то, что я хотел бы сделать:

У меня есть набор переменных используя это:

{% capture my_var %}{{ "now" | date: "%Y-%m-%d"}}{% endcapture %}

Я добавил это вверху моей страницы, чтобы получить дату (после того, как некоторые другие вещи, похоже, не работали)

… это выводит чисто на 2020- 06-17 (что подтверждено вызовом переменной и просмотром вывода HTML.)

Итак, я хотел бы поместить это в свою коллекцию l oop:

{% if quip.show == "{{ my_var }}" %}
    It's Working
{% endif %}

(кавычки вокруг {{my var}} меня немного сбивают с толку, потому что компилятор жалуется, если их нет, но без них что-то работает ненадежно. Понятия нет, это не основная проблема, а та, которая Мне нужно решить).

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

Я действительно не против использования встроенного в Jekyll интерфейса даты или даже имени файла - его бывает только один в день. Я пробовал так много вещей, и по какой-то причине я просто не могу заставить это работать, когда я использую значение numeri c в операторе ==.

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 19 июня 2020

Это происходит из-за того, что первым делом является YAML, а YAML может оказаться более умным, чем вы думали. *

Итак, если я JSON напечатаю такой date, определенный во вступительной части, тогда он будет отображаться как дата:

{{ quip.date | json }}

2020-06-17 00: 00:00 + 0200

Итак, если вы хотите сравнить даты в начале и в день, вам придется отформатировать обе даты.

{% assign now = "now" | date: "%Y-%m-%d" %}
{% assign show = quip.show | date: "%Y-%m-%d" %}
{% if show == now %}
  <p class="fresh-from-the-day">quip.title</p>
{% endif %}
...