Я пытаюсь продвигать контент на странице. Это содержимое должно содержать предстоящий контент, т. Е. Следующий в одном и том же типе («событие»).Как показать «предстоящий» контент на основе его даты на Docpad?
Вот как метаданные выглядеть следующим образом:
---
layout: event
date: 2013-12-11
title: Cool event
---
Конфигурация коллекции docpad.coffee файл выглядит как (с помощью moment.js):
collections:
events: (database) ->
database.findAllLive(type: "event", [date: -1])
next_events: (database) ->
@getCollection("events")
.setFilter("upcoming", (event, searchString) ->
return moment(event.eventDate, "YYYY-MM-DD").diff(moment()) < 0
)
Наконец в index.html.eco:
<% for event in @getCollection("next_events").toJSON(): %>
<h3><%= event.title %></h3>
<% end %>
Проблема: он показывает все мои события, а не только будущие. Когда я использую коллекцию events
, она работает по назначению (все события упорядочены по дате desc). Но нет никакой разницы, когда я использую коллекцию next_events
. Я знаю, что, чтобы показать только один, мне нужно будет уменьшить содержимое коллекции с чем-то вроде <% for event in @getCollection("next_events").toJSON()[0]: %>
.
Любой указатель очень ценится.
Не работает, она по-прежнему отображает их все. Если я меняю компаратор (от < to >), он ничего не отображает. Я уверен, проблема связана с фильтрующей частью. Я пробовал разные функции из moment.js, не повезло. – DjebbZ
'event' на самом деле будет моделью, поэтому, если' eventDate' является атрибутом, вам, вероятно, нужно будет 'event.get ('eventDate')' – balupton
Возможно, DocPad должен предоставить интерактивный CLI для доступа к базе данных так что вы можете истечь с запросами и результатами – balupton