Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Ein Inhaltsmodell entwerfen

Für CMS-Entwickler am Anfang eines Projekts eine schrittweise Methode von den Anforderungen zu einem Satz von Klassen, Attributen, einem Inhaltsbaum, Sektionen und Relationen. Sie endet mit einem durchgerechneten…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/cms-developers/designing-a-content-model.md

On this page

This page is a translation. Read the English original

Ein Inhaltsmodell entwerfen

Diese Seite richtet sich an Entwickler, die eine Website beginnen und ihre Klassen festlegen müssen, bevor jemand ein Template baut. Sie ist eine Aufgabe: acht Schritte, von den vorhandenen Inhalten zu einem Modell, das Sie prüfen können. Die Bausteine erklärt Das Inhaltsmodell; hier geht es darum, sie gut einzusetzen.

Inhalt

  1. Bevor Sie beginnen
  2. Schritt 1: Inhalte auflisten, nicht Seiten
  3. Schritt 2: Elemente zu Klassen gruppieren
  4. Schritt 3: Felder auflisten und Datentypen wählen
  5. Schritt 4: entscheiden, was eine Relation ist
  6. Schritt 5: den Baum zeichnen
  7. Schritt 6: den Zugriff mit Sektionen festlegen
  8. Schritt 7: Sprachen und Versionen
  9. Schritt 8: aufschreiben und prüfen
  10. Ein durchgerechnetes Beispiel: eine Veranstaltungs-Website

Bevor Sie beginnen

Sie brauchen die Anforderungen der Website, eine Auswahl echter Inhalte (kein Lorem ipsum) und eine Installation, an der Sie Klassen ausprobieren können (Entwicklungsumgebung). Sehen Sie sich an, was das Seitenpaket, von dem Sie ausgehen, bereits mitliefert: Das Paket sevenx_multisite bringt eigene Klassen mit, und deren Wiederverwendung spart Templates (Die sevenx-Klassen).

Schritt 1: Inhalte auflisten, nicht Seiten

Schreiben Sie jede Art von Element auf, die die Website enthält oder zeigt: News, Veranstaltungen, Personen, Orte, Produkte, Downloads, Bilder, FAQ-Einträge. Notieren Sie für jede, wie viele es geben wird, wer sie bearbeitet und wie oft. Eine "Seite" in einem Wireframe ist meist eine Ansicht eines Elements oder eine Liste von Elementen; entwerfen Sie die Elemente, die Seiten ergeben sich aus Templates und Layouts.

Schritt 2: Elemente zu Klassen gruppieren

Eine Klasse je Art von Element mit eigenen Feldern. Zwei Arten, die alle Felder teilen und sich nur darin unterscheiden, wo sie erscheinen, sind eine Klasse an zwei Stellen des Baums, nicht zwei Klassen. Zwei Arten, die einige Felder teilen, sich aber unterschiedlich verhalten, sind zwei Klassen mit denselben Attributbezeichnern für die gemeinsamen Felder.

AnzeichenEntscheidung
Gleiche Felder, anderer Orteine Klasse, getrennte Ordner
Gleiche Felder, andere Regeln dafür, wer bearbeiteteine Klasse, getrennte Sektionen
Ein Feld "Typ" würde die meisten anderen Felder änderngetrennte Klassen
Ein Element hat eine Liste von Unterelementen mit Felderneine Behälterklasse mit einer Unterklasse

Schritt 3: Felder auflisten und Datentypen wählen

Schreiben Sie für jede Klasse die Felder mit Bezeichner, Datentyp, erforderlich oder nicht, übersetzbar oder nicht, durchsuchbar oder nicht auf. Verwenden Sie Datentypen wählen. Verwenden Sie Bezeichner über Klassen hinweg wieder (title, intro, image). Markieren Sie, welches Feld den Objektnamen liefert und, falls sie abweichen soll, welches die URL.

Schritt 4: entscheiden, was eine Relation ist

Alles, was für sich besteht und an mehr als einer Stelle verwendet wird, wird ein eigenes Objekt, auf das über ein ezobjectrelationlist-Attribut verwiesen wird: ein Referent mehrerer Veranstaltungen, ein Veranstaltungsort, ein Autor, ein gemeinsam genutztes Bild. Alles, was nur zu einem Element gehört, bleibt ein Feld. Relationen erhalten eine einzige Quelle der Wahrheit; Kopien laufen auseinander (Relationen und Einbettungen).

