ThemeBuilderEdits::showing() splits the live templates that show a layout into editable ones (named under templates) and a hidden_templates count; confirm is still decided on all of them, so a layout shown only by uneditable templates still needs confirm. The live split is read once per write for the confirm check and the field warnings, and field warnings now also survive a non-confirm refusal such as the P9 backup refusal (M-12 a). replace-text passes hidden_templates on; the write schema lists it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
8.6 KiB
Divi Theme Builder
Der Theme Builder legt fest, wie Kopfzeile, Inhalt und Fußzeile für bestimmte Seiten aussehen – z. B. für alle Einträge eines eigenen Inhaltstyps. Eine Vorlage hat Bedingungen („gilt für alle Personen“) und bis zu drei Layouts (Kopfzeile, Inhalt, Fußzeile). Die Standardvorlage gilt überall, wo keine andere greift; ihre Kopf- und Fußzeile heißen „global“, weil andere Vorlagen sie mitbenutzen.
Grundregel: nichts wird ohne Freigabe sichtbar
- Neue Vorlagen legt LIT MCP immer deaktiviert an – Besucher sehen nichts davon.
- Aktivieren und Deaktivieren gibt es nur mit
lit/tb-activate, und immer so: Probelauf (Bedingungen, Layouts, andere aktive Vorlagen mit denselben oder verwandten Bedingungen unteroverlaps/possible_overlaps) → Nutzer fragen → dieselbe Anfrage mitconfirm: true. - Auch alles andere, was Besucher sofort sähen, ist zuerst ein Probelauf (
confirm_required) und brauchtconfirm: true: Bedingungen einer aktiven Vorlage ändern (lit/tb-assign) und ein Layout ändern, das eine aktive Vorlage zeigt (dielit-divi-…-Werkzeuge; die Antwort nennt die Vorlagen untertemplates, solche ohne Berechtigung nur als Anzahlhidden_templates). Vor dem Speichern eines sichtbaren Layouts entsteht eine Revision; sind Revisionen abgeschaltet, eine Sicherungskopie im Papierkorb (backup_id). lit/divi-replace-textändert sichtbare Layouts nicht; solche Änderungen mitlit-divi-updateundconfirm: truevornehmen.- Die Standardvorlage ändert LIT MCP nicht (nur im Theme Builder).
Werkzeuge (über mcp-adapter-execute-ability)
lit/tb-list: alle Vorlagen mitenabled,live(für Besucher wirksam), Bedingungen (use_on,exclude_fromund Beschriftungen), Layouts (id, Titel,shared_with= andere Vorlagen mit demselben Layout) undtemplate_rev.template_id: nur diese Vorlage.conditions: trueliefert alle Bedingungen, die Divi anbietet; eine ID, die auf „:“ endet, braucht ein Objekt am Ende, z. B.singular:post_type:page:id:42.detachedzeigt Vorlagen, die ein Speichern im Theme Builder entfernt hat (siehe unten);draft_pendingzeigt ungespeicherte Änderungen im Theme Builder.lit/tb-create-template:title, je Bereich (header,body,footer)source:"new"(neues Layout; optionalnodeswie beilit-divi-insertundtitle),"global"(Kopf-/Fußzeile der Standardvorlage mitbenutzen; nicht fürbody),"default"(nichts Eigenes, Standard bei fehlender Angabe) oder"hidden"(Bereich ausblenden). Optionaluse_on/exclude_from. Alles oder nichts: schlägt ein Schritt fehl, entfernt LIT MCP alles wieder. Antwort:template_id,template_rev,enabled: false,layouts.lit/tb-assign: Bedingungen ersetzen (template_id,template_rev,use_on). Fehltexclude_from, bleiben die bisherigen Ausnahmen;[]entfernt sie. Der Probelauf einer aktiven Vorlage zeigt vorher/nachher (before,after) und Überschneidungen. Die Antwort nennt die bisherigen Bedingungen unterprevious.lit/tb-activate:enabled: trueoderfalse(template_id,template_rev). Deaktivieren ist der schnelle Weg zurück. Zum Aktivieren müssen alle Layouts der Vorlage noch aktiv sein.- Layouts bearbeiten:
lit-divi-outline,lit-divi-node-get,lit-divi-insert,lit-divi-update,lit-divi-move,lit-divi-delete… mit der Layout-ID alspost_id(auslit/tb-list). Benutzt eine andere Vorlage dasselbe Layout (shared_with), wirkt die Änderung auch dort. Das Modul „Beitragsinhalt“ (post-content) gibt es nur im Inhalt-Layout, nicht in Kopf- oder Fußzeile.
Bedingungen
Erlaubt sind nur die Bedingungen, die Divi selbst anbietet (lit/tb-list mit conditions: true), höchstens 50
je Liste. Ein Objekt am Ende (Seite, Beitrag, Begriff, Person) muss existieren und für das Konto lesbar bzw.
zuweisbar sein; sonst lautet die Antwort wie bei einer unbekannten ID. Bedingungen für Autoren
(archive:user:id:…) verlangen das Recht, Benutzer aufzulisten (list_users) – strenger als Divi.
Felder im Inhalt-Layout (Dynamic Content)
Im Inhalt-Layout zeigen Platzhalter die Daten des jeweiligen Eintrags: {{post:title}}, {{post:excerpt}},
{{post:date}} und Felder als {{field:<Schlüssel>}}. Welche Felder ein Inhaltstyp hat und welche Divi als Text
zeigt, liefert lit/divi-dynamic-sources mit post_type. Nur textartige Felder eignen sich: Bei Auswahlfeldern
zeigt Divi den gespeicherten Wert, nicht die Beschriftung; Beziehungs- und Dateifelder zeigen nur IDs, Pods mit
Tabellen-Speicherung gar nichts.
LIT MCP prüft die Felder eines geänderten Inhalt-Layouts gegen die Inhaltstypen aus den Bedingungen
(singular:post_type:<typ>:…) der Vorlagen, die das Layout benutzen, und warnt (warnings) – gespeichert wird
trotzdem. Das gilt für die Kurzform {{field:…}} und für Felder, die im Divi-Builder über „Benutzerdefiniertes
Feld“ gewählt wurden. Bei einem sichtbaren Layout stehen die Warnungen schon im Probelauf. Ohne solche Bedingung
bleiben die Felder ungeprüft (die Antwort sagt das). Kopf- und Fußzeile werden nicht geprüft.
Wenn der Theme Builder gerade offen ist
- Hat der Theme Builder ungespeicherte Änderungen (Entwurf,
draft_pending), lehnenlit/tb-create-template,lit/tb-assignund das Aktivieren ab: erst dort speichern oder verwerfen. - Deaktivieren (
lit/tb-activatemitenabled: false) geht immer – auch dann, und auch bei einer aktiven Vorlage im Papierkorb. Die Antwort warnt: Speichert jemand ein offenes Theme-Builder-Fenster, kann Divi seinen eigenen Stand wiederherstellen; danach mitlit/tb-listprüfen. - Speichert jemand in einem Theme-Builder-Fenster, das vor dem Anlegen einer Vorlage geöffnet wurde, entfernt
Divi die neue Vorlage wieder aus der Liste und löscht sie 7 Tage später.
lit/tb-listzeigt sie dann unterdetached(mitmarked_unused). Nur auf ausdrücklichen Wunsch:lit/tb-assignmitreattach: trueordnet sie wieder zu – immer deaktiviert, und nur, wenn ihre Layouts noch aktiv sind.
Rechte
- WordPress: „Beiträge anderer bearbeiten“ (
edit_others_posts) und „Design bearbeiten“ (edit_theme_options); je Vorlage und Layout das Recht, sie zu bearbeiten; zum Anlegen zusätzlich „veröffentlichen“ (Divi legt Vorlagen und Layouts sofort aktiv an). - Divi → Rollen-Editor: „Theme Builder“ – standardmäßig nur für Administratoren.
- Fehlt eines davon, gibt es für dieses Konto keine Vorlagen und Layouts (
not_foundwie bei einer unbekannten ID bzw.forbidden). Vorlagen, die das Konto nicht bearbeiten darf, erscheinen nirgends; aktive davon nur als Anzahl (hidden_liveinlit/tb-list,hidden_overlapsim Probelauf,hidden_templatesbeim Ändern eines Layouts). - Einstellungen → LIT MCP → Tools: Gruppe „Divi Theme Builder“ auf „nur lesen“ sperrt jedes Schreiben, auch über
die
lit-divi-…-Werkzeuge; deaktiviert gibt es keine Vorlagen und Layouts.
Globale Module im Theme Builder
lit/library-make-global wandelt keine Knoten in Theme-Builder-Layouts um. Stattdessen den Abschnitt mit
lit/library-save (scope: "global") speichern und mit lit-library-insert (mode: "global") einfügen
(lit-guide topic divi-library).
Rückgängig machen
Vorlagen haben keine Revisionen: lit/tb-assign nennt die bisherigen Bedingungen (previous), lit/tb-activate
schaltet zurück; jede Änderung steht im Protokoll. Layouts erhalten wie Divi-Seiten eine Revision. Neu angelegte
Vorlagen im Divi Theme Builder löschen.
Ablauf: Vorlage für einen Inhaltstyp (custom-post-type-vorlage)
- Inhaltstyp und Felder klären:
lit-content-types, dannlit/divi-dynamic-sourcesmitpost_type. lit/tb-listlesen: gibt es schon eine Vorlage für den Typ? Gibt es eine globale Kopf-/Fußzeile?- Mit dem Nutzer den Aufbau abstimmen (welche Felder, welche Reihenfolge, Kopf-/Fußzeile global oder eigen).
lit/tb-create-templatemituse_on: ["singular:post_type:<typ>:all"],header/footermeist{"source": "global"},bodymitsource: "new"undnodes(Überschrift{{post:title}}, Texte mit{{field:…}}, das Modulpost-content, wenn der Eintrag eigenen Inhalt hat). Warnungen zu Feldern beachten.- Das Inhalt-Layout bei Bedarf mit
lit-divi-outline/lit-divi-updateverfeinern (Layout-ID alspost_id; solange die Vorlage deaktiviert ist, ohne Probelauf). - Den Nutzer bitten, die Vorlage im Theme Builder anzusehen (Vorschau eines Eintrags ist erst nach dem Aktivieren möglich).
- Erst auf ausdrücklichen Wunsch:
lit/tb-activatemitenabled: true– Probelauf zeigen, dannconfirm: true.