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

Inhalte in Templates abrufen

Für CMS-Entwickler die Fetch-Funktionen, die handgeschriebene Abfragen ersetzen. Die Seite behandelt einzelne Knoten und Objekte, Unterelemente und Teilbäume, Filter nach Klasse und Attribut, Sortierung, Blättern mit…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/cms-developers/fetching-content-in-templates.md

On this page

This page is a translation. Read the English original

Inhalte in Templates abrufen

Diese Seite richtet sich an Entwickler, die in Templates Listen und Nachschlagevorgänge brauchen: die neuesten News, die Veranstaltungen des nächsten Monats, die Unterelemente eines Ordners, verwandte Elemente. Templates führen kein SQL aus; sie rufen Fetch-Funktionen auf, die die Module festlegen, und jeder Fetch prüft Berechtigungen, Sichtbarkeit und Sprachen für Sie.

Inhalt

  1. Der Aufruf
  2. Die Fetches, die Sie am häufigsten verwenden
  3. Unterelemente und Teilbäume
  4. Nach Klasse und Attribut filtern
  5. Sortieren
  6. Blättern
  7. Regeln für schnelle Fetches
  8. Wenn ein Fetch nicht genügt

Der Aufruf

{def $result = fetch( '<module>', '<function>', hash( '<parameter>', <value>, ... ) )}

Die Funktionen und ihre Parameter sind in der function_definition.php jedes Moduls deklariert, für Inhalte in kernel/content/function_definition.php. Einzelne Ergebnisse können false sein (fehlt oder ist für diesen Benutzer nicht lesbar); prüfen Sie sie also: {if $node}...{/if} (Fetch-Grundlagen).

Die Fetches, die Sie am häufigsten verwenden

AufrufGibt zurück
fetch( 'content', 'node', hash( 'node_id', 2 ) )einen Knoten (auch über node_path oder remote_id)
fetch( 'content', 'object', hash( 'object_id', 57 ) )ein Objekt
fetch( 'content', 'list', hash( ... ) ), list_countUnterelemente eines Knotens und ihre Anzahl
fetch( 'content', 'tree', hash( ... ) ), tree_countalle Nachkommen, mit Tiefenbegrenzung
fetch( 'content', 'related_objects', hash( ... ) ), reverse_related_objectsRelationen (Relationen und Einbettungen)
fetch( 'content', 'keyword', hash( ... ) )Objekte nach Schlüsselwort
fetch( 'content', 'search', hash( 'text', ... ) )Suchergebnisse (Suche)
fetch( 'user', 'current_user' )den angemeldeten Benutzer
fetch( 'explayouts', 'resolve_layout', hash() )das Layout der aktuellen Seite (Layouts für CMS-Entwickler)

Alle Fetch-Funktionen für Inhalte mit jedem Parameter: Referenz der Fetch-Funktionen.

Unterelemente und Teilbäume

Die Parameter von list und tree (kernel/content/function_definition.php): parent_node_id, sort_by, offset, limit, depth, depth_operator, class_filter_type, class_filter_array, attribute_filter, extended_attribute_filter, main_node_only, ignore_visibility, language, only_translated, as_object, load_data_map, objectname_filter, group_by und limitation.

{def $news = fetch( 'content', 'list', hash(
        'parent_node_id', $node.node_id,
        'class_filter_type', 'include',
        'class_filter_array', array( 'article' ),
        'sort_by', array( 'published', false() ),
        'limit', 5 ) )}
{foreach $news as $item}
    {node_view_gui content_node=$item view='line'}
{/foreach}
{undef $news}

list gibt direkte Unterelemente zurück; tree geht den Teilbaum hinab (begrenzen Sie ihn mit depth). main_node_only verhindert, dass ein Objekt zweimal erscheint, wenn es zwei Platzierungen unter demselben übergeordneten Knoten hat.

Nach Klasse und Attribut filtern

class_filter_type ist include oder exclude, mit class_filter_array aus Klassenbezeichnern. attribute_filter ist eine Liste von Bedingungen array( <field>, <operator>, <value> ), optional beginnend mit 'and' oder 'or'; ein Feld ist <class>/<attribute> oder eine Knoteneigenschaft wie published, modified, section oder name:

{def $upcoming = fetch( 'content', 'tree', hash(
        'parent_node_id', $node.node_id,
        'class_filter_type', 'include',
        'class_filter_array', array( 'exp_event' ),
        'attribute_filter', array( array( 'exp_event/start_date', '>=', currentdate() ) ),
        'sort_by', array( 'attribute', true(), 'exp_event/start_date' ),
        'limit', 10 ) )}

Operatoren und Beispiele: Fetch-Filter und Sortierung. Ein Template, das mit currentdate() vergleicht und im View-Cache liegt, behält die Zeit der Zwischenspeicherung; geben Sie einer solchen Seite eine kurze Cache-Lebensdauer (Caching für CMS-Entwickler).

Sortieren

sort_by ist array( <field>, <ascending> ) oder eine Liste solcher Paare; zu den Feldern gehören published, modified, name, priority, path, class_identifier und attribute (mit dem Attribut als drittem Element). Um der Reihenfolge zu folgen, die Redakteure für einen Ordner gewählt haben, übergeben Sie die eigene Reihenfolge des Knotens: 'sort_by', $node.sort_array.

Blättern

Der Offset einer Liste kommt aus dem View-Parameter (offset):

{def $limit = 10
     $total = fetch( 'content', 'list_count', hash( 'parent_node_id', $node.node_id ) )
     $page = fetch( 'content', 'list', hash( 'parent_node_id', $node.node_id,
                                              'offset', $view_parameters.offset,
                                              'limit', $limit,
                                              'sort_by', $node.sort_array ) )}
{foreach $page as $item}{node_view_gui content_node=$item view='line'}{/foreach}
{include name=navigator uri='design:navigator/google.tpl'
         page_uri=$node.url_alias item_count=$total
         view_parameters=$view_parameters item_limit=$limit}

Die mitgelieferten Navigatoren liegen in design/standard/templates/navigator/ (Seitenblättern).

Regeln für schnelle Fetches

  • Übergeben Sie bei Listen, die wachsen können, immer ein limit.
  • Filtern Sie im Fetch nach Klasse, nicht mit {if} in der Schleife.
  • Vermeiden Sie Fetches in Schleifen über Fetch-Ergebnisse; rufen Sie einmal ab oder verwenden Sie Relationen (Die Schleifenfalle).
  • Verwenden Sie für Zählungen list_count, statt eine volle Liste zu zählen.
  • Legen Sie Fetches, die auf jeder Seite gleich sind (Menüs, Fußzeilen), in einen Cache-Block (Cache-Block).
  • Attributfilter auf großen Bäumen sind SQL-Joins; messen Sie mit der SQL-Liste der Debug-Ausgabe an einer Kopie mit echten Daten.

Wenn ein Fetch nicht genügt

Beantwortet keine Fetch-Funktion Ihre Frage, schreiben Sie eine in Ihrer Erweiterung: eine PHP-Methode, die Daten zurückgibt, deklariert in der function_definition.php Ihres Moduls und aus jedem Template aufrufbar (Fetch-Funktionen, Eine Fetch-Funktion von Hand). Für komplexe Filter lässt extended_attribute_filter eine PHP-Klasse SQL-Bedingungen hinzufügen; siehe settings/extendedattributefilter.ini.

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