Ich möchte hier auf ein, meiner Meinung nach, konzeptionellen Fehler im Mambo hinweisen, welches das Template-System von Mambo aufweist.
Templates sollen es auch PHP-Laien ermöglichen, Mambo nach dem eigenen Geschmack anzupassen.
Erstens kann in ein Template Code eingewoben sein, der sich nach dem ersten Start gleich löscht.
Typischerweise schaut man sich das Template erst live an und schaut erst danach in den Code. Denn wozu die Mühe, wenn es einem nicht gefällt.
Da sich der Code aber selber gelöscht hat ist nichts vom 'Datenklau' mehr zu finden.
Vorher hatte der Code aber die notwendingen Passworte aus configuration.php ausgelesen.
(Das für meinen Geschmack auch nicht Webzugänglich sein sollte - aber das geht ja nicht überall)
Ich will an dieser Stelle auch nicht aufbauschen, aber ein 'ultimatives' Template, dass jeder kurz antesten will, weil es Cool aussieht, reicht aus. Es hilft auch nichts, auf einem zweiten Mambo zu testen. Meistens laufen die verschiedenen Mambos mit gleichen rechten.
Selbstverständlich findet man/frau den 'bösen' Code, wenn man vorsichtig ist und vorher den Code analysiert.
Aber wenn alle User 'vernünftig' wären, hätten sich diese Würmer/Viren/Trojaner nicht so rasant verbreitet. (M$ ist nicht an allem schuld)
Zweitens, und das ist für mich das wichtigere Argument, ist es für Designer doch etwas umständlich mit diesenum zu gehen.PHP-Code:< ? php mosLoadModules ( 'user4', -1 ); ? >
Hier also mein Lösungsansatz:
statt obigen code sollte das Template keine PHP seite sein, sondern eine HTM oder HTML Datei sein und statt phpcode sollte {user4} eingfügt werden. Wer sich bereits mit anderen Templatern auseinandergesetzt hat, kennt diese geschweiften Klammern dazu.
Da Mambo an alle Ecken und Enden Code outputtet, gestaltet sich ein 'sauberer' Templater als kniffelig.
Ich habe ein Template entworfen, das obigen Ansprüchen gerecht wird.
Wer es testen möchte kann das Template hier herunterladen. Es basiert auf Solarflare und ist für Mambo 4.5.1
Wie ihr sehen werdet, habe ich die index.php zu reinem Code reduziert und um eine zusätzliche Datei layout.htm ergänzt.
Dabei ist layout.htm im Vergleich zum ursprünglichen Solarflare-Template richtig lesbar geworden.
Wegen der 'Inkontinenz' von Mambo, musste ich zu einem Kunstgriff greifen, den die Mambo Entwickler selber ebenfalls nutzen.
ob_start() leitet die Ausgabe in einen Puffer um.
ein Beispiel:
so verfahre ich mit jedem Element von Mambo.PHP-Code:ob_start(); // umleiten in Puffer
mosShowHead(); // würde alle direkt ausgeben
$data["moshead"] = ob_get_contents(); // Pufferinhalt in ein Array
ob_end_clean(); // Puffer leeren
Am Schluss habe ich alle Teile der Ausgabe in einem Hash-Array
Ein simpler Templater sucht und ersetzt am Schluss alle vorkommenden {varname} mit $hashArr[$varname]
Da beide Template-Methoden nebeneinander koexistieren können, steht der neuen Methode nichts im Wege.
(Aus Sicherheitsgründen wäre es natürlich besser, die index.php irgendwo im Mambo zu integrieren.)


LinkBack URL
About LinkBacks
Zitieren
Lesezeichen