CategoryController

Der CategoryController wickelt den Arbeitsprozess des CMS für die Anzeige einer Kategorie ab.

Affiliate

PHP & MySQL Schnelleinstieg Programmieren lernen in 14 Tagen (Demo) - Mit diesem Buch gelingt Ihnen der einfache Einstieg in die Webentwicklung mit PHP und MySQL. Alle Grundlagen werden in 14 Kapiteln anschaulich und leicht nachvollziehbar anhand von Codebeispielen erläutert. Übungsaufgaben am Ende der Kapitel helfen Ihnen, das neu gewonnene Wissen schnell praktisch anzuwenden und zu vertiefen.

Wichtiger Hinweis: Je nach verwendetem Werbenetzwerk, musst du hier einen geeigneten Hinweis anbringen, der dem Leser anzeigt, das du mit Affiliate-Marketing Geld verdienst (ggf. in den Teilnahmenbedingungen des betreffenden Werbepartners nachlesen).

Der CategoryController der Startseite

Der CategoryController regelt die Verarbeitung des CMS wenn sich der Leser in einer Kategorie des Content Management Systems befindet. Er greift über das entsprechende Model auf Daten zu und wickelt die Anzeige am Browser ab.

class CategoryController 
{
    function __construct($category) 
    {
        global $dpr, $pd, $pde;
        $pages_model     = new PagesModel(CONTENT_DIR.$category);
        $index_file_path = CONTENT_DIR.$category.'/index'.CONTENT_EXT;

        if(file_exists($index_file_path))
        {
            $index_file_content = file_get_contents($index_file_path);
        } 
        else 
        {
            Flight::hook('onError','');
            Flight::halt(404, ERROR_404_DOC);
        }

        foreach (Dipper::parse(Page::meta($index_file_content)) as $key=>$value)
        {
            $template_token_name    = strtolower($key);
            $template_token_content = $value;
            Flight::view()->set($template_token_name, $template_token_content);
        }

        $index_content_section = $pde->text(Page::content($index_file_content));

        Flight::view()->set('pages', $pages_model->pages);
        Flight::view()->set('content', $index_content_section);

        Flight::render('category');
    }
}

Version 2.4.01

Der CategoryController beginnt mit der magischen Methode __construct() des Constructors wenn er das erste mal im Arbeitsspeicher erzeugt wird, dort werden die externen Bibliotheken Parsedown(), ParsedownExtra() und Dipper() für den weiteren Gebrauch hinzugeladen. Mit $index_file_path wird der physikalische Pfad auf die Datei content/kategorie/index.md gesetzt, damit die Kategoriebeschreibung später geladen werden kann.

Im nächsten Schritt muss der Controller prüfen, ob es sich bei dem Request an das CMS um ein valides Verzeichnis handelt oder nicht, ist das nicht der Fall, stoppt das FlightCMS die Verarbeitung und gibt eine 404-Error Seite im Browser aus.

Existiert die angeforderte Kategorie, wird die darin befindliche index.md geladen und mit Hilfe des YAML-Parsers in ihre Betsnadteile, wie Title, Date, Author usw. zerlegt. Diese einzelnen Tokens werden als Key-Value Paare in die View des FlightCMS kopiert und mit Flight::render() für die Anzeige des Templates gestartet.

Die Variable pages enthält dann alle Beiträge, die in dieser Kategorie vorhanden sind und content stellt den Inhalt der Kategoriebeschreibung dar und kann in den Templates ausgelesen werden.

________
FlightCMS - Das Teilen unserer Webseiten, Beiträge und Grafiken ist ausdrücklich gewollt und erwünscht. Durch das gegenseitige Verlinken, teilen wir Link-Juice und können etwas positive Reputation an dich weitergeben. Mach doch einfach mit, denn WISSEN muss allen Menschen auf diesem Planeten kostenlos zur Verfügung stehen - das Internet ist frei und gehört uns!


FlightCMS   2022-07-11   MVC Pattern Controller Home Startseite Landingpage

Beiträge

Dokumentation

Download und Installation von FlightCMS. Erster Beitrag und Kategorie. Tipps und Tricks für eigene Anpassungen

Plugins

Schreiben Sie eigene Plugins und erweitern damit die Basisfunktionen des CMS um neue individuelle Eigenschaften.

Templates

Die Entwicklung neuer Templates ist sehr einfach und Sie haben nach wenigen Minuten einen ersten Prototyp Ihrer Webseite.