Ich habe einen Inhaltsteil, der eine Begin Timestamp und End Timestamp Option bietet. Diese 2 Felder werden verwendet, um einen Zeitraum zu definieren, in dem der Inhalt angezeigt werden soll.Wie kann ich die Anzeige eines Inhalts in Orchard CMS überspringen?
Ich habe jetzt Schwierigkeiten, einen Skip-Ansatz zu implementieren, während Inhaltselemente nicht angezeigt/übersprungen werden sollten, wenn die Zeitspanne nicht die aktuelle Zeit umfasst.
Graben in dem Quellcode und zu versuchen, einen Einstiegspunkt für meinen Ansatz zu finden, ergaben den folgenden Content-Handler
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
}
}
}
Dies funktioniert, aber es gibt einige Nebenwirkungen
- musste ich ändern der Quellcode von
BuildDisplayContext
alsShape
ist normalerweise nur lesbar - List Shape möglicherweise einen falschen Pager angezeigt, wenn es Inhaltselemente mit meinem Inhalt Teil enthält, weil die
Count()
Anruf inContainerPartDriver.Display()
wird ausgeführt, bevorBuildDisplay()
- die URL eines Content-Objekts aufrufen, die Ergebnisse in einer Ausnahme übersprungen, weil
View(null)
abigious ist
Also, was hier der richtige Ansatz wäre, oder gibt es ein Modul in Existenz, die den Job macht? Ich konnte keinen finden.
Sie könnten in Erwägung ziehen, stattdessen nur ein "Unpublish" -Ereignis zu registrieren, wenn die Zeitspanne abläuft – devqon
@devqon Ja, ich dachte darüber nach . Dies würde jedoch eine Art Hintergrundaufgabe erfordern, die regelmäßig ausgeführt wird, und diese Aufgabe muss alle Inhaltselemente abfragen, um nach den richtigen zu suchen, um die Veröffentlichung rückgängig zu machen. Außerdem bin ich kein Fan von der Aufhebung der Veröffentlichung, da dies den Benutzer verwirren könnte, der zuvor auf die Schaltfläche zum Veröffentlichen geklickt hatte. Ich hoffe immer noch, dass es eine Möglichkeit gibt, das Rendern einer Form auf sichere Weise irgendwie abzubrechen ... – ViRuSTriNiTy
Es kann sein, dass Sie das Rendern stoppen können, aber dann haben Sie immer noch Probleme mit der Zählung, wie Sie erwähnt haben. Aus diesem Grund schlägt das Paging wahrscheinlich fehl und wahrscheinlich auch mehr. – devqon