апостроф CMS, имеющий дело с подмножествами частей и отношений

Вот мое определение события

module.exports = {
  extend: 'apostrophe-pieces',
  name: 'event',
  label: 'Event',
  pluralLabel: 'Events',
  addFields: [
    {
      name: 'eventName',
      label: 'Event Name',
      type: 'string',
      required: true
    },
    {
      name: 'location',
      label: 'Location',
      type: 'string',
      required: true
    },
    {
      name: 'date',
      label: 'Date',
      type: 'date',
      required: true
    },
    {
      name: 'thumbnail',
      label: 'Thumbnail',
      type: 'singleton',
      widgetType: 'apostrophe-images',
      options: {
        limit: 1,
        minSize: [ 200, 200 ],
        aspectRatio: [ 1, 1 ]
      }
    }
  ]
};

Как я могу использовать на странице только 5 ближайших будущих событий?

Кроме того, если бы я собирался сделать что-то подобное с клиентами, могу ли я использовать их разные подмножества на разных страницах на основе строкового поля, которое идентифицирует их отрасль?


person Nick Ellis    schedule 23.09.2019    source источник


Ответы (1)


Если вы используете модуль apostrophe-events npm, вместо того, чтобы запускать его самостоятельно, то, о чем вы просите, будет поведение модуля apostrophe-events-widgets по умолчанию (показывая следующие 5 событий, которые еще не завершились).

Если вы хотите сделать это самостоятельно, вы можете сделать это, установив для параметра sort вашего events модуля значение { date: 1 } и добавив настраиваемый фильтр курсора для игнорирования событий, дата которых при вызове находится в прошлом. Затем вы должны вызвать этот метод фильтрации из модуля виджетов событий.

Но, поскольку apostrophe-events делает все это за вас с добавлением дополнительных положений для правильной обработки дат начала и окончания, если они вам нужны, я бы не рекомендовал «тратить время на это».

Но для полноты картины вы можете увидеть здесь реализацию "предстоящего" фильтра курсора для apostrophe-events:

https://github.com/apostrophecms/apostrophe-events/blob/master/lib/cursor.js

И вот логика в apostrophe-events-widgets использования этого фильтра для отображения только предстоящих в этом виджете событий, которые вы можете добавить на свою домашнюю страницу, чтобы получить желаемый эффект:

https://github.com/apostrophecms/apostrophe-events/blob/master/lib/modules/apostrophe-events-widgets/index.js.

Модуль apostrophe-events-pages (часть пакета apostrophe-events) также использует этот фильтр по умолчанию, но также поддерживает просмотр по дате, который переопределяет его для предоставления доступа к прошлым событиям.

person Tom Boutell    schedule 23.09.2019