Frage von featMarcel, 46

Design aus Datei in PHP laden?

Guten Abend,

ich suche "schöne" eine Möglichkeit, das komplette Design einer Seite in eine PHP-Datei zu laden. Das Design soll auf tausenden von Websites gleich sein, jedoch variieren die Variablen. Ich möchte nicht in jede Datei erneut den HTML-Code schreiben und Design-orientierte Aspekte beispielsweise aus einer CSS-Datei laden, sondern wirklich alles aus einer für jede Website identischen PHP-"Designseite" laden.

Mit include bzw. require ist es mir nicht gelungen. Deshalb habe ich in der Design-Seite einer Variable $code den kompletten HTML-Bereich zugewiesen und lasse diesen dann mittels echo in den vielen PHP-Seiten ausgeben. Meine Frage ist: geht dies auch auf eine andere Methode? Ich finde die etwas "unschön".

Ich mache das übrigens, weil das auf diesen Art und Weise extrem viel Speicherplatz einspart.

Antwort
von MonkeyKing, 7

Ich habe mir deine Frage noch mal durchgelesen und würde die empfehlen eine Template-Engine (wie z.B. Smarty) zu nutzen. Je nach Umfang deines Projektes solltest du sogar erwägen gleich ein komplettes Framework wie CakePHP oder Yii zu nutzen. Das nimmt dir viel repetitive Arbeit ab wodurch du dich ganz auf die Design-Aspekte deines Projektes konzentrieren kannst.

Antwort
von MonkeyKing, 27

Um das Design einer Website zu ändern, fasst du das HTML nicht an. Das machst du rein über CSS. Du kannst eine Standart-CSS haben und dann für jede einzelne Site CSS Dateien, die z.B. Farben oder Details des Designs überschreiben.

Kommentar von medmonk ,

Du kannst eine Standart-CSS haben und dann für jede einzelne Site CSS Dateien, die z.B. Farben oder Details des Designs überschreiben.

Bitte nicht! Jedes weitere (unnötige) CSS, wäre wenigstens ein HTTP-Request zu viel. Für den Anfang mit Klassen und ID's anfreunden. Kurz und knapp, ID's lediglich einmal setzen, Klassen hingegen wiederverwenden und bei bedarf durch erweitern.

Um das Design einer Website zu ändern, fasst du das HTML nicht an. Das machst du rein über CSS.

Ist auch nicht per se der Fall. Sämtliche Formatierungen sollten in einem externen Stylesheet notiert werden. Je nachdem wie was geändert werden soll, kann eine Anpassung des Markup sinnvoll sein.  

LG medmonk 

 

Kommentar von MonkeyKing ,

Bitte nicht! Jedes weitere (unnötige) CSS, wäre wenigstens ein HTTP-Request zu viel

Ist irrelevant es sei denn du surfst mit einem uralt-Modem. Ein einziger HTTP-Request macht normalerweise keinen merklichen Unterschied. Die Frage ist eine Anfängerfrage, daher sollte sie auch einfach beantwortet werden. Ein Fortgeschrittener würde z.B. mit SASS aus mehren Stylesheets eine einzige, komprimierte erstellen mit allen für die angepasste Site nötigen CSS Direktiven. 

Antwort
von atiraro, 33

http://php.net/manual/en/function.include.php

include('kartoffelBaum.html');
Kommentar von fluffiknuffi ,

Ja und nein. '.html' als Dateiendung suggeriert, dass man es semantisch mit einem HTML-Dokument zu tun hat. PHP sieht das aber nicht so, für PHP ist das ein PHP-Skript, das evaluiert, sprich ausgeführt wird! D. h. man kann darin PHP-Tags und PHP-Code verwenden und dieser Code wird ausgeführt. Eigentlich ist die Datei aus Sicht des initialen Skripts also nicht 'kartoffelBaum.html' sondern 'kartoffelBaum.php'. So sollte man die Datei dann auch nennen um Missverständnissen vorzubeugen. Ansonsten sollte man 

echo file_get_contents('kartoffelBaum.html');

verwenden, wenn man tatsächlich nur den Text-Inhalt der Datei ausgeben möchte.

Antwort
von Missingo1996, 46

Ja gibt es.

Du bindest mit include eine Datei ein.

In der Datei hast du entweder ein Objekt programmiert, oder das Design als Variable in der include-Datei definiert. Beides ist für große Webseiten nicht schön.

Oder auch das: http://php.net/manual/de/language.oop5.interfaces.php aber das hab ich selbst noch nicht verwendet

Normalerweise verwendet man aber ein Frontend-Framework.


Kommentar von featMarcel ,

Klar, include klappt bei html Dateien. Aber nicht bei php Dateien, oder? Alternativ werde ich auf eine html Seite umsteigen müssen..
Vielen Dank für die beiden anderen Hinweise!

Kommentar von Missingo1996 ,

Klar, mit include kann man eig. jede Art von Datei einbinden.

.html, .xhtml, .html5, .php, .xml, .json,...

Aber wenn du es wirklich professionell machen willst, nimmst du ein Frontend-Framework

Kommentar von RakonDark ,

also die aufrufende url datei sollte php sein um etwas zu includieren ,

die includierte datei kann dann html etc sein , die wird sowieso durch den parser gejagt, somit geht auch in der include 'beispiel.html' php drinne zu verpacken .

also index.php
mit

include 'menu.html';

und in der menu.html

geht dann auch

<ul> menue
<?php echo "<li>".$element."</li>"; ?>
</ul>

andersrum ,also index.html  und dann dort ein include  , gehts nur wenn man dem server sagt er soll im html php parsen .



Kommentar von fluffiknuffi ,

@Missingo1996 Interfaces:


Interfaces sind ähnlich zu abstrakten Klassen. (...) Man kann keine Objekte aus ihnen erzeugen. Klassen können anders als von abstrakten Klassen nicht von ihnen erben. Sie dienen nicht als Bauplan, eher als Vertrag: Wenn eine Klasse ein Interface implementiert, garantiert sie damit, dass sie dessen Methoden implementiert.

Quelle: http://phpadawan.de/lektion/oop-intro#ende

Ich glaube nicht, dass Interfaces hier weiter helfen. Sie sind ein Hilfsmittel Objektorientierter Programmierung, sie erweitern die Mächtigkeit von PHP nicht. Sprich sie sind ein Hilfsmittel beim Programmieren aber sobald man damit fertig ist könnte man im Regelfall wieder auf sie verzichten. [Ja das ist jetzt etwas provokativ gesagt und nicht auf die Goldwaage zu legen aber im Kontext der eigentlich Fragestellung kann man es meiner Meinung nach so formulieren.]

Kommentar von Missingo1996 ,

Ich habe nicht umsonst erwähnt das ich noch nie mit Interfaces gearbeitet habe ;)

Keine passende Antwort gefunden?

Fragen Sie die Community