Admin – Theme-Verwaltung & Theme-Marktplatz
Auf dieser Seite
English (summary)
/admin/themes(CMS/admin/themes.php→ThemesModule) lists installed themes fromCMS/themes/, activates (activate) and deletes (delete) them. The active theme and the last remaining theme cannot be deleted./admin/theme-marketplace(CMS/admin/theme-marketplace.php→ThemeMarketplaceModule) reads a remote catalog (defaulthttps://365cms.de/marketplace/themes, settingtheme_marketplace_url), caches it for 15 minutes and installs ZIP packages (install) from an allow-listed set of hosts, requiring a valid SHA-256 checksum. The menu entry is hidden whenmarketplace_enabled = 0.
Deutsch
Theme-Verwaltung (/admin/themes)
| Bestandteil | Datei |
|---|---|
| Einstieg | CMS/admin/themes.php |
| Modul | CMS/admin/modules/themes/ThemesModule.php |
| View | CMS/admin/views/themes/list.php |
| Core | CMS/core/ThemeManager.php (getAvailableThemes(), switchTheme(), healthCheckTheme(), deleteTheme()) |
- Anzeige: Name, Version, Autor, Beschreibung, Screenshot und Status jedes Themes aus
theme.json/style.css. - Aktivieren (
activate):ThemeManager::switchTheme()führt vorher einen Health-Check aus (style.cssvorhanden,index.phpoderfunctions.phpvorhanden, alle PHP-Dateien syntaktisch gültig). Schlägt er fehl, bleibt das bisherige Theme aktiv. - Löschen (
delete): entfernt das Theme-Verzeichnis. Nicht möglich für das aktive Theme und das letzte verfügbare Theme. - Customizer-Werte (
cms_theme_customizations) bleiben beim Wechsel pro Theme erhalten.
Theme-Marktplatz (/admin/theme-marketplace)
| Bestandteil | Datei |
|---|---|
| Einstieg | CMS/admin/theme-marketplace.php |
| Modul | CMS/admin/modules/themes/ThemeMarketplaceModule.php |
| View | CMS/admin/views/themes/marketplace.php |
| Installation | CMS/core/Services/UpdateService.php (Download, Prüfsumme, Entpacken) |
Katalogquelle: Einstellung theme_marketplace_url (Einstellungen → Allgemein → Marketplace), Standard https://365cms.de/marketplace/themes. Der Katalog (max. 1 MB, Manifeste max. 512 KB) wird 15 Minuten in theme_marketplace_catalog_cache zwischengespeichert.
Erlaubte Hosts für Katalog und Pakete: 365cms.de, www.365cms.de, 365network.de, www.365network.de, github.com, api.github.com, codeload.github.com, objects.githubusercontent.com, raw.githubusercontent.com.
Manifest-Felder (Auszug): slug, name, description, version, author, download_url/package_url, sha256/checksum_sha256, package_size, requires_cms/min_cms_version, requires_php/min_php, tested_up_to, screenshot, homepage_url, docs_url, changelog_url, is_paid, price_amount, price_currency, purchase_url.
Installation (action=install, Feld theme):
- Theme muss im Katalog vorhanden und noch nicht installiert sein.
- Paket nur als
.zip, max. 100 MB; Archiv max. 2000 Einträge und 50 MB entpackt (Schutz vor ZIP-Bomben und Pfad-Traversal). - Eine gültige SHA-256-Prüfsumme (
sha256/checksum_sha256) ist Pflicht – ohne sie brichtUpdateService::downloadAndInstallUpdate()ab (updates.install.integrity_hash_missing); das Prüfergebnis wird angezeigt. - Zielverzeichnis
CMS/themes/<slug>/darf noch nicht existieren. - Kostenpflichtige Themes (
is_paid) werden mit Preis und Kauf-Link angezeigt statt installiert.
Danach erscheint das Theme unter /admin/themes und kann aktiviert werden.
Marketplace deaktivieren
Einstellungen → Allgemein → Marketplace aktivieren (marketplace_enabled = 0) blendet die Marketplace-Menüpunkte für Themes und Plugins aus.
Verwandte Dokumente
../plugins/MARKETPLACE.md · ../../workflow/MARKETPLACE-WORKFLOW.md · ../../theme/THEME-DEVELOPMENT.md