2013-09-08 2 views
1

Я пытаюсь продвигать контент на странице. Это содержимое должно содержать предстоящий контент, т. Е. Следующий в одном и том же типе («событие»).Как показать «предстоящий» контент на основе его даты на 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]: %>.

Любой указатель очень ценится.

ответ

2

Попробуйте это:

next_events: (database) -> 
    @getCollection("events") 
     .createLiveChildCollection() 
     .setFilter("upcoming", (event, searchString) -> 
      return moment(event.eventDate, "YYYY-MM-DD").diff(moment()) < 0 
     ) 
     .query() 
+0

Не работает, она по-прежнему отображает их все. Если я меняю компаратор (от < to >), он ничего не отображает. Я уверен, проблема связана с фильтрующей частью. Я пробовал разные функции из moment.js, не повезло. – DjebbZ

+1

'event' на самом деле будет моделью, поэтому, если' eventDate' является атрибутом, вам, вероятно, нужно будет 'event.get ('eventDate')' – balupton

+1

Возможно, DocPad должен предоставить интерактивный CLI для доступа к базе данных так что вы можете истечь с запросами и результатами – balupton