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.

Ein einfacher include

Die Template-Engine dieses kleinen Content Management Systems ist in der Lage, Templates zu einer Seite zu laden bzw. zu rendern. Doch was, wenn das Template selbst weitere Templates einbettet und diese zuvor laden muss? In diesem Fall kommt ein PreFilter-Plugin zum Einsatz und könnte beispielsweise den folgenden Programmcode besitzen:

$this->registerPreFilter(function ($rawContent) 
{
    while (preg_match("/{{include:(.*?)}}/", $rawContent)):

        $rawContent = preg_replace_callback("/{{include:(.*?)}}/", function ($matches)
            {
                return file_get_contents('templates/'.$matches[1].'.html');
            },
            $rawContent
        );

    endwhile;

    return $rawContent;
});

Code

NiftyCMS - ein eigenes CMS entwickeln - Die Entwicklung eines eigenen Content Management Systems (CMS) mag auf den ersten Blick wie eine entmutigende Aufgabe erscheinen. Große Systeme wie WordPress oder Joomla scheinen unendlich komplex und sind das Ergebnis jahrelanger Arbeit großer Entwicklerteams. Doch die gute Nachricht ist - Ein CMS muss nicht komplex sein, um effektiv zu sein. Mit den richtigen Grundlagen, einem klaren Fokus und einer überschaubaren Zielsetzung kann jeder Entwickler - ob Einsteiger oder erfahrener Programmierer - ein eigenes, maßgeschneidertes CMS erstellen.

Die Webseite ist Mitglied im Amazon Partnernet und kann mit Verkäufen über Affiliate-Links, den Betrieb der Seite etwas unterstützen - für Sie ist das natürlich vollkommen kostenlos.

Der PreFilter wird vor dem Rendering durch die Template-Engine gestartet und erhält das Template in der Variable $rawContent übergeben. Entdeckt der PreFilter innerhalb des Templates das Suchpattern {{include:template-datei}}, dann läd es die angegebene Templatedatei hinzu, ersetzt den Token durch den neuen Inhalt und gibt das neu entstandene Template zurück. Dies macht der PreFilter so lange, wie auch includes im Template existieren (while).

Der PreFilter nutzt für diese Funktion den speziellen PHP-Befehl preg_replace_callback(), der einen Callback auf eine function ermöglicht.


13.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