Announcement

Collapse
No announcement yet.

Templatesystem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Templatesystem

    Hi<p>Ich habe eine kleine Klasse für Templates geschrieben. Ist nichts großes. Die Klasse lädt nur eine Datei, bekommt dann ein Array $arr[Bezeichner]=Inhalt übergeben und ersetzt alle angegebenen Bezeichner mit dem Inhalt. Dann gibt die Klasse das ganze auf dem Bildschirm aus.<br>Das ganze funktioniert auch prima, nur möchte ich die Klasse jetzt erweitern. Und zwar gibt es auf meiner Webseite dynamisch generierte Inhalte, sprich Tabellen mit variablen Zeilenzahlen. Bisher habe ich einfach gar keine Zeilen in die HTML-Template-Datei geschrieben, sondern nur einen Bezeichner, dann sämtliche Zeilen dynamisch im PHP generiert und als Bezeichnerinhalt der Klasse übergeben. Aber ein Template ist ja dazu da, ein Design vorzudefinieren und dazu gehört ja auch zB das Layout von Tabellenzeilen. Also müsste ich in der Templatedatei irgendwie speichern, was so eine Tabellenzeile für einen HTML-Code hat, und das PHP-Script müsste dann diese Angabe zum Generieren der Tabelle nutzen...wie kann ich das am Besten realisieren? Oder gibt es da bessere Lösungen?</p><p>danke schonmal für eure Hilfe, Sebastian Meßmer</p>

  • #2
    Hallo Sebastian,

    Templateklassen gibt es von ganz klein zum bloßen Erstzen von Platzhaltern bis absolut mächtig mit eigener Scriptsprache etc. Ich würde mir hier nicht die Mühe machen wollen eine EIGENE Klasse (frei nach dem Motto: Es wurde schon alles programmiert - nur noch nicht von jedem zu schreiben, sondern die Zeit lieber in ein wenig Googlelei investieren.

    Aber als Ansatz zum selber machen: Du definierst in deinem Template einen Block der z.B. eine Tabellenzeile darstellt. An die Stelle, wo die Zeile dann wiederholt ausgegeben werden soll setzt du einen deiner "Bezeichner". Deine Templateklasse muß jetzt zusätzlich den definierten Block aus dem Template extrahieren und diesen dann für jede dynamische Zeile in den entsprechenden Platzhalter schreiben.

    Aber wie gesagt, das gibt es alles schon. Eine einfache und aus meiner Sicht gute Klasse ist z.B. die von Kristian Koehntopp siehe <a href=http://www.koders.com/php/fid0C11D864BB3E9A40A57FDED18F503B7891C1C87E.aspx>h ier</a>.

    Gruß Fal
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hi<p>Ich hab bei Google gesucht und bin auf PHPLib gestoßen...da da auch gleich noch ein Tutorial dabei war (bei der Klasse von Kristian Koehntopp leider nicht), habe ich mich für PHPLib entschieden<br>Danke für deine Hilfe!!!</p><p>cu,<br>Sebastian Meßmer</p&gt

      Comment


      • #4
        hi ich hab schon eine Template klasse geschrieben die auch prima funktioniert...

        überall außer in 2scripten!!!!!

        und ich komm nicht drauf was da schief läuft....

        irgendwie wird die mitte der php übersprungen und nur anfang und ende werden ausgeführt...

        ein sehr verwirrendes ergebniss kommt raus..

        http://botondope.bo.funpic.de/forumtest

        aber alles andere geht!
        zb im Kontrollzentrum(username: name passwort: pw) die pns,
        das ist fast das gleiche script wie das wo der fehler kommt

        woran kann das liegen?
        (code gegen anfrage)

        EDIT:
        dähmlicher server blockt externes linken..
        erst http://botondope.bo.funpic.de
        dann geht die url(oder auf link: der test ordner klicken

        Comment


        • #5
          Hi<p>Könntest du genauere Angaben machen? Ich versteh dein Problem gar nicht..

          Comment


          • #6
            ok also (ich verstehs ja selber nicht :P)

            naja also das script sieht grob so aus:

            <pre>

            //quatsch aus db laden

            //platzhalter ersetzen
            $code = str_replace('&lt;!--thread_Name--&gt;',$title,$code);

            //so weit gehts noch, aber jetzt

            //inerhalb von beitr_start bis ende alles wiederholen bis db 'leer'
            $b=0;
            while(($a=strpos($code ,'&lt;!--beitr_start--&gt;',$b))&&($a!=false))
            {
            $b = strpos($code ,'&lt;!--beitr_ende--&gt;',$a);
            if ($b==false){break;}
            $beitragscode = substr($code ,$a+18,$b-$a-18);
            $rbtrcode = '';

            while(/*aus db laden*/)
            {
            //while von beitrags lesen
            $add = $beitragscode;

            //platzhalter ersetzen
            $add = str_replace('&lt;!--beitr_Name--&gt;',$row-&gt;Titel,$add);

            $rbtrcode.= $add;
            //while von beitrags lesen ende
            }

            $code = substr($code,0,$a) . $rbtrcode . substr($code,$b+17,strlen($code)-$b-17);
            }

            echo $code;
            </pre>

            in $code is jetzt aber nicht mal mehr &lt;!--thread_Name--&gt; ersetzt

            wenn ichs vor der schleife ausgebe aber schon!

            ich kapier das nicht.

            Comment


            • #7
              hab den fehler gefunden!!!!
              juhu!
              danke an alle die sich mein zeug mal durchgelesen haben!

              der fehler war (wie gesagt) komisch:

              nach
              <pre>
              if ($row->allow != '*')
              {
              [..]
              }
              </pre>
              wurde nichts mehr ausgeführt??
              (außer echo was es noch kommischer macht

              Comment


              • #8
                der fehler is wieder da ;(
                ich kapier es nicht!!!
                falls jemand die entschlossenheit hat den code durchzugehn:
                <a href="http://web63.mwi5.de/Drak/Admin/showforum.txt">showforum.txt</a&gt

                Comment


                • #9
                  ich hab ihn wuhu!

                  aber wieso hat php
                  <pre>$ergebnis = mysql_query($miniabfrage) or require("./dberror.php");</pre>
                  nicht gemacht?
                  sondern irgendwas komisches??
                  naja jetzt steht da <pre>die(mysql_error());</pre> das ist grafisch nicht schön aber auch o

                  Comment


                  • #10
                    Hi Daniel,
                    Du könntest natürlich require() durch include() ersetzen, dann sollte es gehen.
                    Info:
                    require(): Datei wird auf jeden Fall beim Aufruf des Skriptes eingefügt.
                    include(): Datei wird erst eingefügt, wenn die Anweisung (include) ausgeführt wird

                    Comment


                    • #11
                      ach oh!
                      ich dachte der einzige unterschied wär das require das script beendet wenn die datei nicht da ist..
                      danke

                      Comment

                      Working...
                      X