12punkt Baukasten self-updates
WP Plugin: blocks to bootstrap
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/eugenke/12punkt-baukasten/archive/refs/heads/main.zipShips its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.
Layout-Baukasten als ACF-Blocks für Gutenberg, mit Seiten-Templates, Sektionen und Style-Einstellungen. Bringt Bootstrap 5.3 (CSS + JS), Grid-Erweiterungen, Spacing-/Typo-Utilities, Iconfonts (Bootstrap Icons, Font Awesome Free, Material Icons – lokal, zuschaltbar), Photoswipe und Masonry mit. Benötigt ACF Pro.
Blocks
| Block | Inhalt |
|---|---|
zpt/row |
Wrapper → .container(-fluid) → .row. Schrift (am Wrapper), Hintergrund (Farbe, Bild – wiederholen, Breite in % –, Video), Masonry, oben anheften (sticky-top position-sticky, nur Frontend; assets/js/anchors.js setzt scroll-padding-top = Höhe, damit Sprungziele nicht darunter liegen). Enthält nur Spalten (neue Row startet mit einer Spalte) |
zpt/column |
Spalte .zpt-col col-*: Breite pro Breakpoint, Klassen, randabfallend, Schrift (Rolle, Größe, Gewicht, Ausrichtung, Farbe), Hintergrund. Enthält eine oder mehrere Komponenten |
zpt/headline |
Komponente (nur in einer Spalte) |
zpt/text |
dto. |
zpt/image |
dto., optional Photoswipe. Quelle Mediathek oder Theme (Bild aus dem Bilder-Ordner des Themes, s. Logo & Bilder) |
zpt/button |
dto., ein oder mehrere Buttons/Links (Repeater): Link, Stil, Größe je Breakpoint (XS–XXL untereinander, leer = wie kleiner → .btn-sm .btn-md-lg), Icon (Icon-Auswahl, s. Icons) vor/nach dem Text; Ausrichtung (links/zentriert/rechts/verteilt). Stil: sind unter Baukasten → Buttons Varianten angelegt, nur diese, sonst Button/Outline je Farbe – dazu immer .btn-link, .link-further, Link. Kein Template (kommt über die Variante), keine Schrift (Baukasten → Buttons). Stile erweiterbar: Filter zpt/button/styles |
zpt/gallery |
dto., Bilder als Kacheln, Masonry oder Karussell (Bootstrap-Carousel: Pfeile, Punkte, automatisch weiter, überblenden). Raster „pro Reihe“ je Breakpoint → .row-cols-*, Abstand → .g-*. Photoswipe, Bildunterschrift aus der Mediathek, Bildgröße, Seitenverhältnis (zugeschnitten) |
zpt/card |
dto., Bootstrap-Card: Bild, Überschrift, Text, Link. Quelle eigener Inhalt oder Beitrag/Seite (Teaser: Beitragsbild, Titel, Auszug, Link – eigene Angaben gehen vor). Bild oben oder nebeneinander 50/50 bzw. 40/60 (ab MD), Reihenfolge, Link als Button (Stil wie Button-Block) und/oder ganze Card klickbar. Bild aus Mediathek oder Theme |
zpt/accordion |
dto., Bootstrap-Akkordeon: Einträge (Titel + Text), beim Laden offen (erster/keiner/alle), mehrere gleichzeitig offen, ohne Rahmen, Titel-Tag |
zpt/icon |
dto., Icon aus den Icon-Sets (Icon-Auswahl, s. Einstellungen → Icons) oder SVG-Code (bereinigt: nur SVG-Elemente, keine Skripte/Ereignisse – zpt_sanitize_svg()), optional verlinkt, Größe (sonst Schriftgröße), Beschriftung für Screenreader |
zpt/video |
dto., YouTube (youtube-nocookie.com) / Vimeo (dnt=1) – erst nach Klick geladen (Vorschaubild + Hinweis, assets/js/video.js), oder eigene Datei (Steuerung, Autoplay stumm/Schleife). Seitenverhältnis 16:9, 4:3, 1:1, 21:9, 9:16 |
zpt/posts |
dto., Beiträge/Seiten automatisch (Inhaltstyp, Anzahl, Kategorien, Sortierung; ohne den aktuellen Beitrag) oder von Hand, als Kacheln (Raster wie Galerie), Liste oder Akkordeon. Bild, Datum, Auszug, Link-Text (leer = ganze Kachel klickbar). Abfrage änderbar: Filter zpt/posts/query |
zpt/navigation |
dto., WordPress-Menü: Menü oder Menü-Position des Themes („Position: Haupt-Navigation“ – folgt der Zuordnung unter Design → Menüs), Ebenen (nur oberste / mit Untermenüs), horizontal (Untermenüs als Bootstrap-Dropdown) oder vertikal (eingerückt), Stil Links / Pills / unterstrichen / schlichte Liste, Ausrichtung, Klassen je Link. Walker ZPT_Nav_Walker (includes/navigation.php). |
zpt/anchors |
dto., Sprungmarken: Links zu CSS IDs dieser Seite (Repeater Text + ID, z. B. Row-IDs), gleiches Markup wie zpt/navigation (Komponente navigation, Stil/Richtung/Ausrichtung wie dort, Standard „unterstrichen“). Optional aktiven Abschnitt markieren (Scrollspy, assets/js/anchors.js, .active + aria-current) und nicht umbrechen (horizontal wischbar, overflow-x-auto; mittig/rechts dann per Auto-Margin statt justify-content, sonst wäre der Anfang abgeschnitten). Als Leiste oben: Row „Oben anheften“ + Hintergrundfarbe |
Aufbau: Row → Spalte → Komponenten. Spalte und Komponente werden getrennt eingestellt; die Spaltenbreite steht nur an der Spalte.
Die Block-Felder sind in der Seitenleiste in aufklappbare Bereiche gegliedert (ACF-Feld „Akkordeon“
mit Wrapper-Klasse zpt-panel, erster Bereich offen, immer nur einer offen, am Ende ein
Akkordeon-Endpunkt). assets/css/editor.css gleicht sie optisch an die nativen Bereiche („Erweitert“) an.
Bereich CSS (letzter Bereich jedes Blocks): CSS ID (css_id, Row: Wrapper ID + Row ID) und
alle Klassen-Felder (Row: Wrapper, Container, Row, Inline Style; Spalte; Komponenten; Bild: Figure,
Container, Bild, Bildunterschrift). Die CSS ID geht vor dem HTML-Anker aus „Erweitert“; „#“ und
Leerzeichen werden bereinigt (zpt_css_id()). Hilfetext einheitlich
„ohne „.“, trennen mit Leerzeichen“. Ausnahmen (bleiben in ihrer Gruppe): Klassen je Button im
Repeater, Klassen des Hintergrundvideos der Row.
Message (Bild, Galerie – Bereich „Message“, Vorlage group_zpt_tpl_message): Text-Container über dem
Bild bzw. der ganzen Galerie. Position je Breakpoint (oben/Mitte/unten × links/mittig/rechts oder „unter dem
Bild“), Breite je Breakpoint (100 … 25 %, passend zum Text), Innenabstand, Abstand zum Rand,
Hintergrundfarbe und eigene Schrift (Schriftrolle, Gewicht, Farbe; Schriftgröße und Ausrichtung je
Breakpoint → .font-size-{bp}-{stufe}, .text-{bp}-{start|center|end}). Leer = keine Message.
Im Editor in Tabs: Text / Position / Schrift / Hintergrund.
Ausgabe zpt_message_html() → .zpt-has-message + .zpt-message .zpt-msg-{bp}-{pos} .zpt-msg-w-{bp}-{breite}
(scss/components/_message.scss), Klassen über „CSS Message“ im Bereich CSS.
Feldbreiten: In der Seitenleiste ist jedes Feld 100 % breit. Die Breiten in den Feldgruppen
(50 %, 33 %) gelten nur im Expanded Editor („Open Expanded Editor“). Ausnahme: Wrapper-Klasse
zpt-cols-2 an einer Gruppe → deren Felder in der Seitenleiste 2 pro Zeile (Spaltenbreite XS–XXL).
Bereiche Schrift und Hintergrund (Row: nur Schrift, eigener Hintergrund; Spalte und Komponenten; Button: Bereich „Darstellung“ = Ausrichtung + Hintergrund): je ein Klon einer Gruppe aus
group_zpt_tpl_properties – font (Schriftrolle, Schriftgröße, Gewicht, Textausrichtung,
Schriftfarbe) bzw. colors (Hintergrundfarbe). Die Gruppen tragen die Klasse zpt-group-plain
(ohne Rahmen/Titel, die Felder stehen direkt im Bereich). Werte also font_zpt_font_role,
font_color, colors_background_color usw. Die Schriftrolle bietet nur Rollen mit zugeordneter Schrift
(Typografie → Rollen) und speichert den Rollen-Schlüssel (serif, mono …); ausgegeben wird
.font-serif, .font-mono … bzw. für die Grundschrift deren .ff-{schrift} (zpt_font_role_class()).
ausgelesen von zpt_properties() (includes/helpers.php).
Komponenten-Markup überschreiben: Datei aus templates/components/ ins Theme kopieren nach
{theme}/zpt-baukasten/components/{name}.php.
Block-Editor
Der Seitentitel wird im Inhaltsbereich ausgeblendet und rechts in der Seitenleiste (Übersicht bei
Status/Template) als Feld „Titel“ bearbeitet – für Seiten, Beiträge und Sektionen
(Filter zpt/editor/hide_title, leeres Array = Titel wieder normal). Code: includes/editor.php.
Die Seitenleiste des Block-Editors ist 360px statt 280px breit (ab 782px Fensterbreite).
Ändern: add_filter('zpt/editor/sidebar_width', fn() => 400); (0 = WordPress-Standard).
Seiten-Templates und Sektionen
-
Block-Seite (
tmpl-blocks.php): Inhalt der Seite auszpt/row-Blocks. -
Sektionen-Seite (
tmpl-sections_page.php): gibt die im Feld „Sektionen“ gewählten Sektionen nacheinander aus (<section id="section-{slug}" class="zpt-section">). Solche Seiten öffnen im klassischen Editor (Titel, Feld „Sektionen“, Seiten-Attribute; Inhaltsfeld ausgeblendet) – Filteruse_block_editor_for_post, Gutenberg bleibt für alles andere aktiv. Wird im Block-Editor auf „Sektionen-Seite“ gewechselt, lädt die Seite nach dem Speichern klassisch neu (assets/js/editor-sections-page.js); umgekehrt öffnet sie nach Wechsel auf ein anderes Template wieder im Block-Editor. -
Sektionen (CPT
section, Menü „Sektionen“): wiederverwendbare Bereiche, ebenfalls mitzpt/*-Blocks gebaut. Container „wie Seite“ bezieht sich auf die Sektion selbst. Direkt aufgerufen (/section/{slug}/, auch „Vorschau“ im Editor): wer die Sektion bearbeiten darf, sieht sie einzeln mit Header/Footer (templates/single-section.php,noindex, nicht in der Sitemap); alle anderen werden per 302 umgeleitet – auf die erste Seite, die sie im Feld „Sektionen“ hat (#section-{slug}), bei der Footer-Sektion auf/#footer, sonst auf die Startseite (Filterzpt/section/target_url). -
Footer: Das Plugin gibt eine Sektion als Footer aus (
<footer id="footer" class="zpt-footer">, imwp_footer-Hook vor den Skripten, also nach</main>). Welche: Sektion mit Haken „Als Footer verwenden“ (Seitenleiste der Sektion, Feldzpt_footer, immer nur eine), sonst die mit Slugfooter; in der Sektionen-Liste als „Footer“ markiert. Ohne passende Sektion kein Footer. Theme mit eigenem Footer:add_theme_support('zpt-theme-footer');. Andere Position:zpt_the_footer()in derfooter.phpdes Themes aufrufen (wird nur einmal ausgegeben). Filterzpt/footer/section,zpt/footer/enabled. -
Styleguide (
tmpl-styleguide.php): zeigt die Style-Einstellungen zur Kontrolle, Bereich per Feld (Übersicht, Typografie, Farben, Abstände, Buttons). Neben jedem Beispiel stehen die im Browser gemessenen Werte. Seiten sindnoindex. Code:includes/styleguide.php,templates/styleguide/.
Die Templates liegen in templates/ und nutzen get_header()/get_footer() des Themes.
Überschreiben: gleichnamige Datei ins Theme legen. Ausgabe im eigenen Template:
zpt_the_sections() bzw. zpt_the_section($id).
Abstände und Größen (Bootstrap Utility API)
Die Bootstrap-Spacing-Skala ist durch eine 5px-Skala (0–300) ersetzt; die Klassennamen folgen
Bootstrap (logische Seiten s/e statt l/r, Breakpoint vor dem Wert):
| Klasse | Wirkung |
|---|---|
.mt-20, .px-md-40, .p-lg-0 |
margin/padding (m/p + t b s e x y) |
.mt-n20, .ms-lg-n40 |
negative margins |
.gap-10, .g-30, .gx-md-40 |
gap / Grid-Gutter |
.w-35, .w-md-50 |
Breite 0–100 % in 5er-Schritten |
.h-vh-50, .h-vh-md-100 |
Höhe in vh (10er-Schritte) |
.h-px-300, .h-px-lg-400 |
Höhe in px (0–500, 10er-Schritte) |
Achtung: Bootstraps .mb-1 … .mb-4 gibt es nicht mehr, .m-5 ist 5px (nicht 3rem).
Skala ändern (eigener Build): $zpt-spacer-step, $zpt-spacer-count bzw. $spacers.
Einstellungen (Menü „Baukasten“ → Farben, Typografie, Elemente, Buttons, Icons, Logo & Bilder, Layout, Meta Infos, Import / Export)
- Farben → Tab „Einstellungen“: Shade-Skala (Repeater
zpt_shade_scale: Name, Mischen aufhellen/Grundfarbe/ abdunkeln, Anteil in %), Reihenfolge hell → dunkel, genau eine Grundfarbe. Vorlagen (ZPT_SHADE_PRESETS): Bootstrap (100–900), Tailwind (50–950), Simple (light, base, dark) – laden ihre Shades in die Tabelle, danach anpassbar („Eigene“). Benennt man die Grundfarbe um (500 → base), ziehen die Grundfarben der Palette beim Speichern mit. Code:zpt_color_scale(),zpt_color_base(). - Farben → Tab „Farbpalette“ (Repeater
zpt_palette): eigene Farben mit Name (ecos-blau: Kleinbuchstaben, Ziffern, Bindestrich; nicht wie eine Systemfarbe, nicht mit Shade-Endung) und Grundfarbe. Die Shade-Felder (shade_{name}) erzeugt das Plugin aus der Skala als lokale ACF-Unterfelder (acf/include_fields). Leere Shades werden berechnet, eingetragene überschreiben; im Admin live als Platzhalter/Vorschau. Ausgabe:--theme-ecos-blau,--theme-ecos-blau-{shade}, Klassen.text-/.bg-/.border-/.color-/.fill-ecos-blau[-{shade}](inline,zpt_color_classes_css()). - Farben → Tab „Systemfarben“ (Repeater
zpt_system_colors: Name + Farbe, gewählt wie in den Props mit Farbe + Shading, aber nur Palettenfarben, oder „eigene“): ganze Palettenfarbe → deren Shades; mit Shading oder eigene Farbe → wird Grundfarbe, Shades berechnet (zpt_system_color_shades()) →--theme-{name},--theme-{name}-{shade},-hover,-contrast, Shade-Klassen.bg-primary-300usw. (inline). Bootstrap-Namen (ZPT_BOOTSTRAP_THEME_COLORS: primary … dark,ZPT_BOOTSTRAP_BASIC_COLORS: black, white, gray) setzen auch--bs-{name},-rgb(Theme-Farben zusätzlich subtle/emphasis), primary auch die Link-Farben →.text-*,.bg-*,.btn-*,.text-bg-*… folgen. Nicht angelegt gilt Bootstraps Wert (SCSS:--theme-primary: var(--bs-primary)). Eigene Namen (accent) ergeben nur--theme-accent…und.text-/.bg-/.border-/.color-/.fill-accent[-{shade}]– so auch Hintergründe (section→.bg-section,.bg-section-100). - Farben → Tab „WordPress“ (Repeater
zpt_wp_colors, Farbe + Shading): welche Farben in WordPress erscheinen – in allen Farbauswahlen der Komponenten/Einstellungen (Farbe + Shading, außer der Systemfarben-Definition) und in der WordPress-Farbpalette (Block-Editor, Global Styles, TinyMCE;zpt_wp_palette()). Leer = alle (Palette des Editors: alle Grundfarben). Buttons über der Liste (fehlende anhängen): „Gesamte Farbpalette übernehmen“ (Palette mit allen Shades,zpt_wp_palette_shade_tokens()), „nur Grundfarben übernehmen“ (Palette), „Systemfarben übernehmen“. Code:zpt_wp_color_tokens(), JS:zptColors.allowed. - Farbfelder (Props „Hintergrund/Schrift Farbe“, Row-Wrapper, Einstellungen): Textfeld mit
Wrapper-Klasse
zpt-color-field, Vorschau und Farbwähler daneben. Mitzpt-color-tokens(Props, Row, Elemente) statt Textfeld: Auswahl Farbe (Baukasten-Farben, „eigene“ → Textfeld für Hex/Farbname) + Shading (100–900, 500 = Grundfarbe) + Swatch; gespeichert wird ein Wert. Werte:primary,primary-300,tomato,#ff6347. Baukasten-Farben werden alsvar(--theme-…)ausgegeben (zpt_color_value()). - WordPress-Farbpalette: Die Grundfarben (Systemfarben, dann Palette) gehen als Theme-Palette an WordPress
(Filter
wp_theme_json_data_theme,zpt_wp_palette()) – in jeder nativen Farbauswahl (Core-Blocks …) und im Textfarben-Knopf von TinyMCE (klassischer Editor, ACF-WYSIWYG,textcolor_map). WordPress-Standardfarben ausgeblendet. Core-Blocks speichern die Klasse.has-{name}-color(folgt späteren Farbänderungen), TinyMCE einen festen Hexwert. Anpassen/abschalten: Filterzpt/wp_palette. - Typografie (eigene Seite, Postboxen):
- Schriftquellen: WP-Schriftbibliothek (installierte Schriften anhaken, Standard alle),
System-Standard (Stack, Standard
Arial, "Helvetica Neue", Helvetica, sans-serif), Theme-Ordner. - Schriftgrößen: Skala der Stufen (Repeater
zpt_type_scale: Name, Größe, Zeilenhöhe, Fließtext) mit Vorlagen „12punkt“ (sm, copy, copy-l, l, xl, xxl, xxxl) und „Einfach“ (small, base, large, extra-large),ZPT_TYPE_PRESETSinincludes/config.php. Daraus--theme-font-size-{stufe}/--theme-line-height-{stufe}auf:root, Klassen.font-size-{stufe}und.font-size-{bp}-{stufe},bodyin der Fließtext-Stufe sowie die Größen-Felder je Schrift und die Auswahlen „Größe“. - Schriftschnitte & Maße: Repeater, je Zeile eine Schrift aus WP-Schriftbibliothek, System-Standard oder Theme-Ordner
(Feld „Theme-Ordner“: CSS-Dateien werden geladen, sonst
@font-faceaus den Dateien – Familie = Unterordner bzw. Dateiname bis-/_, Gewicht/Stil aus dem Namen). Pro Schrift Größe und Zeilenhöhe je Stufe (leer = Skala) sowie Laufweite je Gewicht (Zeilen je geladenem Gewicht beim Speichern). Ausgabe als Klasse.ff-{schrift}(z. B..ff-inter), die--theme-font-size-*,--theme-line-height-*und--zpt-ls-{gewicht}im eigenen Bereich setzt:.ff-inter.font-size-xl.fw-700= Größe, Zeilenhöhe und Laufweite von Inter. - Rollen: Grundschrift (→
:root), Sans-Serif, Serif, Deko, Mono (.font-serif…). Laufweite greift über.fw-100….fw-900,.fw-bold,strongusw. (_typography.scss). Im Block-Editor: Bereich Schrift → Schriftrolle / Schriftgröße / Gewicht. Code:includes/fonts.php(Laden),includes/typography.php(Werte, Klassen).
- Schriftquellen: WP-Schriftbibliothek (installierte Schriften anhaken, Standard alle),
System-Standard (Stack, Standard
- Elemente (Tabs Überschriften / Text / Auszeichnung / Forms / Klassen, je Element ein Akkordeon mit
Zusammenfassung der gesetzten Werte im Titel): h1–h6, body, p, ul, ol, blockquote, small, figcaption,
hr, strong, em, a; Forms: Feld-Label, Eingabefeld (
.form-control,.form-select+ Textfelder ohne Klasse), Platzhalter, Checkbox-/Radio-Label, Hilfetext, Fehlermeldung; Klassen:.lead,.blockquote-footer,.zpt-sg-label(Styleguide-Beschriftungen). Jedes Element hat nur die passenden Einstellungen: Schrift-Rolle, Gewicht (nur Gewichte der Schrift), Großbuchstaben, Farbe (Token wieprimary-700), Aufzählungszeichen (ul/ol), Hover-Farbe und „nicht unterstrichen“ (a); als Matrix je Breakpoint XS–XXL: Größe (Typo-Stufe), Margin und Padding oben/rechts/unten/links in px (5er-Schritte, Margin auch negativ). Leer = wie umgebend bzw. „wie kleiner“ (leere Felder zeigen den geerbten Wert) – nur XS ausgefüllt gilt also für alle Breiten. Ausgabe mit Element-Selektoren nachzpt.css→ Klassen am Element (.mt-20,.font-size-xl…) gewinnen. Werte:options_zpt_element_{element}_{feld}. Felder werden erzeugt: Elemente und ihre Einstellungen stehen inZPT_ELEMENTS(includes/config.php), danachnpm run build:acf→acf-json/group_zpt_settings_elements.json(nicht im ACF-Backend bearbeiten). Code:includes/elements.php,bin/build-acf-elements.php. Felder werden erst beim Aufklappen geladen (AJAXzpt_element_fields,assets/js/admin-elements.js): die Seite enthält je Element nur Titel + Zusammenfassung (zpt_element_summary()); gespeichert werden nur geöffnete Elemente, alle anderen bleiben unverändert. Größen-Auswahl = aktuelle Typo-Skala. Leere Werte werden nach dem Speichern auswp_optionsgelöscht (zpt_elements_cleanup()), nur die Gruppen-Zeilenoptions_zpt_element_{element}bleiben (fürget_field()). Alle Style-Variablen lassen sich per Filterzpt/style/varsergänzen. - Buttons (Tabs Grundeinstellungen / Templates / Varianten), leer = Bootstrap-Standard:
- Grundeinstellungen – Repeater „Größen“ (vorbelegt mit Standard / Klein / Groß): nur Name und
CSS-Klasse.
md= Standard (.btnohne Klasse), sonst.btn-{klasse}– eigene Größen wiexlstehen im Button-Block unter „Größe“ (je Breakpoint,.btn-md-lg). - Templates (Repeater, vorbelegt mit btn default / Pill / Outlined): Name, Kürzel, Schriftrolle,
Gewicht, Großbuchstaben, Rahmenbreite, Eckenradius, Hintergrund (aus = transparent, Hover mit
Rahmenfarbe gefüllt), Outline (Schrift in Rahmenfarbe) und Repeater Größen: je Größe
Schriftgröße (CSS-Wert oder Stufe
copy,l…), Zeilenhöhe, Laufweite, Innenabstand oben/unten und links/rechts. btn default (Kürzeldefault) gilt für alle.btnund lässt sich nicht löschen (Admin-Skriptassets/js/admin-buttons.js+ Prüfung beim Speichern); leere Werte je Größe = Bootstrap-Wert der Größe. Weitere Templates werden zu.btn-{kürzel}(.btn-pill); ihre Werte je Größe gelten als.btn-pill/.btn-pill.btn-sm/.btn-pill.btn-md-lg, leer = btn default. Längen ohne Einheit = px. Rahmenbreite: leer bei btn default = kein Rahmen; „none“/„keine“ = 0. - Varianten (Repeater): eine Klasse wie
.btn-primary,.btn-outline-dangerüberschreiben oder eine eigene anlegen (.btn-black). Sobald Varianten angelegt sind, bietet der Button-Block unter „Stil“ nur diese an (plus Link-Stile). Je Variante Farben normal und Hover/Aktiv (Schrift-, Hintergrund-, Rahmenfarbe – Farbfelder mit Baukasten-Farben), Template (übernimmt dessen Werte inkl. Outline/Hintergrund, eigene Angaben gehen vor), Rahmen (Breite, Radius), Schriftrolle (Grundschrift, Sans-Serif, Serif, Deko, Mono), Gewicht, Großbuchstaben und Größen wie bei den Templates (leer = wie Template). Ohne Angabe: Schriftfarbe = Kontrastfarbe, Rahmenfarbe = Hintergrund, Hover = 30 % dunkler; Deaktiviert = normal. Ausgabe als--bs-btn-*nachzpt.css(Reihenfolge.btn→ Größen → Templates → Varianten → Größen je Breakpoint; Outline/Hintergrund als.btn.btn-{kürzel}, damit sie die Farben überschreiben). Dazpt.cssmit$enable-rounded: falsegebaut ist, setzt das Plugin bei Eckenradius auchborder-radiusund die Ecken in.btn-group. Ohne Variante kommen die Farben aus Baukasten → Farben. Code:includes/buttons.php, Kontrolle: Styleguide → Buttons.
- Grundeinstellungen – Repeater „Größen“ (vorbelegt mit Standard / Klein / Groß): nur Name und
CSS-Klasse.
- Icons (je Set eine Box, einzeln zuschaltbar; nur aktive Sets werden geladen und in der Icon-Auswahl angeboten):
- Bootstrap Icons (Standard: an), Font Awesome Free 7 (Stile solid/regular/brands; optional eigene CSS-URL, z. B. Pro),
Material Icons (Stile filled/outlined/round/sharp/two-tone, Ligaturen) – alle lokal aus
assets/vendor/(nicht vom CDN/Google). Bootstrap Icons stecken nicht mehr inzpt.css(.link-further-Pfeil ist eine SVG-Maske). - Eigenes SVG Icon Set: Ordner im Theme (
*.svg, Name = Dateiname, Child- vor Eltern-Theme) und/oder Repeater Name + SVG-Code (geht bei gleichem Namen vor). Bereinigt (zpt_sanitize_svg(); CSS aus `
- Bootstrap Icons (Standard: an), Font Awesome Free 7 (Stile solid/regular/brands; optional eigene CSS-URL, z. B. Pro),
Material Icons (Stile filled/outlined/round/sharp/two-tone, Ligaturen) – alle lokal aus