Problematik, PHP...

Domi

Member
Hallo Leute, ich habe da mal eine ehr PHP spezifische Frage, als sonst immer nur Kleinigkeiten zu Server Geschichten :D Es geht darum, dass ich vergangenes Jahr eine Seite für uns im Büro gebaut habe, die auch gut funktioniert. Aber sehr sehr viel aus PHP besteht. Letztes Jahr kam es dann zu einem Problem auf der Seite, dass ich behoben habe und da sagte man mir das ich mehr HTML verwenden sollte als alles via PHP in eine Variable zu packen :rolleyes:

Gut, spricht ja im Prinzip nichts dagegen.. sehr grob sah das Modell von der eben erwähnten Seite wie folgt aus,
HTML:
<?php
 header('content-type: text/html; charset=utf-8');
 include("config/include.php");

 //Startseite für index.php
 include("$php_pfad/inc/site/startseite.php");
?>
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title><?php echo "$meta_title"; ?></title>
  <meta name="keywords" content="<?php echo "$meta_key"; ?>" />
  <meta name="description" content="<?php echo "$meta_desc"; ?>" />
  <link rel="stylesheet" type="text/css" href="/style/style.css">
 </head>
 <body>
  <div id="main">
   <a href="/"><div id="banner"> </div></a>
   <div id="content_out">
    <div id="navi">
     <?php echo "$left_box"; ?>
    </div>

    <div id="content">
     <?php echo "$ausgabe"; ?>
    </div>

    <div id="box_right">
     <?php echo "$right_box"; ?>
    </div>
   </div>

   <div id="footer">
    <?php echo "$footer"; ?>
   </div>
  </div>
 </body>
</html>
So, nun schaute ich mich um.. Von Templates hab ich kein Plan, also lasse ich das lieber.. Das dauert dann noch zu lange, und Chef zieht mir eine über wenn ich jetzt noch Tage lang anfange mich in Templates rein zu arbeiten. Also fand ich im Internet anderes Modell / Grundgerüst für dynamische Seiten und übernahm das.
PHP:
<?php
 header("content-type: text/html; charset=utf-8");

 require_once 'inc/config.inc.php'; //Haupt- Konfiguration

 //Verfügbare Seiten (Navigation)
 $page = array('test','impressum');

 require_once $pfad['site'].'header.inc.php';  //Head der Seite
 require_once $pfad['site'].'banner.inc.php';  //Banner der Seite
 require_once $pfad['site'].'left.inc.php';    //leftBox der Seite

 if(isset($_GET['site'])) {
  if(in_array($_GET['site'], $page)) {
   require_once $pfad['site'].$_GET['site'].'.inc.php'; //Body der Seite
  } else {
   require_once $pfad['site'].'fehler.inc.php';
  }
 } else {
  require_once $pfad['site'].'start.inc.php';
 }

 require_once $pfad['site'].'right.inc.php';  //rightBox der Seite
 require_once $pfad['site'].'footer.inc.php'; //Foot der Seite
 require_once $pfad['site'].'close.inc.php';  //Close der Seite
?>
Das funktioniert ja sogar ganz gut :) Wenn ich nichts eingebe, kommt meine Startseite, gebe ich den Parameter impressum ein, kommt mein Impressum und bei nicht vorhandener Seite, meine Fehlerseite!

Allerdings gibt es ein Problemchen...! Was mache ich mit dem Title der Seite, oder den Meta angaben?! Denn nur der Inhalt selbst (im Body) verändert sich ja. Ich hab schon überlegt, ob man das via function(); löst, aber da weiß ich auch noch nicht weiter. Diverse SQL Abfragen laufen ja schon darüber, aber nicht alles! Zumal ja Seiten wie das Impressum nicht aus der Datenbank geladen werden..

Ich habe verschiedene Anläufe genommen, in der Zwischenzeit hab ich sogar mal im Body Tag ein include(); gehabt, was mich dann aber wieder zurück geworfen hatte, als ich eine Eingabe-Maske baute und nach dem schreiben in die Datenbank mein header(location:); nicht funktionierte, weil ja schon Inhalt geladen worden ist :rolleyes:

Jetzt ist meine Frage eigentlich, habt Ihr Eure Seiten ähnlich gebaut wie ich, was ich im PHP Block da gezeigt habe.. Oder doch noch komplizierter?! Es geht mir nämlich darum, wie soll ich bitte meinen title, oder meine meta Tags deklarieren, wenn mein header schon geladen ist und der Inhalt der Seite erst hinterher kommt?!

Ich hab schon diverse Dinge gesehen, angefangen von EVA (was ich aber schon kenne), oder so etwas wie MVC wo ich dann nur noch Fragezeichen über dem Kopf hatte. Also meine Seiten baue ich nun, nach langer Zeit endlich mal mit Funktionen weil das besser sein soll, aber von OOP hab ich zu wenig Ahnung.

Ein weiteres Problem für mich ist auch, ich lese etwas über MVC weil damit so etwas gelöst werden kann. Kapiere es aber nicht wirklich :D Ich bin auch kein Fachinformatiker - Anwendungsentwicklung, der kann sich da bestimmt logisch leichter rein denken. Ich bekomme das aber irgend wie nicht hin und hoffe das man mir irgend wie helfen kann.

