Erstellung einer eigenen Twig-Erweiterung in Drupal
AI-TranslatedDie Templating-Engine von Drupal 8 hat eine massive Veränderung erfahren. Anders als bei Drupal 7 gibt es in Drupal 8 Twig anstelle von PHPTemplate. Twig ist im Grunde eine Templating-Sprache für PHP, d. h. ein Werkzeug, mit dem Variablen innerhalb von HTML ausgegeben werden. Fabien Potencier, der Schöpfer des Symfony-Frameworks, hat Twig ins Leben gerufen. Im Gegensatz zu Drupal 7 können Sie in Drupal 8 nicht die regulären PHP-Funktionen in Ihren Templates aufrufen. Der Weg nach vorn in Drupal 8 ist die Erstellung von Filtern und Funktionen.

Die Twig-Erweiterung bietet mehr Flexibilität, um fast alles innerhalb von Twig zu verarbeiten. Twig kann auf vielfältige Weise erweitert werden, z. B. durch Tags, Filter, Operatoren, globale Variablen und Funktionen.
Einer der größten Pluspunkte bei der Erstellung einer Twig-Erweiterung in Drupal 8 ist die Ansicht.
Drupal 8-Ansichten können oft schwieriger sein, wenn Sie Operationen an dem Wert durchführen oder den Inhalt im Feld verarbeiten müssen. Wenn Sie oft Code schreiben müssen, versuchen Sie, ihn wiederzuverwenden, anstatt ihn jedes Mal von Grund auf neu zu schreiben.
Sie müssen einen Filter verwenden, wenn Sie die Daten transformieren wollen, die Sie anzeigen möchten. Stellen Sie sich vor, Sie haben einen Titel, der immer großgeschrieben werden soll. Twig hat zum Beispiel den Capitalize-Filter, mit dem Sie jeden Text in sein Äquivalent in Großbuchstaben umwandeln können.
Ich bin während eines meiner E-Commerce-Projekte auf die Twig-Erweiterung gestoßen, bei dem ich einen dynamischen Währungsnamen ausgeben musste. Drupal Commerce erlaubt nur 3 Zeichen lange Währungscodes und hat auch eine eigene Twig-Erweiterung implementiert, um Preisobjekte in ein entsprechendes Preisformat umzuwandeln. Um diesen Fall zu behandeln, in dem ich den Währungsnamen mit einer größeren Anzahl von Zeichen anzeigen musste, habe ich meine eigene Twig-Erweiterung implementiert. In ähnlicher Weise gibt es mehrere andere Fälle, in denen diese Twig-Erweiterungen sehr nützlich sein können.
Sehen wir uns ein Beispiel an, in dem wir einen Filter erstellen, mit dem wir die Anzahl der Wörter im Artikel zählen können. Die Erstellung von Filtern und Funktionen ist genau die gleiche wie bei normalem Twig. Außerdem können Sie die Wortanzahl verwenden, um die Lesezeit des Artikels oder einen anderen Anwendungsfall gemäß den Anforderungen anzuzeigen.
Der Hauptunterschied zwischen regulärem Twig und Drupal 8 Twig besteht darin, dass Sie in Drupal 8 eine Servicedefinition der Klasse erstellen müssen, die Sie erstellen, und die Klasse muss auch zu einem Namespace gehören, da sie sonst nicht als Twig-Filter in der Drupal-Umgebung registriert wird.
Dieses Beispiel geht davon aus, dass Sie ein Modul namens:
twig_word_count_extension
Dies ist die grundlegende Definition des Inn-Services.
twig_word_count_extension.services.yml
services: twig_word_count_extension.twig_extension: class: Drupal\twig_word_count_extension\TwigExtension\TwigWordCountExtension tags: - { name: twig.extension }
Der Schlüssel tags ist ebenfalls unbedingt erforderlich und Drupal teilt Ihnen damit mit, was diese Klasse tun soll (d. h. sie als Erweiterung von Twig registrieren).
Und nun der Quellcode, der in dem Pfad platziert werden sollte, der im class-Servicedefinitionsschlüssel definiert ist.
<?php namespace Drupal\twig_word_count_extension\TwigExtension; use Twig_Extension; use Twig_SimpleFilter; class TwigWordCountExtension extends \Twig_Extension { /** * This is the same name we used on the services.yml file */ public function getName() { return 'twig_word_count_extension.twig_extension'; } // Basic definition of the filter. You can have multiple filters of course. public function getFilters() { return [ new Twig_SimpleFilter('word_count', [$this, 'wordCountFilter']), ]; } // The actual implementation of the filter. public function wordCountFilter($context) { if(is_string($context)) { $context = str_word_count($context); } return $context; } }
Leeren Sie Ihre Caches und wenn alles nach Plan läuft, können Sie den Filter jetzt in Ihren Templates verwenden.
{{ "shuffle me!" | word_count }} {# Return 2. #}
Hinweis: Wenn diese Twig-Erweiterungen keine anderen Service-Abhängigkeiten haben (d. h. wenn Sie keine Services in sie injizieren), wird die Leistung nicht beeinträchtigt. Wenn diese Erweiterungen jedoch viele komplexe Abhängigkeiten haben, z. B. solche, die Datenbankverbindungen herstellen oder umfangreiche Operationen durchführen, kann der Leistungsverlust erheblich sein.
Um Hilfe von unseren Experten für Ihre Drupal-Projekte zu erhalten, können Sie sich unsere Servicepalette ansehen. Sie können uns auch unter [email protected] erreichen.
Abonnieren
Verwandte Blogs
Zurück von der DrupalCon Atlanta 2025: Ein Meilenstein für OpenSense Labs

„Fit. Schnell. Für die Ewigkeit gebaut.“ Das war nicht nur ein Slogan, sondern die Denkweise, mit der wir zur DrupalCon…
Erklärbare KI-Tools: SHAPs Stärke in der KI

Wissen Sie, was erklärbare KI-Tools sind? Erklärbare KI-Tools sind Programme, die zeigen, wie eine KI ihre Entscheidungen…
KI-Chatbots: Präzision und Persönlichkeit in Perfektion

In der Welt der künstlichen Intelligenz ist die Entwicklung eines KI-Chatbots, der nicht nur akkurate Informationen liefert…