Um eine individuelle Seiten Navigation aufzubauen hat concrete5 das Block-Element Page-List. Die PageList hat schon eine Fülle von Filtermethoden und Sortiermöglichkeiten. Trotzdem benötigt man ab und zu einen weiteren individuellen Filter, beispielsweise um nur Seiten aufzulisten, die man im Bereich "Aktuelles" einstellen möchte. Die Standardfilter nach Erstell-Datum, nach "hervorgehoem" oder nach Berechtigungen sind dazu oftmals nicht passend. concrete5 unterstützt dies auf geniale Weise.
Was ist zu tun
Zuerst definiert mal ein neues Seiten-Attribut beispielsweise vom Typ Checkbox mit der Kennung "kn_aktuell"
Hier ist es wichtig sich den Kennungs-Namen zu merken, warum werden wir gleich sehen.
Dann leitet man sich den page_list Controller ab, wie das zu machen ist wurde bereits hier beschreiben.
Und jetzt kommt die geniale Funktion von concrete5 zum tragen, automatisiert Filterfunktionen bereitzustellen, die von den Seitenattributen abgeleitet werden.
Im page_list - Controller muss jetzt nur noch folgende Funktion aufgerufen werden:
public function on_start() { #...... if ( <deine Bedingung, was auch immer> ){ $cakt = CollectionAttributeKey::getByHandle('<b>kn_aktuell</b>'); if (is_object($cakt)) { $this->list->filterByKnAktuell(1); } # ..... }
Die von concrete5 bereitgestellte Filterfunktion ergibt sich, wie von selbst, aus dem Kennungs-Namen:
kn_aktuell -> Filterfunktion: filterByKnAktuell()
fertig !!
Ab jetzt werden nur noch Seiten aufgelistet, die das Checkbox Flag "kn_aktuell" gesetzt haben, wenn die Bedingung, die im Controller eingestellt wurde, erfüllt ist.