Как пропустить отображение элемента контента в 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)
это отвратительноИтак, что будет правильным подходом или существует какой-либо модуль, который выполняет эту работу? Я не мог найти один.