Как пропустить отображение элемента контента в Orchard CMS?

У меня есть часть контента, которая предоставляет метки начала и конца. Эти 2 поля используются для определения периода времени, в который должен отображаться элемент контента.

Теперь у меня возникают трудности с реализацией подхода с пропуском, в то время как элементы контента не должны отображаться / пропускаться, когда период времени не охватывает текущее время.

Копание исходного кода и попытка найти точку входа для моего подхода привело к следующему обработчику контента

public class SkipContentHandler : Orchard.ContentManagement.Handlers.ContentHandler
{
  protected override void BuildDisplayShape(Orchard.ContentManagement.Handlers.BuildDisplayContext aContext)
  {
    if (...) // my condition to process only content shapes which need to be skipped
    {
      aContext.Shape = null; // return null shape to skip it
    }
  }
}

Это работает, но есть несколько побочных эффектов

Я должен был изменить исходный кодBuildDisplayContext какShape обычно только для чтенияФорма списка может отображать неправильный пейджер, если он содержит элементы содержимого с моей частью содержимого, потому чтоCount() вызыватьContainerPartDriver.Display() выполняется раньшеBuildDisplay()вызов URL пропущенного элемента контента приводит к исключению, потому чтоView(null) это отвратительно

Итак, что будет правильным подходом или существует какой-либо модуль, который выполняет эту работу? Я не мог найти один.

Ответы на вопрос(1)

Ваш ответ на вопрос