Konzept CMS Seitenaufteilung
Uwe
- sonstiges
Guten Morgen!
Ich schreibe an einem CMS und steh mal wieder auf dem Schlauch.
Normalerweise steht in den Templates für CMS nur sowas wie
echo $top; oder $left, $right und $footer usw.
Halt die Aufteilung der Seite in Bereiche in denen dann die Module dargestellt werden.
Mein Frage ist, wie macht man sowas? Also ich finde da gar keinen Ansatz.
Ich bin für alle Ideen und Vorschläge dankbar!
Uwe
Hi,
Mein Frage ist, wie macht man sowas? Also ich finde da gar keinen Ansatz.
Ich bin für alle Ideen und Vorschläge dankbar!
Dann such doch mal nach Tutorials für Template-Systeme.
Wenn da wirklich echo $top; usw. steht, sieht das sehr nach PHP aus. D.h. dass einfach echo $top durch PHP interpretiert und ausgegeben wird. Zumindest wie das funktioniert müsstest du schon wissen, wenn du ein CMS bauen willst.
Aber normalerweise sind Templates doch .html-Dateien ohne PHP. Da werden dann Platzhalter verwendet. z.B. [NAVI], [FOOTER] etc.
Dann wird später beim Aufruf einer Seite zuerst die Seite erstellt und in Variablen geladen. Danach sucht man im Template nach den Platzhaltern, füllt den Variableninhalt da ein und gibt das Ganze aus.
Gruß
Alex
Hallo Alex!
Dann such doch mal nach Tutorials für Template-Systeme.
Hab ich. Da geht es aber nicht so weit ins Detail.
Wenn da wirklich echo $top; usw. steht, sieht das sehr nach PHP aus. D.h. dass einfach echo $top durch PHP interpretiert und ausgegeben wird.
Wie ich Inhalt in z.B. $top kriege ist mir schon klar. Ich frag mich nur wie ich die Bereiche dynamisch festlegen kann. Beispiel: ich möchte einen Bereich festlegen z.B. $top, später überleg ich mir, dass ich auch $footer und ein Bereich rechts für Werbung $right möchte.
Wie leg ich die Bereiche am besten dynamisch an damit ich sie später im Template verwenden kann?
Und wenn ich Inhalte in die Bereiche "lade", wie bestimme ich die Reihenfolge? Was wenn ich noch Text 'per Hand' in einen Bereich schreiben will? Wie geh ich dann vor?
Aber normalerweise sind Templates doch .html-Dateien ohne PHP. Da werden dann Platzhalter verwendet. z.B. [NAVI], [FOOTER] etc.
Nicht zwangsläufig. Schau dir Wordpress oder Contao oder Typo an, da steht genug Code in den Templates.
Also wie ich Inhalte zu einer Seite "zusammenklebe" ist mir schon klar, ich hab nur ein Verständnisprobleme mit der Anordnung bzw. der Platzierung.
Uwe
Nachtrag
Für Drupo gibt es z.B. ein extra-Modul dass sich um die Seitenaufteilung kümmert.
Uwe
Hallo,
Wie leg ich die Bereiche am besten dynamisch an damit ich sie später im Template verwenden kann?
Wie meinst du das? Meinst du, wie der Platzhalter ins Template kommt, oder wie der Text in den Platzhalter kommt.
Und wenn ich Inhalte in die Bereiche "lade", wie bestimme ich die Reihenfolge? Was wenn ich noch Text 'per Hand' in einen Bereich schreiben will? Wie geh ich dann vor?
Was meinst du mit Reihenfolge?
Von Hand kannst du es quick and dirty einfach in das Template schreiben, wenn es eh auf jeder Seite erscheinen soll, oder du nutzt dein CMS dafür.
Also wie ich Inhalte zu einer Seite "zusammenklebe" ist mir schon klar, ich hab nur ein Verständnisprobleme mit der Anordnung bzw. der Platzierung.
Sorry, aber ich scheine deine Frage nicht zu verstehen. Kannst du es an einem Beispiel beschreiben?
Gruß
Alex
Wie meinst du das? Meinst du, wie der Platzhalter ins Template kommt, oder wie der Text in den Platzhalter kommt.
Die Platzhalter ($top, $footer usw.) stehen ja hardcodiert im Template, mir geht es um den Inhalt zu den Platzhaltern, ja.
Was meinst du mit Reihenfolge?
Wenn ich in z.B. $top die Module Login und Headnavi (fiktiv) habe, möchte ich doch die Reihenfolge der Ausgabe bestimmen. Es bringt ja nichts wenn ich die Ausgabe der Module (hier dann ein Formular und eine Liste) einfach in die Variable schreibe, ich möchte ja auch die Reihenfolge in der Ausgabe, also im HTML, festlegen können. Einfach alles nacheinander reinknallen und dann per CSS formatieren dürfte der Horror werden.
Sorry, aber ich scheine deine Frage nicht zu verstehen. Kannst du es an einem Beispiel beschreiben?
Nehmen wir an ich habe das Modul Login und eins für das Menü.
Ich komme/bin soweit, dass ich z.B. ins Template schreiben kann echo $this->Login;
. Da ich aber nicht weiß welche Module geladen werden, weil die sich je nach User-Level oder Unterseite usw. unterscheiden, wird das so nichts. Ich muss sie gruppieren damit ich die "Gruppe" im Template ausgeben kann -> echo $this->top;
Ich hoffe ich konnte mich verständlich ausdrücken, ansonsten versuche ich es nochmal :)
@suit: Smarty wollte ich vermeiden. Ich möchte gern ein komplett selbst geschriebenes CMS. Rein technisch bin ich dazu durchaus in der Lage, nur konzeptionell tu ich mich öfter etwas schwer.
Uwe
Ich hoffe ich konnte mich verständlich ausdrücken, ansonsten versuche ich es nochmal :)
$this->top = implode("", array($this->login, $this->headnavi));
$this->top = implode("", array($this->headnavi, $this->login));
echo this->top;
Wenn eines der Module nicht exisitert ist es auch nicht da, problem solved.
$this->top = implode("", array($this->login, $this->headnavi));
$this->top = implode("", array($this->headnavi, $this->login));echo this->top;
Wenn eines der Module nicht exisitert ist es auch nicht da, problem solved.
Also muss ich irgendwo speichern welche Bereiche ich habe und zu den Modulen muss ich speichern in welchem/n Bereich(en) sie untergebracht sind. Ausserdem noch die Reihenfolge. Ich bin noch ein bisschen verwirrt ob das wirklich alles war was ich wollte, darauf hätte ich auch selbst kommen müssen. :D
Wahrscheinlich werde ich mich nochmal melden, mal sehn. Ansonsten herzlichen Dank!
Uwe
Nicht zwangsläufig. Schau dir Wordpress oder Contao oder Typo an, da steht genug Code in den Templates.
Das mag daran liegen, das PHP breits eine Template-Sprache und gleichzeitig eine Programmiersprache ist :p
Also wie ich Inhalte zu einer Seite "zusammenklebe" ist mir schon klar, ich hab nur ein Verständnisprobleme mit der Anordnung bzw. der Platzierung.
Indem du entweder PHP als Template-Sprache verwendest, eine externe Template-Engine (Smarty z.B.) verwendest oder selbst etwas schreibst.