toendaCMS Commit 13
Published on 02.02.2008 - 14:37 h in Programming, toendaCMS
Im laufe der letzten paar Wochen habe ich die Entwicklung der 2. großen Version von toendaCMS immer weiter vorangetrieben.
Nicht nur die reine Umrüstung und Optimierung für PHP5 (siehe goPHP5-Projekt) habe ich durchgeführt, sondern insbesondere die massive und globale Restrukturierung des gesamten Quellcodes, das Ausmustern der gesamten Deprecated-("veraltet")-Klassen- und Funktionen sowie das interne Optimieren des Frameworks auf die wirkliche Erfüllung der jeweiligen Aufgaben der Klassen (tcms_authentication für Authentifizierung, tcms_datacontainer_provider für die gesamten DataContainer, tcms_main für reine Basisfunktionen, tcms_file für alle Dateisystem Funktionen, usw.) sowie das Implementieren von einigen wenigen aber wichtigen Features wie z.B. die noch mehr verbesserte Optimierung für Suchmaschinen und die neue Template Engine.
Mit diesem Schritt habe ich einmal die Performance des Systems um min. 50% erhöht, aber auch einige Schwachstellen - insbesondere für Template-Designer und WebDesigner - gefunden. Eine der größten Schwachstellen überhaupt ist die sehr feste und unflexible Möglichkeit der Gestaltung der Webseiten, die meisten Dinge werden durch internen HTML-Code bestimmt und sind lediglich über CSS-Code gestaltbar. Das wird sich in Zukunft ändern. Dabei werde ich aber natürlich nicht die vorhandenen Themes einschränken oder nicht mehr unterstützen, sondern erweitere die vorhandene TemplateEngine um eine neue, die "toendaTemplate"-Engine.
toendaTemplate läd aus einem Unterverzeichniss "templates" aus dem gewählten Theme bestimmte Dateien die HTML-Code enthalten. Die Template Dateien werden dabei mehrere Abschnitte enthalten, die für bestimmte Bereiche ihre AUfgabe erfüllen. Die "news.tpl" Datei enthält z.B. 3 Bereiche die jeweils mit einem BEGIN und einem END eingegrenzt sind (die Neuigkeit in der Detail Ansicht, das Template für ein Kommentar und die Startseiten Neuigkeiten). Alles innerhalb dieser Tags wird Interpretiert - sowohl HTML als auch PHP Code (dieser muss allerdings mit den toendaScript-Befehlen markiert werden). Alle Stellen an denen später die generierten Inhalte eingesetzt werden, sind durch Platzhalter markiert (#####NEWS_TITLE##### für den Titel einer News).
Im Beispiel der Startseiten Neuigkeit gibt es allerdings auch Einschränkungen. So werden die Informationen (#####NEWS_INFORMATON#####) die unter dem Titel einer Neuigkeit angezeigt werden (Datum, Kategorien, etc.) immer noch komplett generiert. Aber auch dafür habe ich mir eine Lösung ausgedacht, es wird in Zukunft sogenannte Template-Kofigurationen in den Templates selber geben, damit können die Template Blöcke in den Template Dateien noch weiter Konfiguriert werden. Als erste Einstellung habe ich das Trennzeichen für die Neuigkeiten Information (Beispiel: [...7 09:42 h | in Commit, ...] konfigurierbar gemacht. Mit dem Befehl "news.information.seperator=|" am Anfang der Template Datei "news.tpl" wird das Trennzeichen festgelegt. Dabei wird Objekt-Orientiert vorgegangen. "news" steht für den Template Bereich der Neuigkeiten, "information" für die Information einer Neuigkeit und "seperator" für die Einstellung die gemacht wird, wobei der Wert mit einem "=" gesetzt wird. In Zukunft werde ich diese Template Konfiguration noch erweitern und auf die gesamte Template Engine bringen (zusammen mit toendaScript habe ich dann zwei globale Erweiterungen im System selber, die zusammen arbeiten).
Übrigens; derzeit arbeite ich an der Integration von tinyMCE 3, leider will es noch nicht so wie ich will (es werden um jetzt Text Paragraph Tags gebaut ([p]), die kann man zwar per Konfiguration abschalten, aber tinyMCE 3 will das noch nicht (ist sicher ein Bug)).
Nicht nur die reine Umrüstung und Optimierung für PHP5 (siehe goPHP5-Projekt) habe ich durchgeführt, sondern insbesondere die massive und globale Restrukturierung des gesamten Quellcodes, das Ausmustern der gesamten Deprecated-("veraltet")-Klassen- und Funktionen sowie das interne Optimieren des Frameworks auf die wirkliche Erfüllung der jeweiligen Aufgaben der Klassen (tcms_authentication für Authentifizierung, tcms_datacontainer_provider für die gesamten DataContainer, tcms_main für reine Basisfunktionen, tcms_file für alle Dateisystem Funktionen, usw.) sowie das Implementieren von einigen wenigen aber wichtigen Features wie z.B. die noch mehr verbesserte Optimierung für Suchmaschinen und die neue Template Engine.
Mit diesem Schritt habe ich einmal die Performance des Systems um min. 50% erhöht, aber auch einige Schwachstellen - insbesondere für Template-Designer und WebDesigner - gefunden. Eine der größten Schwachstellen überhaupt ist die sehr feste und unflexible Möglichkeit der Gestaltung der Webseiten, die meisten Dinge werden durch internen HTML-Code bestimmt und sind lediglich über CSS-Code gestaltbar. Das wird sich in Zukunft ändern. Dabei werde ich aber natürlich nicht die vorhandenen Themes einschränken oder nicht mehr unterstützen, sondern erweitere die vorhandene TemplateEngine um eine neue, die "toendaTemplate"-Engine.
toendaTemplate läd aus einem Unterverzeichniss "templates" aus dem gewählten Theme bestimmte Dateien die HTML-Code enthalten. Die Template Dateien werden dabei mehrere Abschnitte enthalten, die für bestimmte Bereiche ihre AUfgabe erfüllen. Die "news.tpl" Datei enthält z.B. 3 Bereiche die jeweils mit einem BEGIN und einem END eingegrenzt sind (die Neuigkeit in der Detail Ansicht, das Template für ein Kommentar und die Startseiten Neuigkeiten). Alles innerhalb dieser Tags wird Interpretiert - sowohl HTML als auch PHP Code (dieser muss allerdings mit den toendaScript-Befehlen markiert werden). Alle Stellen an denen später die generierten Inhalte eingesetzt werden, sind durch Platzhalter markiert (#####NEWS_TITLE##### für den Titel einer News).
Im Beispiel der Startseiten Neuigkeit gibt es allerdings auch Einschränkungen. So werden die Informationen (#####NEWS_INFORMATON#####) die unter dem Titel einer Neuigkeit angezeigt werden (Datum, Kategorien, etc.) immer noch komplett generiert. Aber auch dafür habe ich mir eine Lösung ausgedacht, es wird in Zukunft sogenannte Template-Kofigurationen in den Templates selber geben, damit können die Template Blöcke in den Template Dateien noch weiter Konfiguriert werden. Als erste Einstellung habe ich das Trennzeichen für die Neuigkeiten Information (Beispiel: [...7 09:42 h | in Commit, ...] konfigurierbar gemacht. Mit dem Befehl "news.information.seperator=|" am Anfang der Template Datei "news.tpl" wird das Trennzeichen festgelegt. Dabei wird Objekt-Orientiert vorgegangen. "news" steht für den Template Bereich der Neuigkeiten, "information" für die Information einer Neuigkeit und "seperator" für die Einstellung die gemacht wird, wobei der Wert mit einem "=" gesetzt wird. In Zukunft werde ich diese Template Konfiguration noch erweitern und auf die gesamte Template Engine bringen (zusammen mit toendaScript habe ich dann zwei globale Erweiterungen im System selber, die zusammen arbeiten).
Übrigens; derzeit arbeite ich an der Integration von tinyMCE 3, leider will es noch nicht so wie ich will (es werden um jetzt Text Paragraph Tags gebaut ([p]), die kann man zwar per Konfiguration abschalten, aber tinyMCE 3 will das noch nicht (ist sicher ein Bug)).
0 Comments
No comments posted!
Post new comment




