Wie werden benutzerdefinierte Felder in Joomla gerendert? / Sudo Null IT-Nachrichten

Dieser kurze Artikel spricht darüber, wie benutzerdefinierte Felder “unter der Haube” von Joomla gerendert werden. Die Informationen werden Ihnen beim Erstellen von Überschreibungen und beim Layout Ihrer Ausgabefelder in Ihren neuen Projekten nützlich sein. Es vereinfacht auch die Suche und den Support von Joomla-Sites, die von anderen Entwicklern stammen.

Benutzerdefinierte Joomla-Felder werden in 3 Schritten gerendert:

  • 1. Stufe: Es wird ein Layout erstellt, das alle Felder zusammenfasst und eine gemeinsame Ausgabe für alle erstellt.

  • 2. Stufe: Es wird ein Layout erstellt, in dem festgelegt wird, wie jedes einzelne Feld angezeigt wird (ob Beschriftungsfelder angezeigt werden sollen etc.)

  • 3. Stufe: Es wird ein Layout erstellt, das die Ausgabe des Wertes eines bestimmten Feldes bestimmt.

Phasen des Renderns benutzerdefinierter Felder in JoomlaPhasen des Renderns benutzerdefinierter Felder in Joomla

Jede Komponente kann Felder unterschiedlich rendern. Im Joomla-Kern ist die Komponente „Kontakte“ die einzige Komponente, die spezielle Layouts für die Anzeige von Feldern hat (insbesondere verarbeitet sie Felder in E-Mails).

Renderreihenfolge aller benutzerdefinierten Felder

Joomla sucht nach Render-Layouts aller benutzerdefinierten Felder in der folgenden Reihenfolge:

  • Gibt es eine Vorlage/Datei[template name]/html/layouts/[component name]/fields/render.php das Render-Layout von Feldern für eine bestimmte Komponente überschreiben? Ja, wir nutzen es.

  • Nein? Gibt es eine Komponenten/Datei[component name]/layouts/fields/render.php im Komponentenordner? Ja, wir nutzen es.

  • Nein? Gibt es eine Vorlage/Datei[template name]/html/layouts/com_fields/fields/render.php Überschreiben der Darstellung von Feldern für com_fields? Ja, wir nutzen es.

  • Nein? Verwenden Sie die Datei components/com_fields/layouts/fields/render.php

Es ist möglich, die render.php-Datei zu kopieren, umzubenennen und zu überschreiben, damit Sie manuell auswählen können, welche Renderdatei verwendet werden soll, aber dies muss durch Code in Erweiterungen erfolgen.

Folgender Code

FieldsHelper::render(‘com_content.article’, ‘fields.render’, [‘item’ => …, ‘context’ => ‘com_content.article’, ‘fields’ => …]);

rendert alle Felder für das Material mithilfe der Datei layouts/fields/render.php. Und dieser Code

FieldsHelper::render(‘com_content.article’, ‘fields.myoverride’, [‘item’ => …, ‘context’ => ‘com_content.article’, ‘fields’ => …]);

rendert alle Felder für das Material mit layouts/fields/myoverride.php .

Verwendung des Content-Plugins “Content – Fields”

Plugin zum Anzeigen eines benutzerdefinierten Feldes im Seiteninhalt, das über die Schaltfläche Feld oder mit folgender Syntax in den Editorbereich eingefügt werden kann:

  • {Feldgruppe 2} zeigt alle Felder der Feldgruppe mit der ID 2 an.

  • {Feldgruppe *} (anstelle der genauen ID – ein Sternchensymbol) zeigt alle Feldgruppen an

Rendering-Reihenfolge eines bestimmten benutzerdefinierten Joomla-Felds

Der Mechanismus zum Suchen von Ausgabelayoutdateien für jedes einzelne Feld ist derselbe wie für Gruppen von Feldern.

  • Gibt es eine Vorlage/Datei[template name]/html/layouts/[component name]/field/render.php das Feld-Rendering-Layout für eine bestimmte Komponente überschreiben? Ja, wir nutzen es.

  • Nein? Gibt es eine Komponenten/Datei[component name]/layouts/field/render.php im Komponentenordner? Ja, wir nutzen es.

  • Nein? Gibt es eine Override-Datei für com_fields – templates/[template name]/html/layouts/com_fields/field/render.php? Ja, wir nutzen es.

  • Nein? Verwenden Sie components/com_fields/layouts/field/render.php

Es ist möglich, mehrere Überschreibungen der Datei components/com_fields/layouts/field/render.php zu erstellen und in den Feldeinstellungen des Admin-Panels (Registerkarte Optionen) auszuwählen, welche verwendet werden soll.

Auswählen eines Ausgabelayouts für ein benutzerdefiniertes Joomla-FeldAuswählen eines Ausgabelayouts für ein benutzerdefiniertes Joomla-Feld

Wenn Sie ein benutzerdefiniertes Layout gewählt haben, zeigt Joomla ein Feld mit Ihrem Layout an.

“Standard verwenden” bedeutet, dass die render.php-Datei zum Rendern verwendet wird.

Erstellen Sie keine Überschreibungen, wenn Sie dasselbe Ergebnis nur mit CSS erzielen können. Diese Entscheidung wird in Zukunft leichter aufrechtzuerhalten sein.

Verwendung des Content-Plugins “Content – Fields”

Sie können den Shortcode {field [id]} , wo [id] – Feld-ID. Das Standardausgabelayout ist layouts/field/render.php.

Der Shortcode {field 2,foo} zeigt das Feld mit der ID 2 an, das das alternative Layout foo verwendet.

Anzeigen des benutzerdefinierten Joomla-Feldwerts

Jedes benutzerdefinierte Feld wird mithilfe eines Plugins implementiert, das sich im Verzeichnis plugins/fields befindet. Plugin-Ausgabelayouts befinden sich im Ordner tmpl. Beispielsweise befinden sich die Ausgabelayouts für das Textfeld-Plugin in plugins/fields/text/tmpl. Das Standardausgabelayout hat denselben Dateinamen wie das Plugin selbst. Für das „Text“-Feld-Plugin wird die Ausgabe-Layout-Datei text.php genannt.

Diese Datei kann auch überschrieben werden. Kann entweder manuell oder über die Registerkarte “Create Overrides” in durchgeführt werden Vorlageneinstellungen (nicht Vorlagenstil).

Feld-Plugins in VorlageneinstellungenFeld-Plugins in Vorlageneinstellungen

Im Code werden Feldwerte normalerweise abgerufen FieldsHelper::getFields($context, $item, true); , wo

  • $kontext – Kontext der Komponente, in der das Feld ausgewählt werden soll (z. B. ‘com_content.article’).

  • $Artikel – das Material, die Kategorie usw., für die der Feldwert abgerufen werden soll.

  • Stimmt gibt an, dass der Feldwert vom Plugin verarbeitet werden soll und den Wert zusammen mit dem HTML-Layout aus dem Layout zurückgeben soll. Wenn “false” angegeben ist, wird der “nackte” Wert des im Admin-Panel eingegebenen Felds zurückgegeben.

    Auch hilfreiche Ressourcen

    Community-Ressourcen:

    Telegramm:

Similar Posts

Leave a Reply

Your email address will not be published.