Extended Template / Art PHP in Modul-Template

Gesperrt
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Extended Template / Art PHP in Modul-Template

Beitrag von derSteffen » Sa 17. Dez 2011, 12:05

Hallo liebe Community,

ich möchte in meiner Article-List im Modul-Template sagen

Code: Alles auswählen

{if("{TEXT_1}" != "")}<br />{/if}
ansonsten halt kein <br />

Nun wollte ich aber vorher das an einem einfachen Beispiel testen und habe das class.ExtendedTemplate.php unter contenido/classes/ abgelegt

Code: Alles auswählen

    <?
    cInclude("classes", "class.template.php", false);


    /**
    * class ExtendedTemplate
    *
    * Erweiterte Version der Contenido-Templateklasse
    *
    * Die Funktion der Superklasse ist uneingeschränkt verfügbar.
    * Der erweiterten Klasse können Instanzen von Parserklassen, die von AbstractTemplateParser erben müssen,
    * oder deren Klassennamen übergeben werden, die dann nacheinander das Template auswerten.
    *
    * Fest Implementiert sind zur Zeit die Klassen:
    * - StrAPIFunctionsParser
    * - CounterFunctionParser
    * - IfFunctionParser
    *
    *
    * @author Stefan Welpot
    * @version 1.0
    */
    class ExtendedTemplate
       extends Template
    {
       var $array_registeredParsers;
       
       /**
        * Konstruktor
        *
        * @param $tags Array Tags Anfang und Ende des dynamischen Blocks, sowie für statische Bereiche
        * @param $parser Array Objektinstanzen von Kindklassen von AbstractTemplateParser oder deren Klassennamen
        */
       function ExtendedTemplate($tags = false, $parser = false) {
          $this->Template($tags);
          
          
          $this->array_registeredParsers = array(
                                     new StrAPIFunctionsParser(),
                                     new CounterFunctionParser(),
                                     new IfFunctionParser()
                                  );
                                  
                
          if(is_array($parser)) {
             $this->array_registeredParsers = $parser;
          }
          
       }
       
        /**
         * Generiert das Template und gibt es aus/zurück.
        *
         * @param $template string/file Template
         * @param $return bool Return or print template
         * @param $note bool Echo "Generated by ... " Comment
         *
         * @return string complete Template string
         */
        function generate($template, $return = 0, $note = 1) {
          $template = parent::generate($template, true, $note);

          foreach($this->array_registeredParsers as $class) {
             if(is_string($class)) {
                $classInstance = new $class;
             }
             else if(is_object($class)) {
                $classInstance = $class;
             }
             
             if(is_object($classInstance)) {
                if(is_subclass_of($classInstance, "AbstractTemplateParser")) {
                   $template = $classInstance->parse($template);
                }
                else {
                   $template = "TemplateParserKlasse " . get_class($classInstance) . " ist nicht von AbstractTemplateParser abgeleitet!";
                   break;
                }
             }
          }


            if ($return) {
                return $template;
            }
           
            echo $template;
       }
    }



    /**
    * class AbstractTemplateParser
    *
    * Abstrakte Superklasse für alle Templateparser
    *
    * @author Stefan Welpot
    * @version 1.0
    */
    class AbstractTemplateParser {

       /**
        * Konstruktor
        */
       function AbstractTemplateParser() {}
       
       /**
        * Parst das übergeben Template
        *
        * @param $template string das zu parsende Template
        *
        * @return string das geparste Template
        */
       function parse($template) {
          return $template;
       }
    }


    /**
    * class IfFunctionParser
    *
    * Implemenation des AbstractTemplateParser zum Auswerten von
    * If-Konstrukten im Template
    * Als Tags im Template sind vorgesehen:
    *   - {if(Bedigung)}
    *   - {else if(Bedingung)}
    *   - {else}
    *   - {/if}
    *
    * Ein If-Konstrukt besteht dabei mindestens aus {if(Bedingung)} und einem abschließenden {/if}.
    * Das {else if(Bedingung)} kann beliebig oft hintereinander verwendet werden.
    * Die Konstrukte an sich können beliebig tief geschachtelt werden.
    * Die Bedinungen der {if()}- und {else if()}-Teile werden durch eval ausgewertet
    * und können somit auch PHP-Funktionen interpretieren.
    *
    *
    * @author Stefan Welpot
    * @version 1.0
    */
    class IfFunctionParser
       extends AbstractTemplateParser
    {

        /**
         * Regexp-Pattern für {if(Bedingung)}
         * @var pattern_if
         */
       var $pattern_if =       "\{if\040*\((.*?)\)\}";

        /**
         * Regexp-Pattern für {else if(Bedingung)}
         * @var pattern_elseif
         */
       var $pattern_elseif =    "\{else if\040*\((.*?)\)\}";

        /**
         * Regexp-Pattern für {else}
         * @var pattern_else
         */
       var $pattern_else =    "\{else\}";

        /**
         * Regexp-Pattern für {/if}
         * @var pattern_endif
         */
       var $pattern_endif =    "\{\/if\}";
       
        /**
         * Länge des {if(Bedinung)}-Tags ohne Bedingung
         * @var patternlength_if
         */
       var $patternlength_if =         6;

        /**
         * Länge des {else if(Bedinung)}-Tags ohne Bedingung
         * @var patternlength_elseif
         */
       var $patternlength_elseif =    11;

        /**
         * Länge des {else}-Tags
         * @var patternlength_else
         */
       var $patternlength_else =       6;

        /**
         * Länge des {/if}-Tags
         * @var patternlength_endif
         */
       var $patternlength_endif =       5;



       /**
        * Konstruktor
        */
       function IfFunctionParser() {
          $this->AbstractTemplateParser();
       }

       
       /**
        * @see AbstractTemplateParser#parse(string)
        */
       function parse($template) {
          $array2_uncompletedConstructs = array(); //geöffnete, aber noch nicht geschlossene funktionen

          //hilfsvariablen
          $array_match_all = array();
          $array_match_part = array();
          $uncompletedConstructsIndex = 0;
          $elseifIndex = 0;
          $currentOffset = 0;
          $oldOffset = -1;
          
          $array_construct = array();
          
          $pattern_all = "/(?is)(" . $this->pattern_if . "|" . $this->pattern_elseif . "|" . $this->pattern_else . "|" . $this->pattern_endif . ")/";

            //das template solange nach konstruktteilen durchsuchen bis keine mehr gefunden werden
          while($currentOffset != $oldOffset) {
             $oldOffset = $currentOffset;
             
             //wenn irgendein teil einer if-konstruktion gefunden wird
             if(preg_match($pattern_all, $template, $array_match_all, PREG_OFFSET_CAPTURE, $currentOffset) > 0) {
                //herausfinden, welcher teil gefunden wurde
                //if-teil
                if(preg_match("/(?is)" . $this->pattern_if . "/", $array_match_all[0][0], $array_match_part) > 0) {
                   $uncompletedConstructsIndex++; //inkrement openFunctionIndex

                   $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['condition'] = $array_match_part[1];
                   $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['pos_start'] = $array_match_all[0][1];
                   $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['pos_end'] = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['pos_start'] + $this->patternlength_if + strlen($array_match_part[1]);
                   $currentOffset = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['pos_end'];   
                }
                //elseif-teil
                else if(preg_match("/(?is)" . $this->pattern_elseif . "/", $array_match_all[0][0], $array_match_part) > 0) {
                   $elseifIndex = count($array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif']);

                   $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['condition'] = $array_match_part[1];
                   $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['pos_start'] = $array_match_all[0][1];
                   $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['pos_end'] = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['pos_start'] + $this->patternlength_elseif + strlen($array_match_part[1]);
                   $currentOffset = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['pos_end'];   
                }
                //else-teil
                else if(preg_match("/(?is)" . $this->pattern_else . "/", $array_match_all[0][0], $array_match_part) > 0) {
                   $array2_uncompletedConstructs[$uncompletedConstructsIndex]['else']['pos_start'] = $array_match_all[0][1];
                   $array2_uncompletedConstructs[$uncompletedConstructsIndex]['else']['pos_end'] = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['else']['pos_start'] + $this->patternlength_else;
                   $currentOffset = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['else']['pos_end'];   
                }
                //endif
                else if(preg_match("/(?is)" . $this->pattern_endif . "/", $array_match_all[0][0], $array_match_part) > 0) {
                   $array2_uncompletedConstructs[$uncompletedConstructsIndex]['endif']['pos_start'] = $array_match_all[0][1];
                   $array2_uncompletedConstructs[$uncompletedConstructsIndex]['endif']['pos_end'] = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['endif']['pos_start'] + $this->patternlength_endif;
                   $currentOffset = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['endif']['pos_end'];   
                   
                   
                   //gefundene komplette funktion sofort ersetzen
                   $array_construct = array_pop($array2_uncompletedConstructs);
                   $uncompletedConstructsIndex--;
                   $template = $this->replaceConstruct($array_construct, $template);
                   //offset korrigieren = anfang der ersetzten funktion
                   $currentOffset = $array_construct['if']['pos_start'];
                }            
             }
          } // end while
          
          if($uncompletedConstructsIndex > 0) { // wenn noch offene Funktionen vorhanden sind => Fehler im Template
             $template = "Fehler in IF-Konstruktionen. Folgende If-Statements sind nicht abgeschlossen:<br>\n";
             foreach($array2_uncompletedConstructs as $array_construct) {
                $template .= "- {if(" . $array_construct['if']['condition'] . ")}<br>\n";
             }
          }
          
          return $template;
       } // end function
       
       
       /**
        * Ersetzt die als Array übergebene Funktion durch
        * den ersten Teil mit einer wahren Bedingung
        *
        * @param $array_construct Array das komplette If-Konstrukt das ausgewertet werden soll
        * @param $template string das Template in dem das Konstrukt ersetzt werden soll
        *
        * @return string das Template mit dem ersetzten Konstrukt
        */
       function replaceConstruct($array_construct, $template) {
          $array_elseif = array();      
          $key = 0;
          $replace_text = "";
          $boolConditionTrue = false;

          //prüfen ob der if-teil wahr ist und $replace_text finden
          if(eval("return " . $array_construct['if']['condition'] . ";")) {
             if(array_key_exists('elseif', $array_construct)) { //wenn ein elseif-teil existiert
                $replace_text = substr($template, $array_construct['if']['pos_end'], $array_construct['elseif'][0]['pos_start'] - $array_construct['if']['pos_end']);
             }
             else if(array_key_exists('else', $array_construct)) { //wenn nur ein else-teil existiert
                $replace_text = substr($template, $array_construct['if']['pos_end'], $array_construct['else']['pos_start'] - $array_construct['if']['pos_end']);
             }
             else {//wenn der nächste teil schon endif ist
                $replace_text = substr($template, $array_construct['if']['pos_end'], $array_construct['endif']['pos_start'] - $array_construct['if']['pos_end']);
             }
          }
          else {
             //alle elseif-teile prüfen
             if(is_array($array_construct['elseif'])) {
                foreach($array_construct['elseif'] as $key => $array_elseif) {
                   if(eval("return " . $array_elseif['condition'] . ";")) {
                      $boolConditionTrue = true;
                      
                      if(array_key_exists(($key + 1), $array_construct['elseif'])) { //wenn ein weiterer elseif-teil existiert
                         $replace_text = substr($template, $array_elseif['pos_end'], $array_construct['elseif'][$key+1]['pos_start'] - $array_elseif['pos_end']);
                      }
                      else if(array_key_exists('else', $array_construct)) { //wenn nächster teil nur ein else-teil ist
                         $replace_text = substr($template, $array_elseif['pos_end'], $array_construct['else']['pos_start'] - $array_elseif['pos_end']);
                      }
                      else {//wenn der nächste teil schon endif ist
                         $replace_text = substr($template, $array_elseif['pos_end'], $array_construct['endif']['pos_start'] - $array_elseif['pos_end']);
                      }
                      
                      break;
                   }
                }
             }
             
             //wenn bisher noch keine wahre Bedingung gefunden wurde
             if(!$boolConditionTrue) {
                if(array_key_exists('else', $array_construct)) { // wenn ein else-teil existiert
                   $replace_text = substr($template, $array_construct['else']['pos_end'], $array_construct['endif']['pos_start'] - $array_construct['else']['pos_end']);
                }
                else { // sonst wird das gesamte kontrukt durch einen leeren string ersetzt
                   $replace_text = "";
                }
             }
          } // end else
                   
          //if-konstruktion durch wahren teil ersetzen
          $template = substr_replace($template, $replace_text, $array_construct['if']['pos_start'], $array_construct['endif']['pos_end'] - $array_construct['if']['pos_start']);
          
          return $template;
       }
    }


    /**
    * class CounterFunctionParser
    *
    * Implemenation des AbstractTemplateParser zur Verwendung von
    * Zählern im Template
    * Als Tag im Template ist vorgesehen:
    *   - {counter PARAMETER}
    * Die PARAMETER sind:
    *   - name=ZÄHLERNAME
    *   - start=STARTWERT (default: 0)
    *   - step=SCHRITTWEITE (default: 1)
    *   - print=(true|false) (default: true)
    * Alle Parameter sind optional.
    *
    * Über die Name-Eigenschaft können mehrere unschiedliche Zähler verwendet werden.
    * Bei jedem Vorkommen des {counter}-Tags wird der gleichnamige Zähler um STEP erhöht.
    * Wird die Eigenschaft print auf true oder gar nicht gesetzt erfolgt eine Ausgabe des
    * Zählerwerts an der Stelle des {counter}-Tags
    *
    *
    * @author Stefan Welpot
    * @version 1.0
    */
    class CounterFunctionParser
       extends AbstractTemplateParser
    {

        /**
         * Regexp-Pattern für {counter PARAMETER}
         * @var pattern_countertag
         */
       var $pattern_countertag =   "/(?si)\{counter(.*?\})/";

        /**
         * Regexp-Pattern für Parameter name=NAME
         * @var pattern_countername
         */
       var $pattern_countername =   "/(?i)name\040?\=(.+?)(\040|\})/";

        /**
         * Regexp-Pattern für Parameter start=STARTWERT
         * @var pattern_counterstart
         */
       var $pattern_counterstart =   "/(?i)start\040?\=(\d+?)(\040|\})/";

        /**
         * Regexp-Pattern für Parameter step=SCHRITTWEITE
         * @var pattern_counterstep
         */
       var $pattern_counterstep =   "/(?i)step\040?\=(\d+?)(\040|\})/";

        /**
         * Regexp-Pattern für Parameter print=(true|false)
         * @var pattern_counterprint
         */
       var $pattern_counterprint =   "/(?i)print\040?\=(true|false)(\040|\})/";
       
        /**
         * Defaultwert für Parameter name
         * @var default_countername
         */
       var $default_countername = "unnamed";

        /**
         * Defaultwert für Parameter start
         * @var default_counterstart
         */
       var $default_counterstart = 0;

        /**
         * Defaultwert für Parameter step
         * @var default_counterstep
         */
       var $default_counterstep = 1;

        /**
         * Defaultwert für Parameter print
         * @var default_counterprint
         */
       var $default_counterprint = true;
       
       
       /**
        * Konstruktor
        */
       function CounterFunctionParser() {
          $this->AbstractTemplateParser();
       }

       
       /**
        * @see AbstractTemplateParser#parse(string)
        */
       function parse($template) {
          $counterParameters = "";
          $counterKey = "";
          $array_matches = array();
          $array_countermatches = array();
          $array_initCounters = array();
          $boolPrint = $this->default_counterprint;
          $boolDoNotInkr = false;
          
          preg_match_all($this->pattern_countertag, $template, $array_countermatches, PREG_SET_ORDER);

          for($i = 0; $i < count($array_countermatches); $i++) {
             $counterKey = "";
             
             $counterParameters = $array_countermatches[$i][1];

             //Attribut Countername auslesen, falls vorhanden
             preg_match($this->pattern_countername, $counterParameters, $array_matches);
             if(count($array_matches) > 0) {
                $counterKey = $array_matches[1];
             }
             else { // sonst defaultname
                $counterKey = $this->default_countername;
             }

                         
             if(!array_key_exists($counterKey, $array_initCounters)) { // neuen Counter initialisieren
                $array_initCounters[$counterKey]['value'] = $this->default_counterstart;
                $array_initCounters[$counterKey]['step'] = $this->default_counterstep;
                $boolDoNotInkr = true;
             }
             

             //Attribut step
             preg_match($this->pattern_counterstep, $counterParameters, $array_matches);
             if(count($array_matches) > 0) {
                $array_initCounters[$counterKey]['step'] = $array_matches[1];
             }
       

             //Attribut start
             preg_match($this->pattern_counterstart, $counterParameters, $array_matches);
             if(count($array_matches) > 0) {
                $array_initCounters[$counterKey]['value'] = $array_matches[1];
                $boolDoNotInkr = true;
             }
             
             
             // value regulär erhöhen
             if(!$boolDoNotInkr) {
                $array_initCounters[$counterKey]['value'] = $array_initCounters[$counterKey]['value'] + $array_initCounters[$counterKey]['step'];
             }
             else {
                $boolDoNotInkr = false;
             }
             
             
             //Attribut print
             preg_match($this->pattern_counterprint, $counterParameters, $array_matches);
             if(count($array_matches) > 0) {
                $boolPrint = (strcasecmp("true", $array_matches[1]) == 0) ? true : false;
             }
             else {
                $boolPrint = $this->default_counterprint;
             }


             if($boolPrint) {
                $template = preg_replace($this->pattern_countertag, $array_initCounters[$counterKey]['value'], $template, 1);
             }
             else {
                $template = preg_replace($this->pattern_countertag, '', $template, 1);
             }
          }
          
          return $template;
       }
    }



    /**
    * class StrAPIFunctionsParser
    *
    * Implemenation des AbstractTemplateParser zum Auswerten von
    * ContenidoStrAPIFunktionen.
    * Als erlaubte Funktionen sind vorgesehen:
    *   - {capiStrTrimHard(STRING, LÄNGE)}
    *   - {capiStrTrimAfterWord(STRING, LÄNGE)}
    *   - {capiStrTrimSentence(STRING, LÄNGE)}
    *
    * Die die Funktionen werden ertrahiert, ausgewertet und anschließend durch das Ergebnis ersetzt.
    *
    *
    * @author Stefan Welpot
    * @version 1.0
    */
    class StrAPIFunctionsParser
       extends AbstractTemplateParser
    {

        /**
         * zu ersetzende Funktionen
         * @var array_strAPIFunctions
         */
       var $array_strAPIFunctions = array(
                               "capiStrTrimHard",
                               "capiStrTrimAfterWord",
                               "capiStrTrimSentence"
                            );
                            

        /**
         * Konstruktor
         */
       function StrAPIFunctionParser() {
          $this->AbstractTemplateParser();
       }
       
        /**
         * @see AbstractTemplateParser#parse(string)
         */
       function parse($template) {
          $anzahlMatches = 0;
          $array2_matches = array();
          $evaledCode = "";
          
          foreach($this->array_strAPIFunctions as $functionname) {
             $anzahlMatches = preg_match_all("/(?si)\{" . preg_quote($functionname, "/") . "\(\"?(.*?)\"?,\040?(\d+?)\)\}/", $template, $array2_matches);

             for($i = ($anzahlMatches - 1); $i >= 0; $i--) {
                $evaledCode = eval("return " . $functionname . "(\"" . $array2_matches[1][$i] . "\", " . $array2_matches[2][$i] . ");");
                
                $template = preg_replace(
                            "/(?si)\{" . preg_quote($functionname, "/") . "\(\"?" . preg_quote($array2_matches[1][$i], "/") . "\"?,\040?" . preg_quote($array2_matches[2][$i], "/") . "\)\}/",
                            $evaledCode,
                            $template
                );
                
             } //end for(i)
          } // end foreach

          return $template;
       }
    }
    ?>
Dann habe ich ein einfaches Modul angelegt:

Code: Alles auswählen

<?php
cInclude('classes', 'class.ExtendedTemplate.php');
$tpl = new ExtendedTemplate();
$tpl->reset();
$tpl->set('s', 'TITEL', 'Das ist mein Titel!');
$tpl->generate('templates/extended-test.html');
?>
und ein Modultemplate extended-test.html

Code: Alles auswählen

Anfang vor Block
<br />
Test ob angezeigt: .... {TITEL}....
<br />
<!-- BEGIN:BLOCK -->
<em>*** Anfang im Block ***</em>
{if('{TITEL}'!="")}Hallo{/if}
{if('{TITEL}'=="")}Tschuess{/if}
<em>*** Ende im Block ***</em>
<!-- END:BLOCK -->
<br />
Ende nach Block
Aber komischerweise wird alles was innerhalb des BLOCKs ist gar nicht angezeigt! Auch nicht das "Hardcodierte"

Weiß jemand warum das so ist?

Vielen Dank

MfG Steffen
Zuletzt geändert von derSteffen am Mo 5. Mär 2012, 19:23, insgesamt 2-mal geändert.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Extended Template ... aber wie?!

Beitrag von Spider IT » Sa 17. Dez 2011, 14:51

Hallo Steffen,

ob dein Klassenmodul richtig ist kann ich jetzt nicht beurteilen, es sieht aber interessant aus.

Die Ausgabe des Blocks fehlt, weil du nur per $tpl->set('s', ... Daten übergibst, was nur die Datenfelder außerhalb des Blocks befüllt (s = statisch).
Um Daten innerhalb des Blocks auszugeben müssen diese mit $tpl->set('d', ... übergeben werden (dynamisch).
Außerdem muss die Befüllung des Blocks mit $tpl->next(); abgeschlossen werden (fängt auch gleichzeitig einen neuen Block an).

Gruß
René

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Extended Template ... aber wie?!

Beitrag von derSteffen » Di 20. Dez 2011, 09:23

Hallo Spider,

vielen Dank! Das war der Tipp und es funktioniert!

Das einfache Modul:

Code: Alles auswählen

<?php
cInclude('classes', 'class.ExtendedTemplate.php');
$tpl = new ExtendedTemplate();
$tpl->reset();
$tpl->set('s', 'TITEL', 'Titel statisch');
$tpl->set('d', 'TITEL', 'Titel dynamisch');
$tpl->next();
$tpl->generate('templates/extended-test.html');
?>
Das Modultemplate extended-test.html bleibt wie oben gehabt!

Code: Alles auswählen

Anfang vor Block
<br />
Test ob angezeigt: .... {TITEL}....
<br />
<!-- BEGIN:BLOCK -->
<em>*** Anfang im Block ***</em>
{if('{TITEL}'!="")}Hallo{/if}
{if('{TITEL}'=="")}Tschuess{/if}
<em>*** Ende im Block ***</em>
<!-- END:BLOCK -->
<br />
Ende nach Block
Wenn man jetzt für Testzwecke die Wörter "Titel dynamisch" löscht, erscheint im Template statt "Hallo" "Tschuess"

Das versuche ich jetzt mal auf eine Artikelliste anzuwenden, denn dann hat man hier im Modul-Template auch noch mal richtig mächtige Möglichkieten

Vielen Dank

MfG Steffen

PS: Die class.ExtendedTemplate.php ist natürlich nicht von mir sondern von Stefan Welpot
Zuletzt geändert von derSteffen am Mo 5. Mär 2012, 19:22, insgesamt 1-mal geändert.

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Extended Template in Article-List

Beitrag von derSteffen » Di 20. Dez 2011, 17:12

Extended Template in Article-List!

Daz habe ich in meinem Output meiner Artikel-Liste oben nach <?php das ergänzt

Code: Alles auswählen

cInclude("classes", "class.ExtendedTemplate.php");
Dann habe ich das gesucht

Code: Alles auswählen

if (!is_object($tpl)) {
$tpl = new Template;
        }
		$tpl->reset();
und durch das ersetzt!

Code: Alles auswählen

if (!is_object($tpl)) {
            // $tpl = new Template;
			$tpl = new ExtendedTemplate();
        }
        $tpl = new ExtendedTemplate();
		$tpl->reset();
Und jetzt habe ich in meiner Artikelliste ebfalls die Extended Templates - :-)

MfG Steffen

Gesperrt