Апостроф CMS, имеющий дело с подмножествами частей и отношений - PullRequest
1 голос
/ 23 сентября 2019

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

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 ближайших будущих событий на странице?

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

1 Ответ

1 голос
/ 23 сентября 2019

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

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

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

Просто чтобы завершить, вы можете увидеть реализацию "предстоящего" фильтра курсора для 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) также использует этот фильтр по умолчанию, но также поддерживает просмотр по дате, который переопределяет его для предоставления доступа к прошлым событиям.

...