Расписание истечения срока действия контента в Orchard CMS | Рабочий процесс триггера и т. д.

Как пометить пользовательский тип контента как просроченный/заархивированный после определенной даты/времени в ORchard CMS?

Требование: Я создал пользовательский тип контента: SideBarLinks. Этот тип содержит, среди прочего, два поля:

  • ExpirationDate
    Описательный текст: - Дата, после которой элемент будет помечен как просроченный:
  • ExpirationStatus
    Описательный текст: - Срок действия элемента истек?

См. изображение ниже:
введите здесь описание изображения

Я действительно не уверен, как действовать дальше сейчас. Как я могу запустить некоторую функцию/рабочий процесс/программу, которая будет проверять ExpirationDate и устанавливать ExpirationStatus соответственно (Да/Нет)?

Я вижу, что в Orchard CMS есть похожая функция под названием PublishLater, где мы можем установить дату и время запланированной публикации: введите здесь описание изображения

Как это делается? выполняется ли автоматически Workflow в желаемую дату ScheduledPublish? Буду признателен, если здесь можно будет предоставить более подробную информацию о реализации. Я проверил встроенный модуль Orchard.PublishLater, но не нашел особого смысла.


person D Simm    schedule 12.10.2015    source источник
comment
Используйте модуль ArchiveLater, который является частью основных модулей orchard.   -  person devqon    schedule 13.10.2015
comment
@devqon: я боюсь, что модуль ArchiveLater НЕ подходит для моего требования. По сути, на моем веб-сайте есть АРХИВИРОВАННАЯ страница, на которой будут перечислены заархивированные / просроченные элементы в LIVE !!! Что я действительно хочу, так это то, что после желаемой даты (ExpirationDate) ExpirationStatus должен быть установлен YES и больше ничего не требуется. Возможно ли это с модулем архива?   -  person D Simm    schedule 13.10.2015
comment
Не уверен, что вы имеете в виду, но с модулем ArchiveLater вы можете просто установить «архивировать это, когда эта дата», и когда эта дата наступит, orchard отменит публикацию элемента контента. Это должно привести к тому, что элемент будет невидим во внешнем интерфейсе, или вы где-то забыли запросить опубликованные элементы контента, а не все.   -  person devqon    schedule 13.10.2015
comment
@devqon: на самом деле есть, скажем, 2 категории моего типа контента: либо ДА, либо НЕТ для поля ExpirationStatus. Я только что написал 2 запроса (для использования Projection) для получения элементов с полем ExpirationStatus = YES и NO. Я не хочу вручную устанавливать YES (поле ExpirationStatus) для всех элементов контекста, когда наступает дата   -  person D Simm    schedule 13.10.2015
comment
Реальный вопрос здесь заключается в том, зачем вам нужно создавать собственное поле статуса истечения срока действия, тогда как есть отличный встроенный флаг, который, кажется, делает именно то, что вы пытаетесь сделать.   -  person Bertrand Le Roy    schedule 16.10.2015
comment
@Bertrand Le Roy: Потому что я не хочу отменять публикацию элемента после истечения срока его действия. На веб-сайте есть страница АРХИВИРОВАННАЯ, на которой показан элемент с истекшим сроком действия / заархивированный. Я написал запрос для получения элементов, для которых значение поля ExpirationStatus равно YES. Поэтому мое требование заключалось в том, чтобы после запланированной даты опция ДА выбиралась/обновлялась в элементе автоматически, чего не делает модуль ArchiveLater.   -  person D Simm    schedule 16.10.2015
comment
Затем воспроизведите то, что делает модуль архива позже, но ориентируясь на свой собственный флаг, а не на бит публикации.   -  person Bertrand Le Roy    schedule 26.10.2015
comment
@Бертран Ле Рой: Хорошо. Будет реализовано в соответствии с вашими словами   -  person D Simm    schedule 26.10.2015


Ответы (1)


В галерее Orchard есть модуль, который делает именно это https://gallery.orchardproject.net/List/Modules/Orchard.Module.Orchard.ArchiveLater

Если вы хотите, чтобы он использовал ваши собственные поля, вам придется изменить его.

person Xeevis    schedule 12.10.2015
comment
Спасибо за ответ. Я боюсь, что модуль ArchiveLater НЕ подходит для моего требования. По сути, на моем веб-сайте есть АРХИВИРОВАННАЯ страница, на которой будут перечислены заархивированные / просроченные элементы в LIVE !!! Что я действительно хочу, так это то, что после желаемой даты (ExpirationDate) ExpirationStatus должен быть установлен YES и больше ничего не требуется. Возможно ли это с модулем архива? - person D Simm; 13.10.2015