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
Shortcode Beschreibung weinify_blog_list Rendert 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_en Deutscher bzw. englischer Inhaltsblock im strukturierten Format. Sind beide vorhanden, erscheint automatisch ein Umschalter weinhold_blog_list_caption Kurzbeschreibung, wird als Seitenüberschrift und als Kartentitel in Listen-Ansichten verwendet weinhold_blog_list_meta Zeigt alle Schlagwörter des Posts als Badges (ohne rein strukturelle Tags wie modul/weinhold-framework) weinhold_blog_list_section Benannte, einklappbare Sektion, erzeugt automatisch einen Eintrag im Inhaltsverzeichnis weinhold_blog_list_h2 Zwischenüberschrift innerhalb einer Sektion weinhold_blog_list_devtable Entwickler-Tabelle aus einfachem, spaltengetrenntem Text weinhold_blog_list_collapse Frei benannter, einklappbarer Textblock ohne Inhaltsverzeichnis-Eintrag wf_de,wf_en,wf_caption,wf_h2,wf_devtable,wf_collapse Legacy-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.
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.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.
Versionshistorie
Version Datum Änderung 1.0.0 22.09.2026 Einführung der Versionierung.