/me will auch ne templateklasse

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

  • #31
    Caching?

    Ich grab das mal wieder aus, weil... mir liegt da was auf dem Herzen:

    Template:
    Code:
    <ul>
      <li><a href="?param=wert1">Wert1</a></li>
      <li><a href="?param=wert2">Wert2</a></li>
    </ul>
    Zuletzt generiert: {now dateformat:"H:i:s"}
    {include _get.param default:"leer"}
    Kompiliertes Template
    PHP-Code:
    <ul>
      <li><a href="?param=wert1">Wert1</a></li>
      <li><a href="?param=wert2">Wert2</a></li>
    </ul>
    <?php echo date("H:i:s"); ?>
    <?php $this
    ->fetch(
      (!isset(
    $_GET['param']) or $_GET['param'] === '') ? 
      
    "leer" 
      
    $_GET['param'], true); ?>
    Ausgabe mit
    PHP-Code:
    $tpl->display('template.tpl'); 
    Lustiges Klicken auf die beiden Links ändert auch - wer hätt's gedacht - die letzte Zeile der Ausgabe, da ein anderes Subtemplate eingebunden wird

    Aber...
    Ausgabe mit
    PHP-Code:
    $tpl->display('template.tpl'5); 
    Erzeugt im Cacheordner ein Abbild des Templates, so wie es ausgegeben wird. Wenn ich jetzt innerhalb voon 5 Sekunden auf die Links klicke, wird kein anderes Subtemplate eingebunden.

    Ich müsste also in der gecachten Version die generierte Ausgabe speichern, aber das Einbinden von Subtemplates soll nicht gecacht werden. Es sollte also so aussehen:
    PHP-Code:
    <ul>
      <li><a href="?param=wert1">Wert1</a></li>
      <li><a href="?param=wert2">Wert2</a></li>
    </ul>
    14:20:23
    <?php $this->fetch(
      (!isset(
    $_GET['param']) or $_GET['param'] === '') ? 
      
    "leer" 
      
    $_GET['param'], true); ?>
    Das bekomme ich auch ohne Probleme hin, problematisch wird es allerdings

    dann, wenn ich Subtemplates in einer Schleife einbinde und das Subtemplate mit den Werten, über die iteriert wird, arbeitet. In so einem Fall dürfte ich die komplette Schleife nicht cachen.

    Lohnt es sich, den Aufwand zu betreiben und wenn ja, wie würdet ihr da rangehen?

    Kurzes Beispiel:
    Code:
    Inhalt des POST-Arrays:<br />
    {loop at _post into post}
      {include post}
      <br />
    {endloop}
    wird zu:
    PHP-Code:
    Inhalt des POST-Arrays:<br />
    <?php
      
    foreach ($_POST as $post) {
        
    $this->fetch($posttrue);
    ?>
      <br />
    <?php
      
    }
    ?>
    Wenn ich das cache und der Benutzer innerhalb der "Cachelebenszeit" einen anderen Eintrag im Formular auswählt, sieht es für ihn so aus, als würde ich die falschen Subtemplates einbinden, hier bringt es mir also nichts, nur das $this->fetch nicht zu cachen, ich müsste die komplette Schleifen außen vor lassen
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #32
      OffTopic:
      Ohne die Problematik gnau gelesen zu haben .... wer benutzt schon Subtemplates
      h.a.n.d.
      Schmalle

      http://impressed.by
      http://blog.schmalenberger.it



      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
      ... nur ohne :-)

      Kommentar


      • #33
        Code:
        {loop at users into user}
          {* Das ist ein Kommentar und user_shortinfo.tpl liefert 
               allgemeine Infos zu einem Benutzer, nämlich zu dem
               in der Variablen user *}
          {include "user_shortinfo.tpl"}
        {endloop}
        Wenn ich als Templatebastler jetzt gesagt bekomme, dass man da ruhig die komplette Info zu den Benutzern anzeigen soll, dann muss ich das nur ändern in:
        Code:
        {loop at users into user}
          {* Das ist ein Kommentar und user_fullinfo.tpl liefert 
               alle Infos zu einem Benutzer, nämlich zu dem
               in der Variablen user *}
          {include "user_fullinfo.tpl"}
        {endloop}
        Ohne Subtemplates müsste ich das Template selbst komplett ändern, da ich den Inhalt des Subtemplates statt {include} reinschreiben muss, dass ist erstens unübersichtlicher und zweitens eventuell redundant, wenn ich die Userinfos nämlich an anderer Stelle auch brauche

        Alternativ gebe ich das an dich als PHP-Mensch weiter und du musst im Skript Sachen anpassen, da ich als Templatebastler von PHP nämlich keine Ahnung habe

        Für was entscheidest du dich?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #34
          Für was entscheidest du dich?
          Für einfache IF/Else Konstrukte in den Templates, die jeder Idiot versteht
          Ist sicher weniger verwiurrend als include- Anweisungen ....
          h.a.n.d.
          Schmalle

          http://impressed.by
          http://blog.schmalenberger.it



          Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
          ... nur ohne :-)

          Kommentar


          • #35
            Code:
            {if showfullinfo}
              Ganz viel HTML und {xyz}-Mischmasch
            {else}
              Ganz viel HTML und {xyz}-Mischmasch, 
              aber immerhin etwas weniger als beim if
            {endif}
            So?
            Sieht etwas verwirrend aus, wenn man 2 * 40 - 50 Zeilen sieht (Beispielwerte) vondenen aber nur ca. die Hälfte angezeigt wird
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #36
              happy .... stell dich doch nicht so blöd an
              Code:
              {loop users}
              username: {username}
              {if user==admin}kontonummer: {kontonummer]{endif}
              {/loop}
              h.a.n.d.
              Schmalle

              http://impressed.by
              http://blog.schmalenberger.it



              Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
              ... nur ohne :-)

              Kommentar


              • #37
                OK, machen wir's anders.

                - Du bist normaler Mitarbeiter und stöberst so durch die Mitarbeiterprofile und siehst:
                &nbsp;&nbsp;Vorname
                &nbsp;&nbsp;Nachname
                &nbsp;&nbsp;Abteilung
                &nbsp;&nbsp;Abteilungsleiter

                - Ich als Firmenchef und sehe im Adminmenü:
                &nbsp;&nbsp;Vorname
                &nbsp;&nbsp;Nachname
                &nbsp;&nbsp;Abteilung
                &nbsp;&nbsp;Abteilungsleiter
                &nbsp;&nbsp;Straße
                &nbsp;&nbsp;Wohnort

                - Der Abteilungsleiter sieht beim Stöbern durch die Profile:
                &nbsp;&nbsp;Vorname
                &nbsp;&nbsp;Nachname
                &nbsp;&nbsp;Abteilung
                &nbsp;&nbsp;Abteilungsleiter
                &nbsp;&nbsp;Straße
                &nbsp;&nbsp;Wohnort
                wobei die letzten beiden Werte nur angezeigt werden, wenn es sich beim User um einen Mitarbeiter seiner Abteilung handelt

                Wenn ich mit Subtemplates arbeite:
                Code:
                {loop at users into user}
                  {if user.chef = _session.userid}
                    {include "user_fullinfo.tpl"}
                  {else}
                    {include "user_shortinfo.tpl"}
                  {endif}
                {endloop}
                und ich im Adminmenü kann auch einfach
                Code:
                {loop at users into user}
                  {include "user_fullinfo.tpl"}
                {endloop}
                machen. Das finde ich persönlich besser und übersichtlicher, als
                Code:
                {loop at users into user}
                  {if user.chef = _session.userid}
                    {user.vorname}
                    {user.nachname}
                    {user.abteilung}
                    {user.abteilungsleiter}
                    {user.strasse}
                    {user.ort}
                  {else}
                    {user.vorname}
                    {user.nachname}
                    {user.abteilung}
                    {user.abteilungsleiter}
                  {endif}
                {endloop}
                und im Adminmenü
                Code:
                {loop at users into user}
                  {user.vorname}
                  {user.nachname}
                  {user.abteilung}
                  {user.abteilungsleiter}
                  {user.strasse}
                  {user.ort}
                {endloop}
                Vor allem ist da ja normalerweise auch noch HTML dazwischen und das ganze Zeugs wird dadurch ja nicht unbedingt kleiner...
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #38
                  Gib doch einfach zu, dass du zu faul bis if/else in deine Klasse einzubauen
                  Damit lässt es sich wirklich erheblich einfacher arbeiten. Und das arbeiten ohne Subtemplates geht schneller von der Hand. Vor allem, wenn ein verkommener Frontpage- User davor sitzt. Und es spart das einlesen von weiteren Templates über das Datei- System ....

                  Du musst noch viel lernen mein Kleiner

                  Was war jetzt doch gleich Dein Problem?
                  h.a.n.d.
                  Schmalle

                  http://impressed.by
                  http://blog.schmalenberger.it



                  Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                  ... nur ohne :-)

                  Kommentar


                  • #39
                    Original geschrieben von schmalle
                    Gib doch einfach zu, dass du zu faul bis if/else in deine Klasse einzubauen
                    Auch wenn's dir nicht aufgefallen ist: if, elseif, else und endif sind drin
                    Und das arbeiten ohne Subtemplates geht schneller von der Hand. Vor allem, wenn ein verkommener Frontpage- User davor sitzt.
                    Dem es viel Spaß macht, eine eigentlich zentrale Sache in mehreren Templates ändern zu müssen, weil er sie überall hat reinschreiben müssen anstatt einfach immer nur das selbe Subtemplate einzubinden, was auch nur eine einmalige Änderung bedeuten würde

                    Was war jetzt doch gleich Dein Problem?
                    Dass ich das Einbinden von Subtemplates an sich nicht cachen will, aber eventuell umschließende Schleifen dann auch nicht cachen darf und ich nicht weiß, ob sich der Aufwand lohnt, diese Sachen rauszusuchen und wie ich das am besten mache oder ob ich auf das Cachen verzichte und mich mit dem Kompilieren begnüge.

                    Stell dir mal vor, du hast irgendwo so ne tolle Navigation
                    Code:
                    PHP script resource > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS > /me will auch ne templateklasse
                    und willst die jetzt über und unter dem Thread haben und hast die Navigation aber nicht nur in deinem Forum sondern auch noch auf dem Rest der Seite (Urlaub -> Deutschland -> Mallorca )

                    Dann würdest du
                    Code:
                    {loop at breadcrumbs into breadcrumb}
                      <a href="breadcrumb.path">{breadcrumb.link</a> 
                      {if !breadcrum.looplast} &gt; {endif}
                    {endif}
                    überall da hinschreiben, wo du diese Navigation haben willst?
                    Und wenn du das > zwischen den Links in » ändern willst, durchsuchst du alle Templates die du hast?

                    Oder hast du die Navigation in einem Extra-Template, dass du im Skript mit $tpl->display('breadcrumb.tpl') überall da einbindest wo du willst? Dann müsstest du's nur einmal ändern, aber du musst immer im Skript arbeiten, wenn jemand kommt und sagt Unter dem Thread brauch ich die Navi nicht

                    Ich schreibe überall
                    Code:
                    {include "breadcrumb.tpl"}
                    So muss ich nur eine Datei ändern und ich muss nicht im Skript rumfuhrwerken, wenn die Navi auf einmal irgendwo (doch nicht mehr) angezeigt werden soll
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #40
                      Natürlich will auch nicht 700 Templates ändern, wenn ich eine Blockzuweisung abändere. Daher erlaube ich mir Funktionen in Templates. z.B. {nav()}. Diese würde unter Umständen gar ein anderes/sub- Template verwenden. Ansonsten trenne ich noch skin und Content über verschiedene Templates. Somit habe ich max. 3 Templates. Schleifen sind Schleifen sind Schleifen, und haben keine eigenen Templates.
                      z.Z. suchen wir selber nach einer sinnvollen Lösung für das Cachen von Templates, bzw. um- und wegschreiben in PHP um Performance zu sparen. Aber wir ( Berni und ich ) sagen uns "hmm, vielleicht so und so, und dann so". Dann lacht Titus uns aus, und sagt uns wie man´s richtig macht Wenn´s fertig ist, kannst Du gerne eine Lizenz erwerben

                      Zu Deinem aktuellen Problem;
                      Ich würde sagen, dass es auf den Umfang Deiner Templates an kommt. Wenn Sie sehr komplex sind, würde ich auf´s cachen nicht verzichten. Wenn Sie hingegen relativ klein sind, aber dafür relativ viele Schleifen enthalten, die nicht im Cache landen sollen, verwerfe den Cache.
                      h.a.n.d.
                      Schmalle

                      http://impressed.by
                      http://blog.schmalenberger.it



                      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                      ... nur ohne :-)

                      Kommentar


                      • #41
                        Original geschrieben von schmalle
                        z.Z. suchen wir selber nach einer sinnvollen Lösung für das Cachen von Templates, bzw. um- und wegschreiben in PHP um Performance zu sparen. Aber wir ( Berni und ich ) sagen uns "hmm, vielleicht so und so, und dann so". Dann lacht Titus uns aus, und sagt uns wie man´s richtig macht Wenn´s fertig ist, kannst Du gerne eine Lizenz erwerben
                        wenn du mit um- und wegschreiben dass meinst, was ich bereits mache, dann mach ich dir nen guten preis *g*
                        aber austauschen können wir uns ja mal, müssen ja nicht alle alles doppelt und dreifach erfinden

                        Die Funktionen die du dir erlaubst, gehören die zur Templateklasse oder sind die irgendwo definiert?
                        Von der Syntax her wären die nämlich beim ir auch schön schnell drin, einfach eine Datei command.nav.php im richtigen Ordner abgelegt und e voila...

                        Zu Deinem aktuellen Problem;
                        Ich würde sagen, dass es auf den Umfang Deiner Templates an kommt. Wenn Sie sehr komplex sind, würde ich auf´s cachen nicht verzichten. Wenn Sie hingegen relativ klein sind, aber dafür relativ viele Schleifen enthalten, die nicht im Cache landen sollen, verwerfe den Cache.
                        ich denke, ich verwerfe den cache, das template muss ich ja nur genau ein einziges mal parsen, danach ist es ja schon reines php, wo ich völlig ohne reguläre ausdrücke und ähnlichen kram auskomme und das einfach ausgegeben wird
                        Zuletzt geändert von mrhappiness; 05.01.2005, 15:51.
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #42
                          Austauschen ist gut Mach mal Meldung, wenn´s feddich ist
                          h.a.n.d.
                          Schmalle

                          http://impressed.by
                          http://blog.schmalenberger.it



                          Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                          ... nur ohne :-)

                          Kommentar

                          Lädt...
                          X