XED /Restore

XED /Restore
Photo by Maxim Kotov / Unsplash

Statische Website → Bootstrap-Templates für 3 Plattformen

Erstellt: 2026-03-16 · Aktualisiert: 2026-03-31 Quelle: Strategie-Session XED /Suite Priorität: Mittel · Fällig: nach XED /Restore Live-Test abgeschlossen Pfad: dev/bin/XED-Restore/xed_template.py

Ziel

Ein CLI-Tool das eine statische Website (Output von XED /Restore) analysiert und daraus Bootstrap-basierte Templates für drei Zielplattformen generiert:

XED /Restore → Statische Site auf Disk → xed_template.py → 3 Templates
                                                                  ├── WordPress
                                                                  ├── Ghost
                                                                  └── Jamstack

Erster Testfall

Quelle: https://web.steirischursprung.at/ (Live-WordPress-Site) Archiv: dev/bin/XED-Restore/archive/www.steirischursprung.at/

Archiv-Daten:
→ 1.348 Dateien, ~100 MB
→ ~80 HTML-Seiten, ~200 CSS/JS, ~1.000+ Bilder
→ Original: WordPress + BeTheme (Mfn) + WooCommerce + RevSlider
→ Kein Bootstrap im Original — wird bei der Konversion eingeführt

Warum Bootstrap als gemeinsame Basis?

Das Original-Theme (BeTheme/Mfn) ist proprietär, schwer wartbar und an WordPress gebunden. Bootstrap als Basis bietet:

VorteilBeschreibung
Plattform-unabhängigGleiche CSS-Klassen in WordPress, Ghost und Jamstack
WartbarJeder Webentwickler kennt Bootstrap
ResponsiveMobile-first Grid, keine eigenen Breakpoints nötig
Dokumentierthttps://getbootstrap.com/docs/
SchlankNur die genutzten Komponenten, kein BeTheme-Ballast

Die drei Zielplattformen

1. WordPress-Template

Output: wp-theme/steirischursprung/
├── style.css             ← Bootstrap + Custom CSS + WP Theme-Header
├── functions.php         ← Bootstrap Enqueue, Menü, Widget-Areas
├── header.php             ← Bootstrap Navbar + wp_head()
├── footer.php             ← Bootstrap Footer + wp_footer()
├── index.php             ← Blog-Index
├── page.php               ← Standard-Seite
├── front-page.php         ← Homepage (Hero + Grid)
├── single.php             ← Blog-Einzelbeitrag
├── sidebar.php           ← Bootstrap Sidebar (wenn vorhanden)
├── 404.php
├── assets/
│   ├── css/custom.css     ← Site-spezifische Anpassungen
│   ├── js/custom.js
│   └── img/               ← Theme-Bilder (Logo, Icons)
└── template-parts/
  ├── content-page.php
  └── content-post.php

Import: content.wxr (WordPress eXtended RSS) + wp media import

2. Ghost-Template

Output: ghost-theme/steirischursprung/
├── package.json           ← Ghost Theme Manifest
├── default.hbs           ← Base Layout (Bootstrap + Ghost head/foot)
├── index.hbs             ← Homepage / Post-Liste
├── page.hbs               ← Statische Seiten
├── post.hbs               ← Blog-Einzelbeitrag
├── partials/
│   ├── header.hbs         ← Bootstrap Navbar
│   ├── footer.hbs         ← Bootstrap Footer
│   └── sidebar.hbs
├── assets/
│   ├── css/
│   │   ├── bootstrap.min.css
│   │   └── custom.css
│   ├── js/
│   │   ├── bootstrap.bundle.min.js
│   │   └── custom.js
│   └── img/
└── locales/
  └── de.json           ← Deutsche Übersetzungen

Import: Ghost Content API (JSON) oder Ghost Admin Import

3. Jamstack Static Site

