Ergebnis 1 bis 19 von 19

Thema: Galerie

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Warnung, OT

    Zitat Zitat von drunken monkey
    Ich würde dir einfach raten, die Tabelle aufzumachen und dann den PHP-Code zu schreiben:
    Ich möchte nur darauf hinweisen, daß so etwas grauenerregend schlechter Stil ist und unter allen Umständen vermieden werden sollte. Inline-Code ist das PHP-Äquivalent zu GOTO: Er führt sehr schnell zu einem unwartbaren Haufen Spaghetticode, den selbst der Autor nur noch mit Mühe entwirren kann. Frag' mal SDS, warum niemand die RMXP-Erweiterung für's Atelier schreiben wollte.

    Wenn man mit PHP HTML-Code generiert sollte man Templates nutzen, wann immer das möglich ist. Mit Templates kann man ohne Probleme Interface und Programmlogik voneinander trennen - und sie sind gar nicht mal schwer umzusetzen.

    Ein einfaches Templatesystem könnte so aussehen:
    PHP-Code:
    ### Diesen Kram könnte man wunderbar in ein Include packen
    <?php
      
    // Lädt ein Template in einen String und escapt alle Anführungszeichen. Gibt
      // FALSE zurück, wenn die gewünschte Datei nicht existiert
      
    function load_template($file)
      {
        if (!
    is_file($file)) return false;
        return 
    str_replace('"','\"',implode('',file($file)));
      }

      
    // Diese Funktion nimmt den Content, wickelt ihn in eine Basisseite ein und
      // schickt ihn an den Browser
      
    function send_page($content$basefile)
      {
        
    $template load_template($basefile);
        
    $template str_replace('{CONTENT}'$content$template);

        echo 
    stripslashes($template);
      }
    ?>
    Den Kram benutzt man dann so:
    PHP-Code:
    <?php
      
    require('Die Datei da oben');

      
    // Hier kommt Code, der eine Liste von Zeilen erzeugt, die wir brauchen.
      // Beispielsweise Bild-URLs. Der Kram wird in $zeilen geschrieben.

      // Wir laden das Template, das die einzelnen Zeilen darstellt
      
    if (!$td_template load_template('res/td.htm'))
        die(
    'zOMG, konnte das Template nicht finden!!1');
      
    // Ein String, der hinterher die fertigen Tabellenzeilen beinhaltet
      
    $zeilen_liste '';

      foreach (
    $zeilen as $url)
      {
        
    // Wir schreiben den URL dahin, wo beim Template {URL} steht und
        // hängen das Ergebnis an die Liste an
        
    $zeilen_liste .= str_replace('{URL}'$url$td_template);
      }

      
    // Jetzt geben wir den Kram aus
      
    send_page($zeilen_liste'res/gallerie.htm');
    ?>
    Zum Schluß noch die beiden Templates:

    HTML-Code:
    ### res/gallerie.htm
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
      <head>
        <title>Galerie</title>
      </head>
      <body>
        <table>
    {CONTENT}
        </table>
      </body>
    </html>
    
    ### res/td.htm
          <tr><td><img src="{URL}" alt=""></td></tr>

    Das ist an sich alles, was man für Templates braucht. Man kann in einem Template mehrere Variablen verbauen (die man dann ersetzt, indem man mehrmals str_replace() mit verschiedenen Werten drüber laufen läßt) und man kann Templates in Templates verschachteln und so komplexe Seitenlayouts umsetzen (indem man einfach eine durchgearbeitete Templatevariable nimmt und sie per str_replace() in eine andere einfügt) und hat damit alle Möglichkeiten, die man ohne Templates auch hat. Aber der Code ist sauber getrennt (zwischen HTML und PHP) und man hat später kaum Schwierigkeiten, den Kram zu warten.

    Und ja, man sollte für jedes kleine poplige Projekt Templates verwenden (zumindest solange es HTML ausgibt). Wenn man sie nicht verwendet gewöhnt man sich daran, sie nicht zu verwenden und tut da irgendwann auch in einer Seite, die man (oder gar jemand anders) später noch mal warten können muß. Und das kann einem die Arbeit nur schwerer machen.

  2. #2
    Zitat Zitat von Jesus_666
    ...Bahnhof...billige Zahnpasta...
    ZOMG, ich verstehe kein Wort!
    Nein, im Ernst: ich hatte keine Ahnung, dass sowas überhaupt geht, ich habe einfach nur den einfachsten Code, der mir eingefallen ist genommen. Und genau das sind dann die Sachen, die gute Programmierer von Leuten trennen, die bloß funktionierende Sachen hinfetzen.

    Vielen Dank, du hast meinen Horizont erweitert! Fast so wie die Leute, die mir nach meiner ersten Homepage eine "Feuertaufe" verpasst haben!

    Aber am Anfang habe ich echt kein Wort verstanden. Jetzt habe ich's mir nochmal genau durchgelesen und kapiere immerhin halbwegs, um was es geht, vielen Dank!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •