Ansichtsmodi
Diese Seite richtet sich an Entwickler, bei denen derselbe Artikel wie eine Seite, ein Listeneintrag, eine Karte und ein eingebetteter Kasten aussehen muss. Exponential trennt, was gezeigt wird (das Objekt), von wie (dem Ansichtsmodus): Jeder Zusammenhang fragt nach einem Ansichtsmodus, und jede Klasse kann je Modus ein eigenes Template haben. Templates, die Inhalte auflisten, müssen nie wissen, welche Klassen sie auflisten.
Inhalt
- Die Idee
- Die mitgelieferten Ansichtsmodi
- Wie ein Modus gewählt wird
- Ein Template je Klasse und Modus
- Eigene Ansichtsmodi
- Ansichtsmodi in Einbettungen und Layouts
- Caching
- Die Modi einer Website planen
Die Idee
article "Opening of the new hall"
full -> the article page (node/view/full.tpl -> full/article.tpl)
line -> one row in the news list (node/view/line.tpl -> line/article.tpl)
card -> a card on the front page (node/view/card.tpl -> card/article.tpl)
embed -> a box inside another article (content/view/embed.tpl -> embed/article.tpl)Ein Listen-Template zeichnet jedes Unterelement mit node_view_gui und einem Modusnamen; das richtige Template je
Klasse finden die Override-Regeln. Kommt später eine Klasse hinzu, braucht sie Templates für diese Klasse, keine
Änderungen an jeder Liste.
Die mitgelieferten Ansichtsmodi
| Modus | Verwendet für |
|---|---|
full | die Seite des Inhalts selbst |
line | einen Eintrag in einer Liste |
embed | Inhalte, die als Block in Rich Text eingebettet sind |
embed-inline | Inhalte, die in eine Textzeile eingebettet sind |
text_linked, text, tiny, plain | Kurzformen in Listen, Relationen und der Administration |
listitem, thumb, sitemap, print, pdf | weitere mitgelieferte Modi |
Templates: Ansichtsmodi, Full View, Line View, Embed View.
Wie ein Modus gewählt wird
| Zusammenhang | Wie |
|---|---|
| Eine URL | /content/view/<mode>/<node id>; ein URL-Alias öffnet full |
| Ein Template | {node_view_gui content_node=$child view='line'}, {content_view_gui content_object=$object view='embed'} |
| Rich Text | der Redakteur wählt embed oder einen anderen Modus, den content.ini [embed] AvailableViewModes[] erlaubt |
| Ein Block von Layouts | der View-Typ des Blocks und der View-Typ der Elemente, im Editor gewählt |
Ein Template je Klasse und Modus
node/view/<mode>.tpl ist der Standard für jede Klasse. Eine Regel gibt einer Klasse ihr eigenes Template für einen
Modus:
[exp_mysite_line_event]
Source=node/view/line.tpl
MatchFile=line/exp_event.tpl
Subdir=templates
Match[class_identifier]=exp_event{* extension/exp_mysite/design/exp_mysite/override/templates/line/exp_event.tpl *}
<article class="exp-line exp-line--event">
<h3><a href=$node.url_alias|ezurl>$node.name|wash()</a></h3>
<p>$node.data_map.start_date.content.timestamp|l10n( 'shortdate' )</p>
</article>Regeln und ihre Reihenfolge: Templates und Overrides für CMS-Entwickler.
Eigene Ansichtsmodi
Ein Modus ist nur ein Name, für den es Templates gibt. So fügen Sie card hinzu:
- Legen Sie den Standard
design/exp_mysite/templates/node/view/card.tplfür jede Klasse an; ein Modus ohne Standard-Template irgendwo in der Design-Kette schlägt fehl. - Fügen Sie Regeln und Templates für die Klassen hinzu, die eine eigene Karte brauchen.
- Verwenden Sie ihn:
{node_view_gui content_node=$child view='card'}. - Leeren Sie den Template-Override-Cache (
php bin/php/ezcache.php --clear-id=template-override --allow-root-user).
Vermeiden Sie die Namen, die der Kernel bereits verwendet. Versehen Sie Ihre eigenen mit einem Präfix, wenn sie mit
einem Theme kollidieren könnten, auf dem Sie aufbauen (exp_card). Das Rezept der Designer:
Eigene Ansichtsmodi.
Ansichtsmodi in Einbettungen und Layouts
Redakteure wählen unter den Embed-Ansichtsmodi, die content.ini [embed] AvailableViewModes[] listet; fügen Sie Ihre
eigenen dort hinzu, in content.ini.append.php Ihrer Erweiterung, mit einem Template je Klasse
(Für die Einbettungen der Redakteure). Exponential
Layouts zeichnet die Elemente eines Blocks in einem View-Typ der Blockdefinition; Block-Templates können Elemente
ebenfalls mit Ihren Ansichtsmodi zeichnen (Einen View-Typ hinzufügen,
View-Templates für Blöcke).
Caching
site.ini [ContentSettings] CachedViewModes=full;sitemap;pdf: Diese Modi werden, als Seiten geöffnet, im View-Cache
gespeichert. Modi, die innerhalb eines anderen Templates gezeichnet werden (line, card, embed), werden als Teil
der Seite zwischengespeichert, die sie zeichnet; eine Änderung an einem Artikel erreicht also eine Karte auf der
Startseite, wenn der Cache dieser Seite geleert wird (Caching für CMS-Entwickler).
Die Modi einer Website planen
Schreiben Sie je Klasse eine Tabelle: welche Modi sie braucht, mit einer Skizze von jedem. Eine typische Website braucht
full, line, einen Karten- oder Teaser-Modus und embed für die Klassen, die Redakteure einbetten. Wenige Modi, die
überall verwendet werden, lassen sich leichter einheitlich halten als ein Modus je Seite
(Die Ansichtsmodi eines Designs planen).
Verwandte Seiten
- Inhalte in Templates abrufen
- Ansichtsmodi für Website-Bauer
- Knoten-Templates nach Klasse
- 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.