Loops in Templates

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Loops in Templates

    Wie sinnvoll ist es eurer Meinung Loops in Templates einzubauen?
    Bis jetzt hab ich's so gemacht, dass ich für den Schleifenkopf eine Datei genommen hab, für den Rumpf eine Datei und für das Ende der Schleife auch noch eine Datei.
    Bsp:
    template_head.tpl
    <table>

    template_for.tpl
    <tr><td>{hallo}</td></tr>

    template_end.tpl
    </table>

    Ist sowas sinnvoll oder sollte man den Designer der Templates überhaupt nicht mit Loops belästigen?

    MfG Markus

  • #2
    Mhh, naja, angenommen du willst ein Gästebuch haben, dann soll jeder eintrag gleich aussehen... also könntest du das mit ner schleife machen:

    foreach:$eintraege as $e
    {$e['date']}: {$e['name']}
    <hr />
    $e['text']
    <br />
    <br />
    endforeach

    Natürlich kannst du auch einfach eine Datiei erstellen die ein template für die einzelnen schleifenelemente enthällt, aber ich finde es so mit schleifen recht übersichtlich....
    Und es ist auch realisierbar wenn der designer nich zu dumm ist.
    Die Musikreview Seite

    hi, i'm a signature virus. copy me into your signature to help me spread.

    Kommentar


    • #3
      auf jeden Fall sinnvoll,
      schon alleine um bei größeren Projekten nicht 100te tpl-Dateien zu haben.
      Außerdem ist es viel übersichtlicherer, ohne immer in anderen Dateien die loop suchen zu müssen.
      Bei mir sieht es so aus:

      Code:
      <h2>Geb&auml;ude&uuml;bersicht</h2>{loop gebaeude_site}
      <table>
      	<tr>
      		<th>Geb&auml;ude</th>
      		<th>Anzahl</th>
      		<th>Arbeiter</th>
      		<th>Ausbildung</th>
      	</tr>{loop gebaeude_liste}
      	<tr>
      		<td class=first><img src="images/{image}.gif" height=9 width=9> <a href="index.php?go=geb&amp;geb={id}">{gebaeude_type}</a></td>
      		<td class=right>{anzahl}</td>
      		<td class=right>{mit} / {max}</td>
      		<td class=right>{stufe}</td>
      	</tr>{/loop gebaeude_liste}
      </table>{/loop gebaeude_site}
      <br><a href="index.php?go=geb&amp;build=0">neues Ge&auml;ude bauen</a>{loop gebaeude_build}
      <br><br>im Bau befinden sich<br><br>
      <table>
      	<tr>
      		<th>Geb&auml;ude</th>
      		<th>Bauarbeiter</th>
      		<th>Status</th>
      	</tr>{loop gebaeude_build_liste}
      	<tr>
      		<td class=first><a href="index.php?go=geb&amp;det={id}">{gebaeude_type}</a></td>
      		<td class=right>{anzahl}</td>
      		<td>{status}</td>
      	</tr>{/loop gebaeude_build_liste}
      </table>{/loop gebaeude_build}
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #4
        Danke, genau sowas wollte ich hören!
        Hast du "rein zufällig" noch die Funktion da, welche die loops austauscht? (sind verschachtelte loops damit auch möglich?) Dürfte sich warscheinlich recht einfach in meine bisherige Template Klasse integrieren lassen!
        Noch ne Frage? Wie der Schleifenrumpf sich integrieren lässt habe ich ja jetzt an deinem Beispiel gesehen, aber nehmen wir mal an, ich schick ne Suchanfrage an die DB und bekomm keinen Datensatz zurück, dann habe ich ja immernoch den Schleifenkopf bzw- ende im HTML Ergebnis. Wie würde man das raus bekommen und dann stattdessen "Kein Datensatz gefunden" ausgeben lassen?
        Genauso wenn man 2 verschiedene Rümpfe einbasteln muss um z.B. wie in phpmyadmin unterschiedliche Zeilencollorierungen zu bekommen wie handhabst du das, oder muss man bei sowas wieder auf die Mehrdateienlösung zurück greifen?

        MfG Markus

        Kommentar


        • #5
          der von mir gepostete Templateausschnitt ist selber nur ein loop in einem viel
          größeren Template. Und ja, verschachtelte loops sind beliebig tief möglich.
          Zu dem Problem der Rümpfe, mach dir doch zwei loops nebeneinander, und du
          entscheidest dann später, welche der beiden angezeigt wird. Oder packe dir
          eine Variable für die Farbe mit in den loop.

          PS: auf keinen Fall in lauter kleine Dateien zersplitten, das kann später fast keiner
          mehr pflegen wenn was geändert werden soll. Mit meiner Engine könnte man eine
          einzige tpl-Datei für ein beliebig großes Projekt benutzen.
          Derzeit benutze ich für jede php-Datei eine tpl-Datei mit dem selben Namen, dann
          weiß ich immer, wo ich die Templates finde.
          TBT

          Die zwei wichtigsten Regeln für eine berufliche Karriere:
          1. Verrate niemals alles was du weißt!


          PHP 2 AllPatrizier II Browsergame

          Kommentar


          • #6
            //EDIT: Schwachsinns Post, Sorry
            Zuletzt geändert von Floriam; 09.05.2004, 12:21.
            PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

            Kommentar


            • #7
              Mit meiner Engine könnte man eine
              Würde sich aber sicher negativ auf die geschwindigkeit auswirken denke ich. Halte es genauso wie du, Pro "seite" ein gleichnamiges Template.

              Wie hälst du es mit dem Parsen? Parst du erst das gesammte Template, oder machst du es später (vermutlich besser)? Hab nämlich Bemerkt, dass ich meine (damals zusammen mit Abraxax gebastelt) mal umstrukturieren/optimieren müsste.

              Kommentar


              • #8
                das Template wird als letzte Aktion der Seite geladen, geparst und ausgegeben.
                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #9
                  jupp, war auch meine idee (wegen speicher) leider etwas too late, so dass ich irgendwann noch mal drüber arbeiten muss. aber das schöne an Klassen ist ja, dass man das einfach ändern kann, ohne am Aufruf der Methoden was zu ändern

                  Kommentar


                  • #10
                    Danke für die vielen Antworten!!!
                    Findet man deine Template Klasse im Code-Schnipsel Forum?

                    MfG Markus

                    Kommentar


                    • #11
                      zumindest in den Tutorials.

                      Ich vertrete allerdings die Meinung, dass man nur eine eigene richtig ausnutzen und vorallem erweitern kann

                      Kommentar


                      • #12
                        Will ja bloss die Schleifenfunktion nutzen.
                        Der Rest meiner Template Klasse steht bzw. ist schon vielfach im Einsatz!

                        MfG Markus

                        Kommentar


                        • #13
                          bin auch grad dabei noch ne schleifenfunktion umzusetzen.
                          Ich werds dir zeigen sobald es fertig ist.

                          Kommentar


                          • #14
                            Verschachtelte Schleifen

                            Mein Templatesystem funktioniert bisher so, dass es bei jeder Parse_loop fkt nur jeweils eine "Schleifen-Schicht" parsed... d.h. bei verschachtelten schleifen wird die fkt sooft aufgerufen bis keine mehr da ist...

                            Aber ehrlichgesagt find ich das schrecklich....

                            Wie habt ihr das gelößt?

                            Würde mich über jeden sinnigen Pseudocode freuen
                            Die Musikreview Seite

                            hi, i'm a signature virus. copy me into your signature to help me spread.

                            Kommentar


                            • #15
                              leider dito und ähnlich erfreut darüber. allerding hab ich bis jetzt auch höchstens eine zweite verschachtelung (main->sub->sub2) gebraucht.

                              Kommentar

                              Lädt...
                              X