Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Techniken - was gibt es?
Frage
Hallo alle zusammen,
ich wollte mal fragen, was es für Möglichkeiten gibt, eine Internet-Seite verwaltungstechnisch zu erstellen.
Bis jetzt habe ich es immer so gemacht:
eine Art Vorlage mit HTML erstellt, die Datei in index.php umbenannt und mit Hilfe von Include die richtigen Inhalte reingesetzt (index.php?seite=home).
Da ich aber nun komplexere Inhalte habe, brauch ich was neues.
Die Templates in PHP machen die Seite etwas langsamer und ich hab das System welches dahintersteckt auch nicht wirklich verstanden.
Was verwendet z.B. die Post für ein System? Dort sieht ein Link so aus:
http://www.dhl.de/dhl?xmlFile=4037&tpl=html3&tpl=html3
Dem Link leite ich den Einsatz von XML ab und die Tatsache, dass ein HTML-Template genutzt wird?!?!
Ich habe den Apache2 zur Verfügung mit voller PHP- und CGI-Konfiguration und brauche eine Möglichkeit für komplexe Inhalte.
Kann mir jemand Beispiele nennen bzw. sagen, was es eventuell mit dem XML auf sich hat? Danke.
Antwort 1 von semi
Ich bin mir nicht sicher, was genau Du haben möchtest. Templates, CMS oder WMS?
Das Thema XML lässt sich auch nicht in paar Worten erklären. Standard ist nur das Format der XML-Dateien. Es gibt aber zig unterschiedliche Ansätze, Seiteninhalte "formatunabhängig" zu definieren. Manchmal habe ich den Eindruck, dass jedes Unternehmen sein eigenes Format definiert. Kaum Standards in Sicht.
Klartext: Seiteninhalte werden formal beschrieben (Content, Layout, Pageflow etc.) und aus diesen Definitionen/Beschreibungen können dann unterschiedliche Dokumente generiert werden (HTML, PDF etc.).
Hinter dem Link "http://www.dhl.de/dhl?xmlFile=4037&tpl=html3&tpl=html3" vermute ich ein komplexes Content Management System mit einer integrierten Template-Engine, das die angeforderte Daten in verschiedenen Formaten darstellen kann bzw. in verschiedene Formate konvertieren kann (HTML, PDF, XML etc.).
Gruß,
Michael
Das Thema XML lässt sich auch nicht in paar Worten erklären. Standard ist nur das Format der XML-Dateien. Es gibt aber zig unterschiedliche Ansätze, Seiteninhalte "formatunabhängig" zu definieren. Manchmal habe ich den Eindruck, dass jedes Unternehmen sein eigenes Format definiert. Kaum Standards in Sicht.
Klartext: Seiteninhalte werden formal beschrieben (Content, Layout, Pageflow etc.) und aus diesen Definitionen/Beschreibungen können dann unterschiedliche Dokumente generiert werden (HTML, PDF etc.).
Hinter dem Link "http://www.dhl.de/dhl?xmlFile=4037&tpl=html3&tpl=html3" vermute ich ein komplexes Content Management System mit einer integrierten Template-Engine, das die angeforderte Daten in verschiedenen Formaten darstellen kann bzw. in verschiedene Formate konvertieren kann (HTML, PDF, XML etc.).
Gruß,
Michael
Antwort 2 von Helferlein
wenn du wirklich was größeres vor hast, wirst du um templates und ne db nicht herum kommen...
du verstehst das prinzip von templates nicht?
du nimmst ne html seite, schreibst irgendwo nen platzhalter rein, meinetwegen
$platzhalter
und sagst dann im php-script:
ersetze( 'platzhalter' , "hallo, mr. bond" );
schön schnell ist folgende:
http://smarty.php.net
du verstehst das prinzip von templates nicht?
du nimmst ne html seite, schreibst irgendwo nen platzhalter rein, meinetwegen
$platzhalter
und sagst dann im php-script:
ersetze( 'platzhalter' , "hallo, mr. bond" );
schön schnell ist folgende:
http://smarty.php.net
Antwort 3 von Sourcer
Danke euch beiden für die Antworten.
@semi:
das ist mir dann wohl doch zu kompliziert, was z.B. die Post da treibt. Mir geht es nur darum, Inhalt und Design zu trennen und nebenbei umfangreiche Inhalte veröffentlichen zu können (es geht nicht um Content Management) - By the way: was ist WMS?
@Helferlein:
das was mir Magenschmerzen bereitet hat, ist die Template-Engine. Wie die Template-Dateien selber funktionieren weiß ich schon. Nur ist das Angebot so groß und ich hab es nicht geschafft, selber soetwas zu programmieren. Habe da einfach den Überblick verloren.
Ich werde mir deinen Link mal genauer unter die Lupe nehmen, danke dafür.
Sourcer
@semi:
das ist mir dann wohl doch zu kompliziert, was z.B. die Post da treibt. Mir geht es nur darum, Inhalt und Design zu trennen und nebenbei umfangreiche Inhalte veröffentlichen zu können (es geht nicht um Content Management) - By the way: was ist WMS?
@Helferlein:
das was mir Magenschmerzen bereitet hat, ist die Template-Engine. Wie die Template-Dateien selber funktionieren weiß ich schon. Nur ist das Angebot so groß und ich hab es nicht geschafft, selber soetwas zu programmieren. Habe da einfach den Überblick verloren.
Ich werde mir deinen Link mal genauer unter die Lupe nehmen, danke dafür.
Sourcer
Antwort 4 von Helferlein
ja, also, es gibt wirklich sehr viele. ich finde smarty so gut, dass ich noch nie dran gedacht habe, was selbst zu schreiben. die doku für smarty ist u.a. auf deutsch...
wenn dir smarty noch zu umfangreich ist, such mal per google nach der vlib template engine.
smarty ist m.e. nach die schnellste und komfortabelste template engine die es gibt...
wenn dir smarty noch zu umfangreich ist, such mal per google nach der vlib template engine.
smarty ist m.e. nach die schnellste und komfortabelste template engine die es gibt...
Antwort 5 von Schnoof
@sourcer: Was Du beschreibst, ist allerdings genau das, was die gängigen Content Management Systeme machen. Böse Zungen behaupten ja, daß die meisten sich lieber Web Content Management System nennen sollten. Typo3 soll ein mächtiges OpenSource-System zu diesem Thema sein.
Bis denne!
Schnoof
Bis denne!
Schnoof
Antwort 6 von Sourcer
@Schnoof
hm...schwere Wahl. An Technik und KnowHow bei PHP und Co. mangelt es bei mir nicht. Habe ODBC und auch MySQL zur verfügung.
Ich suche nur eine Lösung, auf einfachste Weise z.B. von heute auf morgen das Design zu ändern, ohne am Inhalt was ändern zu müssen oder in jeder einzelnen PHP-Datei etwas rumfummeln zu müssen. Soein CMS oder WMS dient ja letzten Endes nur dafür, per Knopfdruck Texte zu verändern - ein HTML-Editor praktisch...
Templates wären genau das richtige, nur tu ich mich im Moment noch bisserl schwer damit, ich teste aber momentan einiges.
Danke nochmal,
Sourcer
hm...schwere Wahl. An Technik und KnowHow bei PHP und Co. mangelt es bei mir nicht. Habe ODBC und auch MySQL zur verfügung.
Ich suche nur eine Lösung, auf einfachste Weise z.B. von heute auf morgen das Design zu ändern, ohne am Inhalt was ändern zu müssen oder in jeder einzelnen PHP-Datei etwas rumfummeln zu müssen. Soein CMS oder WMS dient ja letzten Endes nur dafür, per Knopfdruck Texte zu verändern - ein HTML-Editor praktisch...
Templates wären genau das richtige, nur tu ich mich im Moment noch bisserl schwer damit, ich teste aber momentan einiges.
Danke nochmal,
Sourcer
Antwort 7 von Helferlein
also ich kenne kein cms (oder wms), welches nicht mit templates arbeitet...
Antwort 8 von semi
Wenn Du nur eine Lösungsansatz zur Trennung der Daten von der Anzeige brauchst, dann würde ich Dir folgendes empfehlen:
Angenommen Du hast eine einfache Artikelverwaltung, die nur aus Artikeln und Artikelgruppen besteht.
Du erstellst folgende Klassen dafür:
Der Zugriff erfolgt über Getter-/Setter-Methoden
z.B.
z.B.
Der Vorteil dabei ist, dass die *DB-Klassen und die *View-Klassen unabhängig voneinander getestet werden können. Außerdem vermischt man kein SQL mit HTML etc. Fehlerbehandlung ist auch drthin verlagert, wo sie hin soll usw.
Man kann das ganze dann auch leicht auf andere Datenbank portieren, indem man die DB-Klassen ersetzt. Oder auch ohne Datenbank in Text-/Binärdateien zu speichern.
Genauso mit den View-Klasse, um z.B. PDF zu generieren.
z.B. (Test für View ohne eine Datenbank zu verwenden)
Genauso mit den DB-Klassen.
z.B.
Ich hoffe, das bringt Dich auf paar Ideen, sich ein kleines Framework zu basteln. Vieles lässt sich verallgemeinern und auch wiederverwenden.
z.B. eine Basisimplementierung einer DB-Klasse etc.
Gruß,
Michael
Angenommen Du hast eine einfache Artikelverwaltung, die nur aus Artikeln und Artikelgruppen besteht.
Du erstellst folgende Klassen dafür:
ArtikelModel
ArtikelDB
ArtikelView
ArtikelGruppeModel
ArtikelGruppeDB
ArtikelGruppeViewDie *Model-Klassen enthalten nur die Daten eines einzelnen Artikels bzw. Artikelgruppe.Der Zugriff erfolgt über Getter-/Setter-Methoden
z.B.
$artikel = new Artikel();
$artikel->getBezeichnung();
$artikel->getArtikelGruppe();
usw.Die *DB-Klassen enthalten Mehoden zum Zugriff auf die Datenbank, welche auch immer, und liefern einzelne Datensätze oder Arrays mit Datensätzen (Alle vom Typ ArtikelModel oder ArtikelGruppeModel, kein SQL).z.B.
$artikelDB = new ArtikelDB($connection);
$artikelListe = $artikelDB->getAllArtikelByGroup(1);Die *View-Klassen können wieder die ArtikelModel-Objekte in HTML darstellen.$artikelView = new ArtikelView();
$artikelView->printList($artikelListe);
usw.Der Vorteil dabei ist, dass die *DB-Klassen und die *View-Klassen unabhängig voneinander getestet werden können. Außerdem vermischt man kein SQL mit HTML etc. Fehlerbehandlung ist auch drthin verlagert, wo sie hin soll usw.
Man kann das ganze dann auch leicht auf andere Datenbank portieren, indem man die DB-Klassen ersetzt. Oder auch ohne Datenbank in Text-/Binärdateien zu speichern.
Genauso mit den View-Klasse, um z.B. PDF zu generieren.
z.B. (Test für View ohne eine Datenbank zu verwenden)
$paarArtikel = array(
new Artikel(1, ....),
new Artikel(2, ....),
new Artikel(3, ....)
);
$artikelView = new ArtikelView();
$artikelView->printList($paarArtikel);Genauso mit den DB-Klassen.
z.B.
Header('text/plain');
$artikelDB = new ArtikelDB($connection);
$artikelListe = $artikelDB->getAllArtikelByGroup(1);
foreach ($artikelListe as $artikel)
{
echo $artikel->toString() . "\n";
}Ich hoffe, das bringt Dich auf paar Ideen, sich ein kleines Framework zu basteln. Vieles lässt sich verallgemeinern und auch wiederverwenden.
z.B. eine Basisimplementierung einer DB-Klasse etc.
Gruß,
Michael

