![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Neuer Benutzer Registriert seit: 08.09.2007
Beiträge: 18
|
Hallo zusammen, ich möchte eine kleine Verwaltungssoftware für meine Webinhalte schreiben - absichtlich verwende ich nicht den Begriff "CMS", weil ich damit große Systeme wie Typo3 und Joomla verbinde. Hier geht es für mich zur Klärung der Abläufe, nicht über die Programmierung. Ich bitte euch geduldig mit mir und dem Thema umzugehen. Ich weiß, dass sich viele der hier herumtreibenden Nutzer auf einem gänzlich anderen Niveau befinden, aber bitte gebt mir die Chance, mich weiterzuentwickeln und helft mir auf die Sprünge Also: Nun habe ich mir folgende Ideen zur Funktionsweise und zum Ablauf gemacht. Die Software hat 2 Arten von Inhalten / Seiten:
Folgender Ablauf (in der Theorie In der index.php instanziiere ich die Klasse frontend (ausgelesen aus dem übergeordneten Ordner ./lib).
Nun aber werfen sich mir folgende Fragen auf:
Geändert von trefixxx (13.09.2007 um 21:33 Uhr). |
| | |
| | Nach oben #2 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Hi "trefixxx". Klingt doch gut, was du da vorhast. Zu deinen Fragen: modRewrite schreibt einfach einen URL um. aus example.com/pageX wird z.B. example.com?page=pageX. Du kannst in dem Fall also auch über $_GET['page'] auf diesen Wert zugreifen. Die Unterscheidung zwischen dynamischen und statischen Seiten würde ich einfach in der Datenbank notieren und zwar würde ich einen Seitentyp oder ein Modul definieren. das eine Modul heißt "StaticContent", das andere "Blog", das nächste "ContactForm" oder so. Pro Seite kannst du dann genau dort in dieser Seiten-Tabelle ein Template angeben. Sinniger ist es aber wahrscheinlich (je nach Anforderungen), diese Templates an die Module zu binden (über eine weitere Datenbank-Tabelle zum Beispiel oder über entsprechende Namensgebung der Templates). Basti |
| | |
| | Nach oben #3 | |
| Neuer Benutzer Registriert seit: 08.09.2007
Beiträge: 18
| Zitat:
Du sagst also, dass in einer extra Spalte innerhalb der Seiten-Tabelle ein Seitentyp angegeben werden soll. Dieser Seitentyp, je nach Wert (z.B. StaticContent), ruft dann das dazugehörige Template auf (z.B. "static.tpl"). Ich glaube aber das meintest du nicht... | |
| | |
| | Nach oben #4 | |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
| Zitat:
Nicht ganz. Es wird kein Template eingebunden, sondern ein Controller sozusagen. Ich schreib das mal nicht-objektorientiert (wenn ich das irgendwie sinnig hinbekomme … hmmm) PHP-Code: PHP-Code: Sinnig wäre sicher, den letzten include-Befehl in ein Haupt-Template zu setzen, denn bestimmte seitenbereiche sind ja in aller Regel immer gleich. Dann bleibt natürlich die Frage nach der Struktur der Site. Da brauchst du in aller Regel einen Baum mit den einzelnen seiten, aus dem du dann die einzelnen Navigationselemente generierst. Basti Geändert von Basti (13.09.2007 um 22:34 Uhr). | |
| | |
| | Nach oben #5 |
| Neuer Benutzer Registriert seit: 08.09.2007
Beiträge: 18
|
Danke für deine umfassende Hilfestellung! Dein Codeausschnitt macht ja das, was ich oben schon in meiner Liste dargestellt habe:
Deine Vorgehensweise hat, so denke ich, allerdings zwei Nachteile.
Nochmals vielen Dank, dass du dir die Mühe machst!! |
| | |
| | Nach oben #6 | ||
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
| Zitat:
Zitat:
Ein Interface musst du natürlich definieren, klar. Basti | ||
| | |
| | Nach oben #7 | |
| Neuer Benutzer Registriert seit: 08.09.2007
Beiträge: 18
| Zitat:
Nichtsdestotrotz (hihi), ich hab die Funktionsweise verstanden und vielen Dank, du hast mir sehr geholfen! | |
| | |
| | Nach oben #8 | |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
| Zitat: Meine Kunden sind z.B. Dachverbände und hier kann die Verwaltung definieren: Jede Mitgliedsorganisation muss sich mit mindestens einer Seite präsentieren (was das CMS natürlich nicht umsetzen kann *g) und diese Seite enthält Überschrift, Text und ein Adressfeld mit den Kontaktdaten der Mitgliedsorganisation. Des Weiteren sind Downloads, ein Seitenbild und Unterseiten von anderen Seitentypen, wie z.B. einfache Textseite oder Bildergalerie erlaubt. Ein Seitentyp setzt sich also zusammen aus verschiedenen Komponenten, wie Text, News, Kalender, Bildergalerie (gerade in Arbeit) und was sonst noch. Dazu wird ein Seitentyp durch bestimmte andere Vorgaben definiert: Workflows (z.B.: "Soll eine solche Seite veröffentlicht werden, muss sie zuerst von einem Redakteur freigegeben werden" (ist noch nicht implementiert)), "Wird eine Unterseite angelegt, dann wird eine neue Gruppe vom Gruppentyp "irgendwas" angelegt und die Unterseite dieser Gruppe übergeben", "Zeige bei diesem Seitentyp keine Unterseiten an" (wobei das Untermenü ohnehin noch zum eigenen Modul wird) etc. Das Konzept ist eben, durch diese Vorgaben den Benutzer, den Autor einerseits einzuschränken, ihm aber dadurch auch eine einfache Bedienung zu ermöglichen. Das System wird übrigens unter einer public license veröffentlicht werden. Dazu müssen aber noch Altlasten entfernt werden und Dokumentationen erarbeitet werden. Basti | |
| | |
| | Nach oben #9 |
| Neuer Benutzer Registriert seit: 08.09.2007
Beiträge: 18
|
Nach Längerem wage ich mich nun daran... Habe dafür den Versuch einer Darstellung gemacht. Ist eine derartige Umsetzung möglich? Kann mir jemand vllt. noch mal in diesem Zusammenhand die Funktion des Moduls erklären? Erstellt es eine spezifische Query an die Datenbank oder wie? Danke für eure Hilfe! |
| | |
| | Nach oben #10 | |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
| Zitat:
In „meiner Welt“ ist so ein Modul ein Paket aus einem oder mehreren Controllern oder Action-Klassen, Datenmodellen und Templates oder auch noch View-Klassen. Ein Modul Blog könnte z.B. eine Daten-Klasse „Blog“ beinhalten, ein Daten-Klasse „BlogEntry“, einen Controller mit den Methoden list, show, add, remove, edit und vielleicht zwei Templates: list und entry (für einen einzelnen Beitrag) oder so. Das Modul wäre hier die Menge dieser Klassen und würde selbst nicht als Klasse abgebildet werden, höchstens in Form verschiedener Verzeichnisse (tempaltes/blog, dataobjects/blog config/blog etc.). Vielleicht wäre es aber auch Sinnig, Meta-Daten (Modul-Info, Version, Abhängigkeiten) und (De-)Installations-Routinen in eine eigene Modul-Klasse zu packen. Das würde vor allem dann Sinn machen, wenn es nicht einen zentralen Controller gäbe, sondern je eine Klasse für die verschiedenen Operationen (Action-Klassen, wie ModuleAction_Blog_AddEntry oder so). Aber, wenn es einfach sein soll, würde ich tatsächlich nur eine zentrale Klasse benutzen als Controller, der für die einzelnen Operationen Methoden zur Verfügung stellt. Die haben dann im groben folgende Aufgabe: - Prüfen, ob Anfrage Sinn ergibt und so auch gewollt war (die Werte also im Rahmen sind und nicht offensichtlich manipuliert wurden); - Prüfen, ob der Benutzer rechte hat, die Operation auszuführen; - Datenobjekt(e) ranholen und ggf. Manipulieren (wie, das ist Sache der Datenobjekte selbst); - Entscheiden, welche View oder welches Template eingebunden werden soll (z.B. bei fehlerhaften Daten das Formular nochmal anzeigen, oder bei korrekter Eingabe auch einen Redirect veranlassen); - Daten ggf. für das Template aufbereiten (hier gibt es im groben die zwei unterschiedlichen Ansätze, dass der Controller die Daten dem Template übergibt (push) oder sich das Template die Daten selbst zieht (pull)); Basti | |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Welche Seitenstruktur...herangehensweise | kampfgnom | PHP-Programmierung | 65 | 10.12.2007 15:22 |
| [Design] CMS-System: Seitenstruktur | mepeisen | PHP-Programmierung | 19 | 30.07.2007 09:10 |