Navigation bei Custom Content Types
Eins meiner Steckenpferde in Habari sind benutzerdefinierte Inhaltstypen. Diese ermöglichen es auf sehr einfache Art, verschiedene Inhalte, zum Beispiel Textartikel, Podcasts und Eventberichte, verschieden darzustellen und mit verschiedenen Metainformationen zu versehen, ohne auf eine einheitliche Verwaltung verzichten zu müssen.
Da auf diese Weise auch Inhalte erzeugt werden können, die nicht in der Hauptansicht des Blogs auftauchen sollen, beispielsweise Blogroll-Links, verwendet die Navigation in den meisten Themes nur den Standardtyp "Eintrag". Das ist vor allem dann ärgerlich, wenn man in der Einzelansicht zum nächsten Post navigieren möchte - alle anderen Inhaltstypen werden übersprungen.
Für mein Theme The View Inside habe ich dafür eine Lösung entwickelt, die ich euch nun vorstellen möchte.
Der obige Code wird vor dem Punkt, an dem die Single-Navigation angezeigt werden soll, eingefügt. Er verwendet eine vom Theme gesetzte Variable namens content_types (darauf gehe ich gleich ein). Die Variable ist ein Array, welches durchlaufen wird, dabei werden alle Content Types mit OR verkettet. Anschließend wird das letzte OR abgeschnitten (falls jemand eine elegantere Variante dafür kennt, wäre ich dankbar für einen Hinweis) und das Ergebnis per AND mit dem Post-Status verknüpft. Die nächsten beiden Zeilen holen das Datum mit ins Boot, so dass in den letzten beiden Zeilen jeweils ein älterer und ein neuerer Post zu den angegebenen Bedingungen geholt wird. Bei den dort verwendeten Methoden handelt es sich um die Methoden, die ohne Parameter jeweils den vorherigen und nächsten Post des gleichen Typs zurück geben.
Die Variable $content_types enthält die Inhaltstypen, die der Benutzer in der Theme-Konfiguration ausgewählt hat. Der obere der folgenden Codeblöcke enthält den Code, der das Auswahlfeld erzeugt, der untere den Code, der die Variable setzt. Dabei ist $ui im oberen Block das FormUI-Objekt der Theme-Konfiguration und $ui->general verweist auf ein Fieldset in dieser FormUI - das tut nichts weiter als Optionen zu einer Gruppe zusammenzufassen.
action_theme_ui( $theme )
action_add_template_vars()

Schreibe den ersten Kommentar!
Einen Kommentar abgeben