Output: jamstack/steirischursprung/
├── _includes/             ← Shared Partials (11ty/Jekyll-Stil)
│   ├── header.html       ← Bootstrap Navbar
│   ├── footer.html       ← Bootstrap Footer
│   └── head.html         ← Meta, Bootstrap CSS
├── _layouts/
│   ├── base.html         ← Bootstrap Base Layout
│   ├── page.html         ← Seiten-Layout
│   └── post.html         ← Blog-Layout
├── assets/
│   ├── css/
│   │   ├── bootstrap.min.css
│   │   └── custom.css
│   ├── js/
│   │   ├── bootstrap.bundle.min.js
│   │   └── custom.js
│   └── img/
├── content/               ← Seiten als Markdown
│   ├── index.md           ← Homepage
│   ├── impressum.md
│   ├── hotel/index.md
│   └── ...
└── config.yml             ← Site-Konfiguration (11ty/Hugo/Jekyll)

Kein Import nötig — ist direkt deployfähig.


Architektur: 5 Phasen

Phase 1: analyze — Layout-Erkennung (gemeinsam für alle 3)

python3 xed_template.py analyze archive/www.steirischursprung.at/

Identisch zur ursprünglichen T010-Beschreibung:

  1. 5 repräsentative HTML-Dateien vergleichen
  2. Gemeinsamer Anfang = Header-Block
  3. Gemeinsames Ende = Footer-Block
  4. Sidebar-Erkennung
  5. Menüstruktur aus <nav> extrahieren
  6. Layout-Varianten erkennen

Zusätzlich: Design-Elemente identifizieren:

  • Farbschema extrahieren (aus CSS: Primär-, Sekundär-, Akzentfarben)
  • Schriftarten (Google Fonts, lokale Fonts)
  • Hero/Slider-Bereich (Bilder + Texte)
  • Logo-Datei identifizieren

Output: analysis.json — wird von allen drei Generatoren gelesen.

Phase 2: bootstrap — Bootstrap-Konversion (gemeinsam)

python3 xed_template.py bootstrap archive/www.steirischursprung.at/

Das Original-CSS (BeTheme) wird in Bootstrap-Äquivalente übersetzt:

Original (BeTheme/Mfn)Bootstrap-Äquivalent
<div class="container_12"><div class="container">
<div class="grid_8"><div class="col-md-8">
<nav id="menu"><nav class="navbar navbar-expand-lg">
Custom responsive CSSBootstrap Grid + Utilities
RevSliderBootstrap Carousel
<aside class="sidebar"><div class="col-md-4">

Output:

  • bootstrap-base/header.html — Bootstrap Navbar mit Original-Menüstruktur
  • bootstrap-base/footer.html — Bootstrap Footer
  • bootstrap-base/custom.css — Site-spezifische Farben/Fonts über Bootstrap-Variablen
  • bootstrap-base/content/ — Extrahierter Content pro Seite (reines HTML)

Phase 3a: generate --target wordpress

Nimmt bootstrap-base/ und erzeugt WordPress-Theme:

  • HTML → PHP mit WordPress Template Tags
  • Menü → wp_nav_menu()
  • Content → WXR-Export
  • Bilder → Media-Mapping

Phase 3b: generate --target ghost

Nimmt bootstrap-base/ und erzeugt Ghost-Theme:

  • HTML → Handlebars (.hbs) mit Ghost Helpers
  • Menü → {{navigation}}
  • Content → Ghost JSON-Import
  • Bilder → Ghost Content API Upload

Phase 3c: generate --target jamstack

Nimmt bootstrap-base/ und erzeugt Jamstack-Site:

  • HTML → Includes/Partials
  • Content → Markdown mit Frontmatter
  • Menü → _data/navigation.yml
  • Direkt deployfähig (Netlify, Vercel, GitHub Pages)

Phase 4: import (plattformspezifisch)

# WordPress (braucht WP-CLI)
python3 xed_template.py import --target wordpress --wp-path /var/www/site/htdocs/

# Ghost (braucht Ghost Admin API)
python3 xed_template.py import --target ghost --ghost-url http://localhost:2368 --ghost-key abc123

# Jamstack (kein Import nötig, direkt deployen)
cd jamstack/steirischursprung && npx @11ty/eleventy --serve


CLI-Interface

