Eine Inhaltsklasse anlegen
Diese Seite richtet sich an Entwickler, die ein Inhaltsmodell auf dem Papier haben und jetzt die erste Klasse bauen. Sie begleitet eine Klasse, eine Veranstaltung, durch jeden Schritt, den ein echtes Projekt braucht: die Klasse, ein erstes Objekt, ein Template, Berechtigungen und ein Paket. Arbeiten Sie zuerst in einer Entwicklungsinstallation (Entwicklungsumgebung).
Inhalt
- Was Sie brauchen
- Schritt 1: die Klasse anlegen
- Schritt 2: ein Objekt erstellen
- Schritt 3: ihr ein Full-View-Template geben
- Schritt 4: Redakteure sie anlegen lassen
- Schritt 5: die Klasse in andere Installationen übertragen
- Prüfungen
- Wenn etwas schiefgeht
Was Sie brauchen
- Ein Administratorkonto in einer Entwicklungsinstallation.
- Eine eigene Design-Erweiterung für Templates, zum Beispiel
extension/exp_mysite(Ihre eigene Design-Erweiterung). - Die aufgeschriebene Klasse: Bezeichner
exp_event, Attributetitle(Textzeile, erforderlich),intro(Textabschnitt),body(XML Block),start_date(Datum und Zeit, erforderlich),image(Bild).
Schritt 1: die Klasse anlegen
- Öffnen Sie in der Administration Setup > Klassen (
/class/grouplist). - Öffnen Sie die Klassengruppe Content und drücken Sie Neue Klasse.
- Geben Sie den Namen
Eventund den Bezeichnerexp_eventein. - Setzen Sie Objekt Namensschema auf
<title>. Lassen Sie URL Alias Namensschema leer: Die URL wird aus dem Namen gebildet. - Lassen Sie Behälter ohne Häkchen: Veranstaltungen haben keine Unterelemente.
- Wählen Sie unter der Attributliste Textzeile und drücken Sie Attribut hinzufügen. Nennen Sie es
Title, Bezeichnertitle, und setzen Sie die Häkchen bei Erforderlich und Durchsuchbar. - Fügen Sie die übrigen Attribute ebenso hinzu:
Intro(Textabschnitt,intro),Body(XML Block,body),Start date(Datum und Zeit,start_date, erforderlich),Image(Bild,image). - Drücken Sie OK. Die Klasse wird gespeichert und erscheint in der Liste der Gruppe.
Bis Sie OK drücken, ist die Klasse eine temporäre Version, die niemand sonst sieht; Abbrechen verwirft sie. Das Inhaltsmodell und das Bearbeiten von Inhalten, Abschnitt 2 enthält dieselben Schritte mit Bildschirmfotos der Felder.
Schritt 2: ein Objekt erstellen
- Öffnen Sie Inhaltsstruktur, wählen Sie den Ordner, in den die Veranstaltungen kommen, wählen Sie im Menü zum Anlegen Event und drücken Sie Hier erstellen.
- Füllen Sie die Felder aus und drücken Sie Zur Veröffentlichung schicken.
- Öffnen Sie die neue Seite auf dem öffentlichen Siteaccess. Ohne eigenes Template zeichnet sie die allgemeine Full View des Designs, die die Attribute auflistet.
Legen Sie jetzt ein paar Veranstaltungen mit echten Inhalten an: Sie sind Ihre Testdaten für Templates und Fetches.
Schritt 3: ihr ein Full-View-Template geben
Fügen Sie Ihrer Design-Erweiterung eine Override-Regel hinzu, nur für den öffentlichen Siteaccess. In
extension/exp_mysite/settings/siteaccess/<public siteaccess>/override.ini.append.php:
[exp_mysite_full_event]
Source=node/view/full.tpl
MatchFile=full/exp_event.tpl
Subdir=templates
Match[class_identifier]=exp_event
Priority=10
*/ ?>Dann das Template, extension/exp_mysite/design/<your design>/override/templates/full/exp_event.tpl:
<article class="exp-event">
<h1>$node.name|wash()</h1>
<p class="exp-event__date">
$node.data_map.start_date.content.timestamp|l10n( 'shortdatetime' )
</p>
if $node.data_map.image.has_content
attribute_view_gui attribute=$node.data_map.image image_class='large'
/if
if $node.data_map.intro.has_content
<p class="exp-event__intro">$node.data_map.intro.content|wash()</p>
/if
attribute_view_gui attribute=$node.data_map.body
</article>Styles gehören in das Stylesheet Ihres Designs, geladen über [StylesheetSettings], nie in das Template
(Kein Inline-CSS). Leeren Sie die Caches, die Einstellungen und
Override-Zuordnungen halten, und laden Sie dann die Seite neu:
php bin/php/ezcache.php --clear-tag=ini --allow-root-user
php bin/php/ezcache.php --clear-id=template-override,content --allow-root-userMehr zu Regeln: Templates und Overrides für CMS-Entwickler.
Schritt 4: Redakteure sie anlegen lassen
- Öffnen Sie Benutzer > Rollen und Richtlinien und bearbeiten Sie die Rolle der Redakteure (oder legen Sie eine an).
- Neue Richtlinie: Modul
content, Funktioncreate. Schränken Sie Klasse aufEventund Teilbaum (oder Knoten) auf den Veranstaltungsordner ein. - Fügen Sie
content/edithinzu, eingeschränkt aufEventund Eigentümer, wenn Redakteure nur ihre eigenen Veranstaltungen ändern sollen. - Speichern Sie und weisen Sie die Rolle der Benutzergruppe der Redakteure zu.
Melden Sie sich als Testredakteur an (mit einer Adresse unter example.invalid) und prüfen Sie, dass Event im
Veranstaltungsordner angeboten wird und sonst nirgends. Details:
Rollen, Richtlinien und nicht aktivierte Benutzer.
Schritt 5: die Klasse in andere Installationen übertragen
Die Klasse existiert jetzt nur in dieser Datenbank. Bevor Sie weiterbauen, bringen Sie sie in Dateien:
- Setup > Pakete > Neues Paket erstellen > Export von Inhaltsklassen.
- Wählen Sie
Eventund geben Sie dann Name, Zusammenfassung, Version und Lizenz ein. Das Paket wird in das lokale Repository geschrieben. - Exportieren Sie die Paketdatei und committen Sie sie in Ihr Projekt, oder bauen Sie ein Seitenpaket, das sie installiert (Seitenpakete und Installer).
Templates und Einstellungen sind bereits Dateien in Ihrer Erweiterung; mit dem Paket erhält eine neue Installation die ganze Funktion aus Ihrem Repository. Pakete erklärt Installation und Aktualisierung von Paketen.
Prüfungen
- To do: Die Klasse hat den geplanten Bezeichner; jeder Attributbezeichner ist kleingeschrieben und dort wiederverwendet, wo er es sein soll.
- To do: Ein Objekt lässt sich veröffentlichen, und seine Seite zeigt Ihr Template (mit eingeschaltetem
ShowUsedTemplateslistet die Debug-Ausgabefull/exp_event.tpl; Debug-Ausgabe und Logs). - To do: Ein Testredakteur kann Veranstaltungen nur im richtigen Ordner anlegen.
- To do: Die Klasse liegt in einem Paket in Ihrem Repository.
Wenn etwas schiefgeht
| Symptom | Ursache und Abhilfe |
|---|---|
| Das neue Template wird nicht verwendet | die Regel steht in der Datei eines anderen Siteaccess, der INI-Cache wurde nicht geleert, oder eine Regel mit niedrigerer Priority passt zuerst (Reihenfolge der Overrides) |
| Die Seite ist leer, nachdem das Template hinzugefügt wurde | der Template-Override-Cache: leeren Sie template-override und content |
| "Event" fehlt im Menü zum Anlegen | der übergeordnete Knoten ist kein Behälter, oder die Rolle hat dort kein content/create für die Klasse |
| Ein Bildattribut zeigt nichts | die Bildvariante in image_class existiert in image.ini nicht (Bilder und Bildvarianten) |
Verwandte Seiten
- Inhaltsklassen und Attribute
- Ansichtsmodi
- Tutorial: eine Full View überschreiben: die Fassung für Designer
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
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.