Wie schon erwähnt, hab ich versucht ein paar Beispiele zu finden.. Die ich auf meins ableiten kann, hab aber nichts gesehen und daher frage ich mal Euch und hoffe Ihr könnt mir ein wenig helfen :)

So, nun hab ich viel geschrieben.. Viel um den heißen Brei gesprochen und man versteht was mein Problem ist. Schon mal vielen dank für die Stille Anteilnahme.

Mfg. Anubis
 
Such dir ein CMS und passe es an dein Layout an.

Das macht dann den Rest für dich.

Händisch wird nur mehr entwickelt (und dann in der Regel mit Framework), wenn Sonderfunktionen benötigt werden, die nicht ohne weiteres über ein CMS bereitgestellt werden können.
 
Such dir ein CMS und passe es an dein Layout an.
Hm.. Ist ja auch immer leichter gesagt als getan :) Zumal, wenn ich da an joomla, contenido oder typo denke, kann man die nicht mehr mit den schon vorhandenen Daten nutzen. Vielleicht schon, aber die dort zu implementieren wäre mir zu mühsam, da ist ja selber bauen 100mal schneller :D

Dazu kommt noch, meistens ist in einem CMS irgend welcher Schnickschnack drin, den ich gar nicht will / brauche. HTML, CSS und PHP Kenntnisse sind ja vorhanden, nur nicht so extrem. Ich stehe auch lieber auf "self-made", in der Hoffnung das ich dann irgend wann an mein Ziel komme :)

Ist ja fast so, als wenn ich sage ich möchte mit Linux arbeiten, weil ich es interessant finde und fragen dazu habe, und es sagt mir einer "installiere dir Windows" :D

Gut, ist vielleicht ein doofer Vergleich.. Aber vielleicht versteht man, was ich meine :)
 
Die Frage ist ja: Was ist Deine Frage?
Denn Du hast viel Text geschrieben aber keine explizite Frage formuliert.

Mal so ein paar Stichworte:
dass ich behoben habe und da sagte man mir das ich mehr HTML verwenden sollte als alles via PHP in eine Variable zu packen
Jedes CMS- oder Template-System macht es nicht anders. Es sieht nur anders aus. ;)

Von dem Zerstückeln der gesamten Seitenstruktur in einzelne PHP-Dateien halte ich persönlich nicht viel. Da hat mir Dein vorheriges Modell besser gefallen.

Was mache ich mit dem Title der Seite, oder den Meta angaben?!
Das ist ein wesentlicher Grund, warum immer erst der eigentliche Seiten-Content generiert wird und dann erst das Template für Außenrum.

Wenn Du nicht die (Arbeits-)Zeit hast um Dich in ein MVC-Framework oder ähnliches einzuarbeiten, dann lass das schon mal.


Wie schon erwähnt, hab ich versucht ein paar Beispiele zu finden
Einfaches Seitenbasiertes-Template-System:
  • Eine index.php.
  • Ein Template-Verzeichnis. Diese TPL-Dateien bestehen aus HTML und ggf. Platzhaltern. (Z.B. "[HEADLINE]" oder "%%HEADLINE%%")
  • Ein Verzeichnis für dynamische PHP-Inhalte.
  1. Die index.php ließt die index.tpl als Seiten-Grundaufbau. (Also HEAD, BODY, JavaScript und CSS, etc.)
    Als Platzhalter sollten die wesentlichen Content-Teile eingesetzt werden:
    CONTENT, LEFT, RIGHT, oder so ähnlich.
  2. Anhand eines Parameters (z.B. "page") wird eine weitere TPL geladen.
  3. Falls vorhanden, wird ein dazugehörige PHP-Datei geladen, die wiederum die Platzhalter im Template ausfüllen darf.
  4. Am Ende wird der Content in die index.tpl eingesetzt und alles ausgegeben.

So ein Framework ist schnell geschrieben. Es hat den Vorteil, dass auch statische Inhalte (z.B. ein Impressum) recht schnell als Template hinterlegt sind ohne viel PHP-Programmierung.

Und im Grunde ist dies sogar eine MVC-Struktur. Die index.php ist der Controller, die Templates die View und PHP-Dateien das jeweilige Model.

huschi.
 
Bastel dir eine *.html-Seite, die dein Layout/Design darstellt. In diese Datei machst du, wie von Huschi schön erwähnt, ein paar Platzhalter rein (Title, Content usw.) und dann bauste dir eine index.php (oder page.php oder ...) und lässt diese Datei auf bestimmte Parameter reagieren (z.B. page).

Jetzt lässt du an Hand dieses Parameters bestimmte Daten aus der Datenbank auslesen, oder aus irgendwelchen statischen Dateien (file_get_contents() ist dein Freund) - hier evtl. mit if-else-Strukturen arbeiten.

Wenn du den Content in deinem vorgefertigtem Array hast ($data['content'], $data['title'], ...) dann lässt du via file_get_contents() deine Design-Datei auslesen und machst ein einfaches str_replace auf die Platzhalter mit den entsprechenden Daten aus dem $data-Array.

Wenn du es quick'n'dirty willst, dann würde ich dir mal vorschlagen das so auszuprobieren.
 
Back
Top