PageMeister
Foundation for the PageMeister visual page builder plugin.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/lankahack/pagemeister/archive/refs/heads/main.zipPageMeister ist das Grundgeruest fuer ein modernes WordPress-Plugin, das langfristig als visueller Page-Builder mit HTML-Import und HTML-Export ausgebaut wird.
Projektstatus
Der aktuelle Stand enthaelt die technische Foundation des Plugins:
- WordPress-Plugin-Einstiegspunkt mit Plugin-Header
- OOP-Bootstrap mit Namespace-basiertem Autoloading
- Aktivierungs-, Deaktivierungs- und Uninstall-Logik
- Admin-Menue
PageMeistermit erstem Builder-Einstiegspunkt - Capability-Schicht fuer Builder-Zugriff
- Builder-Adminseite mit App-Root (
#pagemeister-app-root) - vorbereitete Ordnerstruktur fuer Admin, Builder, Rendering, Import, Export und Tests
- saubere, screen-spezifische Einbindung der Editor-Assets
- Vite-, React- und TypeScript-Build-Setup fuer den Editor
Installation
- Den Plugin-Ordner in
wp-content/plugins/pagemeisterablegen. - Im WordPress-Admin das Plugin
PageMeisteraktivieren. - Sicherstellen, dass die Zielumgebung mindestens WordPress 6.5 und PHP 8.1 verwendet.
Entwicklung
Die Plugin-Foundation orientiert sich an einer modularen Struktur:
pagemeister.phpstartet das Plugin und registriert zentrale Hooks.includes/Coreenthaelt Bootstrap, Autoloader und Lifecycle-Klassen.includes/Administ fuer spaetere Admin- und Editor-Integration vorgesehen.src/editorenthaelt die React-TypeScript-Quellen fuer den Builder.src/editor/components,src/editor/storesundsrc/editor/utilstrennen UI, Status und Hilfsfunktionen.build/editorist das Ziel fuer gebaute Assets aus Vite.
Frontend-Build
Verfuegbare Skripte:
npm installinstalliert alle Frontend-Abhaengigkeiten.npm run devstartet den Vite-Dev-Server fuer die Editor-Entwicklung.npm run buildschreibt das Produktionsbundle nachbuild/editor.npm run previewstartet eine lokale Vorschau des Vite-Bundles.npm run lintprueft das Frontend inklusive Tests per ESLint.npm run typecheckprueft die TypeScript-Typen.npm run test:unitfuehrt Frontend-Unit-Tests mit Vitest aus.npm run test:e2estartet die Playwright-Grundlage fuer Builder-Flows.npm run checkkombiniert Typecheck und Produktionsbuild.
Custom Widget SDK
PageMeister enthaelt jetzt eine erste SDK-Grundlage fuer externe Widgets.
- Die Runtime-API wird im Builder unter
window.PageMeisterWidgetSDKbereitgestellt. - Widgets koennen zur Laufzeit registriert werden und erscheinen danach in Bibliothek, Properties und Command-System.
- Freie Kategorien werden unterstuetzt; die linke Sidebar gruppiert registrierte Widgets dynamisch.
- Deklarative Export-Mappings koennen direkt am Widget hinterlegt werden und werden vom PHP-HTML-Export fuer unbekannte Widget-Typen verwendet.
- Widget-spezifische Frontend-Assets koennen serverseitig ueber den Filter
pagemeister_widget_assetsangebunden werden.
Dokumentation:
Frontend Rendering und Asset-Loading
PageMeister enthaelt nun eine serverseitige Frontend-Rendering-Schicht mit klar getrennten Verantwortlichkeiten:
includes/Rendering/CssGenerator.php- generiert CSS aus globalen Design-Tokens (
:root-Variablen) und widget-spezifischen Styles pro Node - erzeugt responsive Regeln fuer Desktop/Tablet/Mobile inkl. Sichtbarkeits-Logik
- haengt optional
settings.customCssam Ende an
- generiert CSS aus globalen Design-Tokens (
includes/Rendering/WidgetAssetRegistry.php- ermittelt benoetigte Widget-Assets nur fuer verwendete Widgets
- Standard-Konvention:
assets/frontend/widgets/<widget-type>.css|js - ist ueber den Filter
pagemeister_widget_assetspro Widget erweiterbar
includes/Rendering/FrontendAssetLoader.php- Hook:
wp_enqueue_scripts - laedt nur auf singulaeren Frontend-Seiten mit gespeichertem PageMeister-Modell
- registriert generiertes CSS als Inline-Style und enqueued nur gefundene Widget-Assets
- verwendete Widgets werden aus dem
nodes-Baum ermittelt
- Hook:
Wichtige WordPress-Integrationspunkte
PageMeister\Core\Plugin::registerHooks()registriertwp_enqueue_scriptsfuer den Frontend-Loader.PageMeister\Builder\PageModelRepository::hasStoredModel()verhindert unnoetige Frontend-Arbeit auf Seiten ohne Builder-Modell.- Filter
pagemeister_frontend_widget_typeserlaubt Anpassung der erkannten Widget-Liste vor dem Enqueue.
Beispiel fuer Widget-Assets
assets/frontend/widgets/image.cssassets/frontend/widgets/button.js
Nur wenn image oder button im aktuellen Seitenmodell vorkommen, werden diese Dateien geladen.
Naechste Schritte
- JSON-Seitenmodell und REST-Endpunkte fuer Speichern und Laden definieren.
- Erste Widget-Registry mit Basis-Widgets implementieren.
- Die Builder-UI auf Topbar, Seitenleisten und Canvas ausbauen.