| | | | |
| |||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| Neuer Benutzer Registriert seit: 28.11.2008
Beiträge: 16
![]() | Hi, ich bin neu hier und habe eine sehr abstrakte Frage : Ich möchte ein eigenes CMS schreiben mit bestimmten Anforderungen, ein paar Frameworks die ich mir bis jetzt angeschaut habe ( Zend & CodeIgniter ) decken die Anforderungen die ich an das CMS habe gut ab, nun habe ich aber zweifel, ob sich diese Ansätze auch wirklich in das CMS übertragen lassen. Erst einmal zu meinen Hauptanforderungen : 1. Richtige Urls das bedeutet, dass meine URL die Menustruktur und Datenstruktur Abbilden soll. Also Wenn ich im Übermenu "Home" auf das Untermenu "News" gehe und da dann auf den Post "Herzlich Wilkommen" gehe soll die URL so ausshene www.meineSeite.de/Home/News/Herzlich_Wilkommen schön wäre es wenn es dann auch wirklich so ist und nicht wie bei vielen Frameworks http://www.meineSeite.de/index/Home/...lich_Wilkommen Das Problem, das ich hier sehe ist, dass wenn ich in einem Controller bin (z.B News) und ich non in der URL noch "/Herzlich_Wilkommen" hintendran schreibe, würde er ja versuchen in meinem News Controller eine Funktion zu finden die etwa herzlich_wilkommen() heist, dies ist aber nicht der Fall da das ja nur ein einzelner Datensatz ist, daher bedeutet die erste Anforderung eigentlich nur ob ich nicht nur auf Funktionen sondern auch dynamisch auf Datensätze verweisen kann. 2. Skaffolding Das Prinzip Skaffolding bescheibt eigentlich genau das was ich mir gedacht habe. Ich brauche doch eigentlich kein komplizierte administration es ist doch im Prinzip immer das selbe wenn ein Datenbankfeld den typ varchar hat dann ist es eine einzeiliges Formular und bei dem Datenbankfeldtyp text ist es eine Textarea und es ist fast überall gleich. Nun wird aber mit diesen Datenbanktypen nicht alles abgedeckt das ich mir so vorstelle, denn ich hätte auch gerne vielleicht den typ "Bild", ich möchte das Bild aber nicht komplett in der Datenbank speichern sondern nur den Pfad. Also möchte ich für meine Administration im Prinzip auch nur Typen für Felder vergeben, die dann auch alles was ein CMS so bietet abdecken. Und für jeden selbst definierten Typ, dann einfach eine eigene Administration schrieben, bei normalen varchars die dann wirklich nur Titel sind, ist dass dann der normale <input type="text"> aber wenn das varchar nun ein bild beinhalten soll, dann ist es vielleicht nicht mehr nur eine einfache eingabe sondern in verbindung mit einem art wizzard, der dann ein Popup öffnet um in einem weiteren Fenster daten auf den Server zu laden und auszuwählen etc. Ich hoffe ich habe das nun nicht zuu kompliziert beschrieben, aber da meine Anforderungen sehr speziell sind, glaube ich, dass diese detailreiche beschreibung notwendig ist. nun die eigentliche Frage, mit welchem Framework ist das am besten Umzusetzen? und optional: welche PHP IDE ist dafür geeignet (ich benutze phpdesigner200 gruß und danke fürs viele lesen, marc |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse: Fortgeschritten ![]() | Das ist ja genau das Problem mit Frameworks wie Zend. Da gibt es eine URL-Struktur die vorgegeben ist, und wenn man die Sache ändern will, dann muß man sich schon sehr gut mit dem ZF auskennen und ins System eingreifen. Schau Dir mal an wieviel Leute Probleme mit den URLs haben (htacess/mod rewrite, redirect, Dateistruktur etc.): Installation & Konfiguration - Zend Framework Forum |
| | |
| | |
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zum Thema wirklich dynamsicher mit dem ZF: Ich bin aktuell auch dran mir ne Methode zu überlegen solche Urls mit dem Zend Framework umzusetzen, bis jetzt hab ich noch nicht viel zusammen, aber um in einem CMS dynamisch auf statische Seiten, Module (und Modulinstanzen) mit Parametern und soweiter reagieren zu können gehen meine Überlegung in die Richtung: (Man überlese mal dumme vokabeln wie actionchooser und so kram, mir ist grad nix besseres eingefallen :P :P) Ein Plugin das sich beim Frontcontroller in die Dispatch-Loop einklingt, das ganz vorne in der Dispatch-Loop eingreift die url nimmt, analysiert (z.b. sich die informationen aus der Datenbnak besorgt welcher Controller + Action mit welchen parametern für die URL zuständig ist, ich denke da an so ein db-schema: Code: ID | path | module | controller | action | params 1 | /some/seo-style/nice/path/like/I/want/it | default | blog | actionchooser | array(blogModuleInstance => 5, entry => bla) Und dann darüber das Request-Objekt mit den passenden Daten füttert und den dispatch-ablauf laufen lassen. Die "actionchooser" Action entscheidet dann anhand der konfiguration-datei der Instanz des Modules [die in einem Verzeichnis oder in der DB liege] (daher werden in der DB die Spalte params gebraucht um der methode klarzumachen um welche instanz es sich handelt) wie die pfade unterhalb der root-Url gehandelt werden, hier kann man sicher wieder auf die normalen Routen des ZF zurückgreifen wenn man sich da den rewriter etwas umschreibt, man will ja nach möglichkeit auch den normalen Url-Helper im View (oder notfalls einen angepassten) nutzen etc. Wenn die Url eindeutig direkt für ein Modul, einen Controller und eine action davon ist, muss man nicht den Umweg über nen "actionchooser" gehen sondern kann direkt auf das passende Modul, Controller und Action weiterleiten. Der schwieriegere Teil ist dabei wohl eine effiziente Methode zu finden wie man von der URL zu Modul, Controller und action kommt, weil man ja bei z.b. nem blog-modul in der DB nicht alle urls hat (blogeintrag, categorie-übersicht, tag-übersicht, einzelne kategorie .... ) sondern nur die basis-urls der modules z.b. kommt so ein aufruf rein: /some/seo-style/nice/path/like/I/want/it/yetAnotherParam/yetAnothersParamValue/ und man muss dazu den passenden db-eintrag finden, in der Praxis währe die einfachste Lösung Querys immer mit einem Teil weniger des Pfades zu machen: where path LIKE '/some/seo-style/nice/path/like/I/want/it/yetAnotherParam/yetAnothersParamValue%' dann where path LIKE '/some/seo-style/nice/path/like/I/want/it/yetAnotherParam%' dann where path LIKE '/some/seo-style/nice/path/like/I/want/it%' Wo wir jetzt ein Match hätten, doch das ist in meinen Augen allerdings ineffizient, man könnte jetzt mit nem Cache [Datei-Basis oder jenachdem wie groß das ganze wird und was man zur Verfügung hat mit APC/Memcache] arbeiten der die komplette Tabelle in der man die Informationen speichert in Form eines serialisierten arrays speichert, dann fallen die querys weg und man muss sich nur noch durch das Array "suchen". Weiter bin ich da mit meinen Überlegungen aus Zeitlichen gründen allerdings auch noch nicht, das Problem ist aktuell eine Möglichst effiziente Lösung zu finden die Urls in der DB zu speichern, wenn man nur ein paar module hat (und quasi keine statischen Urls für seiten) ist das ganze so noch möglich aber mit steigender Länge der Url und so wird das mit dem Abfragen ein Desaster zur 3) (IDE) Ich nutzte Eclipse mit PDT damit bin ich sehr zufrieden.
__________________ robo47.net - Blog, Codeschnipsel und mehr | |
| | |
| | |||||
| Moderator und Wett-König | Hallo KeKs0r, Zitat:
Zitat:
Zitat:
Zitat:
Solltest du Fragen dazu haben, kannst du dich gerne an mich wenden. ![]()
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| | |
| | ||
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
__________________ robo47.net - Blog, Codeschnipsel und mehr | | |
| | |
| | |
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | So wie ich ihn verstanden habe will er ein dynamisches CMS in dem er Elemente (Dateien, Ordner etc) anlegen kann und Module und diese bekommen dann für gewisse "Aktionen" dynamische Urls.
__________________ robo47.net - Blog, Codeschnipsel und mehr | |
| | |
| | |
| Neuer Benutzer Registriert seit: 28.11.2008
Beiträge: 16
![]() | Sorry, war(bin!) ein wenig im Prüfungsstress, daher kommt erst jetzt meine Antwort. Um noch einmal zu verdeutlichen was ich möchte: Ein "normales" Cms mit dem ich seiten etc anlegen möchte. Diesen Seiten kann ich dann Inhalte zuordnen :Z.b - "Statische Inhalte" : Html Text, Bilder ( sind natürlich nicht wirklich statisch) -"dynamische Inhalte" : ( Hier kommt jetzt meien spezielle anforderung: ) Grundidee : Ich habe überlegt dass die meisten Inhalte von Webauftritten entweder statische Inhalte sind oder dynamische dahingehend dass es eine Datenbank Tabelle gibt mit verschiedenen Feldern die dann einfach ausgibt. Maximal kommt noch dazu dass man eine Detail-Tabelle hat. Also war meine Idee, warum soll ich für jeden einzelnen "dynamischen" Inhalt ein Script für News, Blog, Termine etc. schreiben wenn man sogar das so lösen kann dass ich in einem Backend mir dieses "script" zusammenstelle: Das soll so Funktionieren (z.B News mit Bildern) Ich gehe ins backend und erstelle einen neuen Contenttyp , also ein Typ wie "Bild mit Text", wie meine statischen Inhalte, Diesen Contentyp taufe ich dann "News mit Bildern" Dann kann ich diesen Contenttyp editieren indem ich ihm Felder zuweise: z.B name des feldes Eigener Typ Datenbank typ 'id' ID int 'Titel' = einzeiliger Text varchar 'Text' = mehrzeiliger Text varchar 'autor' = Variable varchar nachdem ich das eingestellt habe in meinem Backend, wird dazu eine Tabelle in der Datenbank angelegt und in iner vorhanden tabelle die Felder abgespeichert nun möchte ich noch bilder, da ich aber jeder News mehrere Bilder zuordnen möchte brauche ich eine neue Tabelle name des feldes eigener typ datenbank typp 'id' Detail-id int 'Bild' Bild varchar 'kommentar' einzeiliger text varchar und natürlich so dass die daten dann richtig ausgelesen werden und die datenbankstruktur stimmt, dass die daten nur noch an ein Template geschickt werden müssen. SO nun zu der URL Sache, Ich möchte in meiner URL 2 Dinge abbilden 1. Menustruktur 2. Datenstruktur Wenn ich ein Menu habe das so aussieht - Home - News -Archiv -Termine -Archiv und ich jetzt im News Archiv bin möchte ich meien URL in etwa so: www.meineseite.de/News/Archiv und wenn nun eine Einzelne news im Archiv ausgewählt wurde die die Überschrift "Herzlich Willkommen" hat soll die URL desweiteren so aussehen: www.meineseite.de/News/Archiv/Herzlich_Wilkommen .... das bedeutet auch dass mein komplettes CMS eigentlich über eine datei läuft wo die anfragen ankommen, (index.php) und dort wird dann nur der richtige inhalt erzeugt Also nehmen wir an es kommt die anfrage : www.meineseite.de/News/Archiv/Herzlich_Wilkommen nun muss die index.php wie folgt vorgehen als erstes den Schlüssel /News/Archiv aufschlüsseln, da Index.php in der Datenbank die Menustruktur durchsuchen kann wird die index.php dann auf den Menupunkt "Archiv"( weil es den Menupunkt 'Herzlich Wilkommen' nicht gibt) kommen so nun weis die index.php dass auf der Seite "Archiv" z.B 2 Inhalte drauf sind: 1. ein Einfacher HTML Text für z.B "Wilkommen im ARchiv bla bla" 2. ein wie oben erklärt, erstelltes dynamisches Script nun weis die Index.php dass das feld 'Titel' irgendwie als identifier definiert wird und da es weis dass bis archiv die menustruktur beschrieben wurde und somit das /Herzlich_Wilkommen zur Datenstruktur gehören muss wird die index.php nun den Datensatz mit dem Titel = "Herzlich Wilkommen" auswählen und NUR die daten dieses einen Datensatzen an das Template schicken, anstatt die komplette Liste.... (vlt auch an eine art detail-template, aber das spielt hier keine rolle) Geändert von KeKs0r (03.12.2008 um 16:49 Uhr). |
| | |
| | |||
| Moderator und Wett-König | Hallo, Zitat:
Zitat:
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Bestehende Seite in Framework einbinden | MaWe4585 | PHP-Fortgeschrittene | 1 | 16.10.2008 08:20 |
| HTML/CSS Page als CMS | diamond_t | PHP Tipps 2008 | 22 | 02.10.2008 17:02 |
| CMS selbst machen | martl666 | PHP Tipps 2008 | 24 | 26.09.2008 16:47 |
| CMS Entwickler gesucht! | dellyd | Beitragsarchiv | 9 | 18.09.2008 16:40 |
| Suche nach Framework für schnelles programmieren | BLACK | PHP Tipps 2008 | 4 | 13.08.2008 04:54 |
| Release 1.7 beta des Adventure PHP Framework verfügbar! | dr.e. | Beitragsarchiv | 2 | 30.07.2008 17:50 |
| Release 1.6 final des Adventure PHP Framework verfügbar! | dr.e. | PHP-Fortgeschrittene | 0 | 13.06.2008 22:55 |
| BrickOO :: PHP Framework | Hroudtwolf | Scriptbörse | 14 | 06.05.2008 12:04 |
| Zend Framework | Melchior | PHP-Fortgeschrittene | 29 | 13.03.2008 21:12 |
| framework struktur | notyyy | PHP Tipps 2008 | 3 | 06.11.2007 18:19 |
| Framework aus Haupt und Unterverzeichnis nutzen? | Anotherone | PHP-Fortgeschrittene | 8 | 24.07.2007 15:05 |
| MVC - Framework | PHP-Fortgeschrittene | 2 | 17.11.2004 20:44 | |
| [Erledigt] Framework empfehlen? | PHP-Fortgeschrittene | 1 | 01.06.2004 07:56 | |