blog-list


Blog-Listen


Das Blog-List-Modul ist die Grundlage für mehrsprachige Modul- und Server-Dokumentation im ganzen Weinhold-Framework – inklusive der Übersichtsseite, auf der du diesen Beitrag gefunden hast, und der Struktur, in der dieser Beitrag selbst geschrieben ist.

Allgemein

Diese Seite nutzt dieses Modul


Die Übersicht auf weinify.de/module ist selbst mit dem Blog-List-Modul gebaut. Der Shortcode weinify_blog_list mit den Parametern tag, style, orderby und order rendert dort die Kachel-Übersicht aller Modul-Beiträge.

Zwei Formate


Für kurze Übersichtsseiten gibt es das einfache wf_de/wf_en-Format mit frei eingegebenem HTML. Für ausführliche Doku-Beiträge (wie diesen hier) gibt es das strukturierte weinhold_blog_list_de/weinhold_blog_list_en-Format mit benannten, einklappbaren Sektionen, automatischem Inhaltsverzeichnis und Entwickler-Tabellen. Beide Formate unterstützen denselben DE/EN-Umschalter.

Core-Hervorhebung


Posts mit dem Schlagwort core, wichtig oder benötigt werden in Listen-Ansichten automatisch nach oben sortiert und mit einem dezenten „Core“-Label hervorgehoben.

Tag-Übersetzungen & Icons


Unter Weinhold → Blog List → Tag-Übersetzungen & Icons lässt sich pro Schlagwort eine englische Übersetzung und ein Icon hinterlegen, die automatisch in der Badge-Anzeige (weinhold_blog_list_meta) und im englischen Sprachblock verwendet werden.

Shortcodes

ShortcodeBeschreibung
weinify_blog_listRendert eine gefilterte Kachel-/Listen-Übersicht. Attribute: tag, style (cards/showcase/timeline/list), limit (Standard 9), orderby (title/date/menu_order), order (ASC/DESC), pin_core (1/0, Standard 1)
weinhold_blog_list_de,weinhold_blog_list_enDeutscher bzw. englischer Inhaltsblock im strukturierten Format. Sind beide vorhanden, erscheint automatisch ein Umschalter
weinhold_blog_list_captionKurzbeschreibung, wird als Seitenüberschrift und als Kartentitel in Listen-Ansichten verwendet
weinhold_blog_list_metaZeigt alle Schlagwörter des Posts als Badges (ohne rein strukturelle Tags wie modul/weinhold-framework)
weinhold_blog_list_sectionBenannte, einklappbare Sektion, erzeugt automatisch einen Eintrag im Inhaltsverzeichnis
weinhold_blog_list_h2Zwischenüberschrift innerhalb einer Sektion
weinhold_blog_list_devtableEntwickler-Tabelle aus einfachem, spaltengetrenntem Text
weinhold_blog_list_collapseFrei benannter, einklappbarer Textblock ohne Inhaltsverzeichnis-Eintrag
wf_de,wf_en,wf_caption,wf_h2,wf_devtable,wf_collapseLegacy-Kurzformen für das einfache Format bzw. Alias-Namen der obigen Shortcodes – in neuem Inhalt die kanonischen weinhold_blog_list_*-Namen verwenden

Dateien

modules/blog_list.php – einzige Datei des Moduls: alle Shortcode-Renderer, Sprachumschalter- und Inhaltsverzeichnis-JS, Tag-Metadaten-Verwaltung, Caption-Speicherung, Zurück-Button-Injektion.

Für Entwickler

Wie Devtables geparst werden


Erste Zeile ist die Kopfzeile, sie bestimmt die Spaltenanzahl. Danach wird jede Zeile in Leerzeichen-getrennte Tokens zerlegt; die ersten N-1 Spalten bekommen je ein Token zugewiesen, die letzte Spalte nimmt den kompletten Rest der Zeile. Endet ein Token mit einem Komma oder enthält es eine offene runde Klammer, läuft die Spalte über das nächste Leerzeichen hinaus weiter (z. B. bleibt „bigint, Auto-Increment“ oder „weinhold_…_get_rows( array $filters, …“ trotz enthaltener Leerzeichen und Kommas in einer Spalte). Seit 2026-09-22 wird daraus ein echtes HTML-table-Element gerendert (vorher nur Text mit br-Umbrüchen).

Inhaltsverzeichnis & Sprachumschalter


Beides läuft rein im Frontend-JS (weinhold_blog_list_inline_js()): buildTocs() sammelt alle Sektionen mit data-toc-title im aktuellen Scope und baut daraus automatisch eine Navigation samt „Alle auf-/zuklappen“-Button, initLangToggles() blendet je nach gewählter Sprache den passenden Block ein/aus und merkt die Wahl in localStorage unter dem Schlüssel weinhold_lang.

Naming-Fix: wf_* vs. weinhold_blog_list_*


Die kanonischen Shortcode-Namen sind weinhold_blog_list_*, die kürzeren wf_*-Namen existieren nur noch als Alias für bereits veröffentlichte, ältere Beiträge. In neuem Doku-Inhalt immer die langen Namen verwenden.

Besonderheiten

weinhold_blog_list_meta zeigt bewusst nicht zwischen „Kategorie“, „Geltungsbereich“ oder „Core“ unterschiedene Badges – im Code sind das alles einfach Tags wie jeder andere auch. Nur rein strukturelle, nicht unterscheidende Tags (modul, weinhold-framework, wichtig, benötigt) werden herausgefiltert.

Shortcodes innerhalb von weinhold_blog_list_collapse werden nicht per do_shortcode() aufgelöst – ein Shortcode wie eine Server-Einbettung darf deshalb nie in einem Collapse-Block stehen, sondern muss direkt auf Beitragsebene, außerhalb aller weinhold_blog_list_*-Wrapper platziert werden.

Der Zurück-Button am Ende jedes Beitrags sowie das Zuklappen/Aufklappen-Verhalten der Sektionen werden über den the_content-Filter automatisch injiziert – Autoren müssen dafür nichts zusätzlich in den Beitrag schreiben.

Versionshistorie

VersionDatumÄnderung
1.0.022.09.2026Einführung der Versionierung.