Abschnitte
Abschnitte sind wiederverwendbare Inhaltsblöcke, die Redakteure per Slash-Befehl in beliebige Inhalte einfügen können. Sie eignen sich für wiederkehrende Muster wie CTAs, Testimonials, Feature-Grids oder andere Inhalte, die auf mehreren Seiten auftauchen.
Abschnitte abfragen
Abschnitt betitelt „Abschnitte abfragen“getSection
Abschnitt betitelt „getSection“Einen einzelnen Abschnitt anhand seines Slugs abrufen:
import { getSection } from "emdash";
const cta = await getSection("newsletter-cta");
if (cta) { console.log(cta.title); // "Newsletter CTA" console.log(cta.content); // PortableTextBlock[]}getSections
Abschnitt betitelt „getSections“Mehrere Abschnitte mit optionalen Filtern abrufen:
import { getSections } from "emdash";
// Alle Sections abrufenconst { items: all } = await getSections();
// Nach Quelle filternconst { items: themeSections } = await getSections({ source: "theme" });
// Nach Titel/Schlüsselwörtern suchenconst { items: results } = await getSections({ search: "newsletter" });getSections gibt { items: Section[], nextCursor?: string } nach dem üblichen Paginierungsmuster zurück.
Struktur eines Abschnitts
Abschnitt betitelt „Struktur eines Abschnitts“interface Section { id: string; slug: string; title: string; description?: string; keywords: string[]; content: PortableTextBlock[]; previewUrl?: string; source: "theme" | "user" | "import"; themeId?: string; createdAt: string; updatedAt: string;}Quelltypen
Abschnitt betitelt „Quelltypen“| Quelle | Beschreibung |
|---|---|
theme | In Seed-Datei definiert, vom Theme verwaltet |
user | Von Redakteuren im Admin erstellt |
import | Aus WordPress importiert (wiederverwendbare Blöcke) |
Abschnitte in Inhalten verwenden
Abschnitt betitelt „Abschnitte in Inhalten verwenden“Redakteure fügen Abschnitte im Rich-Text-Editor über den Slash-Befehl /section ein:
-
/sectioneingeben (oder/pattern,/block,/template) -
Verfügbare Sections durchsuchen oder durchstöbern
-
Klicken, um den Inhalt der Section an der Cursorposition einzufügen
Der Portable-Text-Inhalt des Abschnitts wird in das Dokument kopiert. Das bedeutet:
- Änderungen am Abschnitt wirken sich nicht auf bereits eingefügte Inhalte aus
- Redakteure können den eingefügten Inhalt anpassen
- Der Inhalt bleibt eigenständig
Abschnitte erstellen
Abschnitt betitelt „Abschnitte erstellen“In der Admin-Oberfläche
Abschnitt betitelt „In der Admin-Oberfläche“-
Öffnen Sie Sections in der Admin-Seitenleiste
-
Klicken Sie auf New Section
-
Füllen Sie diese Felder aus:
- Title - Anzeigename des Abschnitts
- Slug - URL-Identifikator, automatisch aus dem Titel erzeugt
- Description - Hilfetext für Redakteure
-
Inhalt mit dem Rich-Text-Editor hinzufügen
-
Optional Schlüsselwörter für eine einfachere Auffindbarkeit setzen
Über Seed-Dateien
Abschnitt betitelt „Über Seed-Dateien“Sie können Abschnitte direkt in der Seed-Datei Ihres Themes definieren:
{ "sections": [ { "slug": "hero-centered", "title": "Centered Hero", "description": "Full-width hero with centered heading and CTA", "keywords": ["hero", "banner", "header"], "content": [ { "_type": "block", "style": "h1", "children": [{ "_type": "span", "text": "Willkommen auf unserer Website" }] }, { "_type": "block", "children": [{ "_type": "span", "text": "Your tagline goes here." }] } ] }, { "slug": "newsletter-cta", "title": "Newsletter CTA", "keywords": ["newsletter", "subscribe", "email"], "content": [ { "_type": "block", "style": "h3", "children": [{ "_type": "span", "text": "Subscribe to our newsletter" }] } ] } ]}Über WordPress-Import
Abschnitt betitelt „Über WordPress-Import“Wiederverwendbare WordPress-Blöcke (wp_block-Post-Typ) werden automatisch als Abschnitte importiert:
- Quelle wird auf
"import"gesetzt - Gutenberg-Inhalt wird in Portable Text konvertiert
Abschnitte programmatisch rendern
Abschnitt betitelt „Abschnitte programmatisch rendern“Wenn Sie Abschnittsinhalte außerhalb des Editors serverseitig rendern möchten:
---import { getSection } from "emdash";import { PortableText } from "emdash/ui";
const newsletter = await getSection("newsletter-cta");---
{newsletter && ( <aside class="cta-box"> <PortableText value={newsletter.content} /> </aside>)}Funktionen der Admin-Oberfläche
Abschnitt betitelt „Funktionen der Admin-Oberfläche“Die Sections-Bibliothek (/_emdash/admin/sections) bietet:
- Rasteransicht mit Vorschauen der Abschnitte
- Suche nach Titel und Schlüsselwörtern
- Filter nach Quelle
- Schnelles Kopieren des Slugs in die Zwischenablage
- Bearbeiten von Abschnittsinhalten und Metadaten
- Löschen mit Bestätigung, inklusive Warnung bei Theme-Abschnitten
API-Referenz
Abschnitt betitelt „API-Referenz“getSection(slug)
Abschnitt betitelt „getSection(slug)“Eine Section anhand des Slugs abrufen.
Parameter:
slug— Der eindeutige Identifikator der Section (String)
Rückgabewert: Promise<Section | null>
getSections(options?)
Abschnitt betitelt „getSections(options?)“Sections mit optionalen Filtern auflisten.
Parameter:
options.source— Nach Quelle filtern:"theme","user"oder"import"options.search— Titel und Schlüsselwörter durchsuchen
Rückgabewert: Promise<Section[]>
REST-API
Abschnitt betitelt „REST-API“Abschnitte auflisten
Abschnitt betitelt „Abschnitte auflisten“GET /_emdash/api/sectionsGET /_emdash/api/sections?source=themeGET /_emdash/api/sections?search=newsletterEinen Abschnitt abrufen
Abschnitt betitelt „Einen Abschnitt abrufen“GET /_emdash/api/sections/newsletter-ctaEinen Abschnitt erstellen
Abschnitt betitelt „Einen Abschnitt erstellen“POST /_emdash/api/sectionsContent-Type: application/json
{ "slug": "my-section", "title": "Mein Abschnitt", "description": "Optionale Beschreibung", "keywords": ["keyword1", "keyword2"], "content": [...]}Einen Abschnitt aktualisieren
Abschnitt betitelt „Einen Abschnitt aktualisieren“PUT /_emdash/api/sections/my-sectionContent-Type: application/json
{ "title": "Aktualisierter Titel", "content": [...]}Einen Abschnitt löschen
Abschnitt betitelt „Einen Abschnitt löschen“DELETE /_emdash/api/sections/my-sectionNächste Schritte
Abschnitt betitelt „Nächste Schritte“- Mit Inhalten arbeiten - Erfahren Sie mehr über den Rich-Text-Editor
- Widget-Bereiche - Für synchronisierte dynamische Inhalte
- Content-Import - Wiederverwendbare WordPress-Blöcke importieren