• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

FrontController und Page-Verwaltung

Frucht

Mitglied
Hallo,
nun ich weiß nicht genau wie ich es erklären soll aber ich versuchs mal : )

Unser CMS hat Addons und Module, Module sind die "Standart-Funktionen" bzw. Plugins und Addons sind die sog. Erweiterungen wie z.B. ein Blog, Forum usw. Nehmen wir einmal an, dass wir keine Addons haben und nun also nichts zum Anzeigen haben, deswegen haben wir das Standart Module "PAGE" wo man benutzerdefinierte Seiten erstellen kann. Nun zu meiner Frage...

Über die index.php wird über $_GET die jeweilige Seite bzw. Addon oder Modul übergen z.B. index.php?page=blog nun wird das Addon Blog ausgegeben.... Nun wenn kein Addon verfügbar ist soll Page eine Standartseite ausgeben oder vom Controller->Page Modul->Addon oder Modul mit anderen Worten soll man z.B. eine neue Seite erstellen und wählen können welches Addon oder Modul hier angezeigt werden soll?

Soll die Template Datei struktur(Header, Content, Footer) vorgegeben werden oder soll man soviele Template Dateien (z.B. header.tpl, navi.tpl, werbung.tpl,....) wie man haben möchte sein. Evtl. Anpassung des Themes über einen Konfigurator der z.B. festlegt was wohin kommt und was Dynamisch ist (z.b. Header und Navi in Header Bereich, Content in Content,....). Das würde ich dann in der Datenbank speichern....


Ich hoffe, dass ich es halbwegs erklären konnte.

mfg
 
Zuletzt bearbeitet:
Werbung:
Standard mit D.

Der FrontController wird doch sicher merken, dass ein angefordertes Modul nicht existiert. Dieser kann doch dann einfach intern auf einen bestimmten Controller im Standard-Modul umleiten, welcher eine 404 darstellt.
 
Das ist eig. nicht das Problem das Problem dabei ist eig. wie es löse, dass wenn ich z.B. index.php?page=impressum aufrufe, das kein Addon ist sondern eine Benutzerdefinierte Seite(in der DB gespeichert) das vom Modul "PAGE" ausgelesen werden soll aufrufen soll. Sollte ich alles über das Modul Page machen sodass der Nutzer festlegen kann auf welcher Seite welches Addon ist bzw. einen sogenannten DocumentManager, oder was schlägst du vor?
 
Werbung:
Benutzt du einen Router? Schreib beim Anlegen einer dieses in eine Config und lies diese Config ein und leite dann entsprechend auf einen Controller um, der die Daten aus der Datenbank darstellt.
Oder der dein Controller, der die 404 darstellt, guckt einfach nochmal in der Datenbank nach und stellt dann keine 404 dar, sondern die Seite.
 
Vielleicht solltest du nicht in erster Linie denken: "Ich verwende diese Patterns, wie wende ich sie nun auf mein Problem an" sondern viel besser: Ich möchte, dass ich als Benutzer am Schluss diese Möglichkeiten habe, und es mit folgendem (pseudo)Code bewerkstelligen kann.

Du erstellst also eine fiktive API, bzw ein paar Zeilen Code wie du die Funktionalität die du haben möchtest als Programmierer nutzen willst.

Hier mal ein völlig unmotiviertes Beispiel wie ein erster Schritt aussehen könnte, das ist aber NICHT als Vorlage zu verstehen, sonst kommt nix gescheites raus ;)
PHP:
$template = new Template('mein template');
$context = new Context::fromDb($id);
$page = new PageController('Titel', $context, $member_only = true);
$route = new Route('impressum', $page);
$route->save();
Natürlich hast du nun sehr viele Lücken, Dinge die du noch nicht bedacht hast. Aber diese Richtlinien helfen dir, eine Struktur für dein Programm zu finden. Ich weiss nicht, wie erfahren du im Design vom Software bist, also was für Patterns du kennst, wie gut du mit ihnen umgehen kannst, wie du sie an deine Gegebenheiten anpasst bzw kombinieren kannst, deshalb kann ich auch nicht sagen wie effektiv dieser Ansatz für dich ist.
Ich persönlich verwende diesen Ansatz sehr gerne, natürlich nicht ausschliesslich. Wichtig ist ja immer, dass du weist, wann welche Vorgehensweise/Mittel angebracht sind.

Ich hatte nur den Eindruck, dass du ein wenig zu fest auf Patterns festgefahren sind. Patterns sind hilfreich ohne Zweifel, aber sie sind keine Heiligtümer sondern Werkzeuge die man ruhig auch verbiegen darf.
 
Zurück
Oben