usage: xed_template.py [-h] {analyze,bootstrap,generate,import,all} ...

Subcommands:
analyze         Statische Site analysieren (Layout, Menü, Farben, Assets)
bootstrap       Bootstrap-Konversion der Layout-Blöcke
generate         Template für Zielplattform generieren
import           Content in Zielplattform importieren
all             Vollständiger Durchlauf (analyze → bootstrap → generate)

Generate arguments:
--target         wordpress | ghost | jamstack (Pflicht)
--bootstrap-ver Bootstrap-Version (Default: 5.3)

Common arguments:
SITE_DIR         Pfad zur statischen Site
-o DIR           Output-Verzeichnis (Default: ./templates/)
-v, --verbose   Detaillierte Ausgabe
--dry-run       Nur analysieren, nichts schreiben

Typischer Workflow:

# Alles auf einmal für alle drei Plattformen
python3 xed_template.py all archive/www.steirischursprung.at/ --target wordpress
python3 xed_template.py all archive/www.steirischursprung.at/ --target ghost
python3 xed_template.py all archive/www.steirischursprung.at/ --target jamstack

# Oder schrittweise
python3 xed_template.py analyze archive/www.steirischursprung.at/
python3 xed_template.py bootstrap archive/www.steirischursprung.at/
python3 xed_template.py generate --target wordpress archive/www.steirischursprung.at/
python3 xed_template.py generate --target ghost archive/www.steirischursprung.at/
python3 xed_template.py generate --target jamstack archive/www.steirischursprung.at/


Prinzipien

  • Stdlib only — wie alle XED-Tools, keine externen Dependencies
  • Bootstrap als gemeinsame Basis — ein Design, drei Plattformen
  • Kein CMS nötig für Phase 1-3 — Template-Generierung ist reines Python
  • 80/20-Regel — funktionierendes Template in Minuten, Feinschliff manuell
  • dev/lib/ wiederverwenden — content_cleaner.py, state_tracker.py

Neue Module (Kandidaten für dev/lib/)

ModulZweck
layout_analyzer.pyHeader/Footer/Sidebar-Extraktion via Byte-Vergleich
bootstrap_converter.pyCSS-Klassen → Bootstrap-Äquivalente
wxr_writer.pyWordPress WXR XML-Generierung
ghost_exporter.pyGhost JSON Content-Export
markdown_exporter.pyHTML → Markdown mit Frontmatter

Schwierige Bereiche

ProblemStrategie
BeTheme Grid → Bootstrap GridMapping-Tabelle für häufige Klassen, Rest manuell
RevSlider → Bootstrap CarouselNur Bilder + Texte übernehmen, keine Animationen
WooCommerce-ProdukteAls statische Seiten, kein Shop-Funktionalität
KontaktformulareWordPress: Contact Form 7, Ghost: Custom, Jamstack: Formspree
Responsive BreakpointsBootstrap-eigene Breakpoints (sm/md/lg/xl), nicht BeTheme
Farben/FontsAus Original-CSS extrahieren → Bootstrap SCSS Variablen

Bezug zur XED /IDE Strategie

Dieses Tool ist der technische Kern des Content-Modus aus der XED /IDE Strategie v2:

Statische Website (XED /Restore)
  ↓ xed_template.py
Bootstrap-Template (WordPress | Ghost | Jamstack)
  ↓ XED /IDE Content-Modus
Bearbeitung + KI-gestützte Content-Erstellung
  ↓ Hosting@ Deploy
Live auf cBUZZ.IO / eigenem Server


Verwandte Dokumente

DokumentPfad
XED /Restore READMEdev/bin/XED-Restore/README.md
XED /Restore DEVELOPMENTdev/bin/XED-Restore/DEVELOPMENT.md
Testdaten (Archiv)dev/bin/XED-Restore/archive/www.steirischursprung.at/
Live-Referenzhttps://web.steirischursprung.at/
XED /IDE Strategie v2dev/bin/XED-IDE/XED-IDE_Strategie-v2.md
XED /IDE Claude Code Vergleichdev/bin/XED-IDE/Claude-Code_im_Zed-Editor.md