Назначение даты произвольного поля переменной в LocomotiveCMS

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

У меня есть модель для news_items с полем даты, которое называется news_date. Я хочу просмотреть каждую запись модели и начать новый раздел всякий раз, когда наступает новый год. Мой план был довольно простым:

{% assign curYear = "" %}
{% for news in contents.news_items %}
  {% assign prevYear = curYear %}  
  {% assign curYear = news.news_date.year %} <-- this does not work
  {% if prevYear != curYear %}
    <h1>Press Releases for {{ news.news_date | format_date: '%Y' }}</h1>
  {% endif %}
  <p>{{curYear}}</p> <-- this is always empty
  <p>{{news.content}}</p>
{% endfor %}

Я пробовал различные другие синтаксисы, такие как Time.parseTime(news.news_date).year, но похоже, что вы не можете делать произвольный Ruby в Liquid. Есть ли способ добиться того, чего я хочу, здесь?

Спасибо за твою помощь!


person Eve Freeman    schedule 31.08.2012    source источник


Ответы (1)


Благодаря полезному человеку из группы google мне указали на тег capture, который фиксирует то, что в противном случае выводилось бы на странице в переменную:

Вместо этого (или различных итераций, которые я пробовал с assign):

{% assign curYear = news.news_date.year %} 

Это прекрасно работает, используя фильтр format_date:

{% capture curYear %} {{ news.news_date | format_date: '%Y' }} {% endcapture %}
person Eve Freeman    schedule 02.09.2012