Shortcodes mit RegEx


Shortcodes bringen noch mehr Flexibilität in Templates und den Beitrags-Content. Shortcodes können häufig benötigte Phrasen, Bausteine und JavaScripte ersetzen.

Was sind Shortcodes?

So genannte Shortcodes werden von einigen Content Management Systemen wie Typemill oder WordPress unterstützt und stellen benannte Ersetzungen im Text oder in Templates dar, beispielsweise entsteht die am Ende des Beitrags zu sehende Author-Bio, durch die Einbettung eines Shortcodes mit der Syntax:

[[author-bio]]

Shortcode für die Einbindung der Autor Biografie

Um Kollisionen mit der Markdown-Sprachsyntax zu vermeiden, verwenden Shortcodes doppelte Klammerpaare statt einfacher eckiger Klammern.

Shortcodes im Template oder im Text verwenden

Das Parsing von Shortcodes kann in CleanCMS ganz individuell eingerichtet werden, aktuell wird das Parsing der Shortcodes durch einen PreFilter wie folgt ausgelöst:

$this->registerPreFilter(function ($rawContent) 
{
    $shortcode  = new ParseRegEx();
    $rawContent = $shortcode->parse($rawContent);
    return $rawContent;
});

Umwandlung von Shortcodes in Templates durch einen PreFilter

Diese Variante führt dazu, das Shortcodes innerhalb des Templates vor dem Rendering umgewandelt werden - Shortcodes im Beitragstext werden ignoriert.

Sollen hingegen Shortcodes auch im Beitragstext umgewandelt werden können, muss ein PostFilter den Aufruf des Parsers abwickeln, etwa so:

$this->registerPostFilter(function ($rawContent) 
{
    $shortcode  = new ParseRegEx();
    $rawContent = $shortcode->parse($rawContent);
    return $rawContent;
});

Umwandlung von Shortcodes im Beitragstext durch einen PostFilter

Beispiel: Shortcodes können, neben HTML- und Textblöcken, auch dazu verwendet werden, externe JavaScript Bibliotheken dynamisch zu laden, ohne diese fest im Template einbinden zu müssen. Der Redakteur kann folglich eine individuelle Entscheidung im Text vornehmen (z.B. können in bestimmten Texten JavaScript Charts eingeblendet werden).

Shortcodes anlegen

Shortcodes können bequem in der dazu passenden Datei configs/schortcodes.yaml als YAML-Struktur gespeichert und zentral gepflegt werden, etwa so:

- Author-Bio:
  Shortcode:  author-bio
  Content:    Mein Name ist Oliver Lohse...

- Author-Logo:
  Shortcode:  author-logo
  Content:    <img src="/img/oliver-lohse.png">

Shortcode als YAML-Struktur

Da der Shortcode grundsätzlich ein beliebiges RegEx-Pattern sein darf, muss er in der typischen RexEx-Notation verfasst werden.

Tipp: Es ist grundsätzlich auch möglich die voreingestellte Klammersetzung aus dem RegEx-Parser zu lösen und vollständige RegEx-Pattern in der YAML-Datei zuzulassen, dies verbessert die Leistung des Parsers und ermöglicht mehr Kontrolle über den zu ersetztenden Inhalt.

Hintergrund

Ursprünglich war der Shortcode-Parser als kompakter Markdown-Parser konzipiert. In späteren Tests stellte sich jedoch heraus, das er zu leistungsschwach war und sich das Projekt für den bekannten Parser Parsedown und ParsedownExtra entschieden hat.

Dennoch hat der Shortcode-Parser genügend Potenzial für andere Aufgaben und übernimmt fortan die Funktion der Shortcodes.


29.12.2024 Oliver Lohse

Mein Name ist Oliver Lohse und ich bin seit etwa 41 Jahren als Programmierer in den Sprachen bzw. Markup- und Struktur-Dialekten Java, JEE, JavaScript, React, VAADIN, COBOL, PHP, Python, HTML, CSS, Json, YAML, SQL und XML tätig. In dieser Zeit konnte ich viele Aufgabenstellungen und Alphaprojekte, als Entwickler in der Versicherungswirtschaft, erfolgreich abschließen. Zudem bin Ich Buchautor und Betreiber bekannter Webseiten, im Bereich CMS-Entwicklung und Bildbearbeitung, mit etwa 1,2 Mio Lesern jährlich.

Weitere Artikel

Demo Plugin 'lower_case'


Das Beispiel-Plugin verdeutlicht die Arbeitsweise von Plugins in CleanCMS, anhand der Umwandlung von Content in lowercase bzw. Kleinschrift.

Logiklose Templates


Die entwickelte Template-Engine ist logiklos und fördert die Performance und Handhabung durch den User, dennoch können sehr dynamische Templates entwickelt werden.

Plugin Syntax


Für die Erstellung individueller Funktionen, Erweiterungen und Eigenschaften mittels Plugins, ist die folgende Plugin-Syntax notwendig.

PreFilter Plugin 'include'


Die Verwendung von so genannten PreFiltern hilft, der Template-Engine weitere includierte Templates aufzulösen, da sie vor dem Rendering ausgeführt werden.

Der RateLimiter


Der RateLimiter hat in CleanCMS die Aufgabe, die Frequenz der Zugriffe pro Zeiteinheit zu verlangsamen und Bots oder Hacker zu blockieren.

Shortcodes mit RegEx


Shortcodes bringen noch mehr Flexibilität in Templates und den Beitrags-Content. Shortcodes können häufig benötigte Phrasen, Bausteine und JavaScripte ersetzen.

Impressum


Diese Webseite ist eine reine Projekt- und Entwickler-Seite rund um das Content Management System CleanCMS.

Datenschutz


Die Webseite CleanCMS verwendet keinerlei Tracking oder andere Speichermechanismen, um Rückschlüsse auf Leserverhalten oder IP Adresse zu erhalten.

Kontakt


Kontakt@Oliver-Lohse.de

supportet by: CMSWorkbench - FlightCMS - SmartyCMS - safeCMS - smallCMS - yamlCMS - GIMP Handbuch - Oliver Lohse