Schritt 5: den Baum zeichnen

Skizzieren Sie den Inhaltsbaum unter dem Wurzelknoten (Knoten 2): die Ordner, welche Klassen wohin gehören und die Sortierung jedes Behälters. Der Baum ist zugleich Navigation, URL-Struktur und Geltungsbereich der Berechtigungen:

  • ein Ordner oberster Ebene je Hauptmenüpunkt lässt URLs und Menüs dem Baum der Redakteure folgen;
  • Elemente, die an zwei Stellen erscheinen, erhalten eine zweite Platzierung oder erscheinen in einer Liste, die von anderswo abgerufen wird;
  • große Sammlungen (Tausende von News) werden besser nach Datum sortiert und geblättert als von Hand auf Ordner verteilt.

Schritt 6: den Zugriff mit Sektionen festlegen

Listen Sie auf, wer was lesen und wer was bearbeiten darf. Jede Regel der Art "nur Mitglieder sehen X" oder "nur das Veranstaltungsteam bearbeitet Y" wird zu einer Sektion auf dem Teilbaum plus einer Rolle mit Richtlinien, die auf diese Sektion eingeschränkt sind (Sektionen, Rollen und Richtlinien). Stufen wie in Prüfung werden zu Objektzuständen.

Schritt 7: Sprachen und Versionen

Legen Sie die Sprachen fest, welche Klassen übersetzt werden, welche Felder nicht, und ob nicht übersetzte Elemente in der Hauptsprache angezeigt werden (immer verfügbar). Entscheiden Sie, ob das Veröffentlichen einen Freigabe-Workflow braucht (Workflows und Auslöser).

Schritt 8: aufschreiben und prüfen

Schreiben Sie das Modell als Tabelle je Klasse und als Skizze des Baums in das Repository Ihres Projekts. Prüfen Sie es vor dem Bau mit einem Redakteur und einem Designer: Checkliste zur Prüfung des Inhaltsmodells. Legen Sie dann die Klassen an (Eine Inhaltsklasse anlegen) und bewahren Sie sie in Dateien auf (Inhaltsklassen und Attribute).

Ein durchgerechnetes Beispiel: eine Veranstaltungs-Website

Anforderungen: Veranstaltungen mit Datum, Veranstaltungsort und Referenten; Referentenprofile; Seiten für Veranstaltungsorte mit Karte; ein News-Bereich; Aufzeichnungen nur für Mitglieder.

Klasse (Bezeichner)Felder (Bezeichner: Datentyp)Hinweise
Veranstaltung (exp_event)title: ezstring, intro: eztext, body: ezxmltext, start_date: ezdatetime, end_date: ezdatetime, venue: ezobjectrelationlist, speakers: ezobjectrelationlist, image: ezimage, tags: eztagsBehälter: nein; Name <title>
Referent (exp_speaker)first_name, last_name: ezstring, bio: ezxmltext, portrait: ezimage, website: ezurlName <first_name> <last_name>
Veranstaltungsort (exp_venue)title: ezstring, address: eztext, location: ezgmaplocation, body: ezxmltextein Ort, viele Veranstaltungen
Aufzeichnung (exp_recording)title: ezstring, event: ezobjectrelationlist, file: ezmediain der Sektion Members
News (vorhandene Klasse article)die Klasse des Seitenpaketswiederverwendet, nicht neu definiert

Der Baum:

Home (node 2)
  Events (folder; event lists sort by start_date in the fetch)
  Speakers (folder, sorted by name)
  Venues (folder, sorted by name)
  News (folder, sorted by published, newest first)
  Recordings (folder, section Members)

Eine Liste nach einem Attribut wie start_date zu sortieren geschieht im Fetch (sort_by, array( 'attribute', true(), 'exp_event/start_date' )), nicht in der eigenen Sortierung des Knotens, die nur die Felder kennt, die unter Objekte, Knoten und Platzierungen aufgeführt sind.

Zugriff: Die Rolle Anonymous liest die Sektion Standard; eine Rolle Members liest die Sektion Members; eine Rolle für Veranstaltungsredakteure darf exp_event, exp_speaker und exp_venue unter den drei Ordnern anlegen.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x