Ankündigung

Einklappen
Keine Ankündigung bisher.

CMS + Smarty? oder eigenes Templatesystem?

Einklappen

Neue Werbung 2019

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

  • CMS + Smarty? oder eigenes Templatesystem?

    Hallo,

    ich werde die nächsten Tage anfangen, mein eigenes CMS zu schreiben (dass denn irgendwann auch zum Download angeboten werden soll).
    Nun stellt sich mir die Frage: Soll ich für das CMS Smarty als Templatesystem nehmen oder soll ich lieber ein eigenes schreiben?
    Mit einem eigenem Templatesystem, wäre das ganze natürlich schneller, aber spricht irgendetwas dagegen ein eigenes zu nehmen?

    Was meint ihr?

  • #2
    ka
    da ich keine anderen templatsysteme nutze kann ich auch nicht's darüber sagen
    nur kann ich sagen das ich immer mein eigenes system nutze und dadurch
    a) nur features integriert sind die ich auch brauche
    b) es eine angepasste fehlerroutine gibt
    c) anpassung an neue "umstände" wesentlich schneller gehen


    mfg

    Kommentar


    • #3
      a) nur features integriert sind die ich auch brauche
      Genau, das dachte ich auch schon
      b) es eine angepasste fehlerroutine gibt
      c) anpassung an neue "umstände" wesentlich schneller gehen
      Ok, stimmt.

      Joa also wenn keiner noch irgendetwas sagt, was total dagegen spricht, dann werde ich wohl eine eigene Template-Klasse benutzen (naja, und vorher werde ich sie wohl erst noch schreiben müssen )

      Kommentar


      • #4
        wenn du an das template caching gehst sag bescheid ich suche noch einen guten Gedankenansatz wie ich eine eigene cache klasse erstellen kann

        viel spass beim schreiben

        Kommentar


        • #5
          Das ist die Templatefunktion meines CMS:

          PHP-Code:
          function template ($Template='',$Parse=0,$ModulLoad='./portal_style/templates/',$DoExtract=0) {
            global 
          $Status,$StatusToday,$User,$Page,$Menue;
            if (
          $Session['id']) global $UserStatus,$UserProfil;
              
            if (
          $GLOBALS['Site']) global $Site;
            if (
          $GLOBALS['Modul']) global $Modul;
            
            if (
          $ModulLoad == './portal_style/templates/' or empty($ModulLoad)) $ModulLoad='./portal_style/templates/'.$User['style_templates'];
            elseif (
          $ModulLoad != '_var'$ModulLoad='./module/'.$ModulLoad.'/templates/';
            if (
          $ModulLoad != '_var') {
              if (!
          $GLOBALS['Core']['TemplateCache'][$ModulLoad][$Template]) $Status['TemplateCounter']++;
                if (
          substr($Template,-4) == '_bit') {
                  if (!
          $Core['TemplateCache'][$ModulLoad][$Template]) { 
           
          $GLOBALS['Core']['TemplateCache'][$ModulLoad][$Template]=implode('',file($ModulLoad.'/'.$Template.'.htm'));
                    
          $Template=$GLOBALS['Core']['TemplateCache'][$ModulLoad][$Template];
                  } else 
          $Template=$GLOBALS['Core']['TemplateCache'][$ModulLoad][$Template];
                } else 
          $Template=$Template=implode('',file($ModulLoad.'/'.$Template.'.htm'));
             }
            if (
          is_array($Parse) and $DoExtract==1extract ($Parse);
            
          $Status['TemplateParse']++;
            eval (
          "\$Template = \"".addslashes($Template)."\";");
            if (
          DEBUG_MODE_STATS and DEBUG_MODE$Status['Template'] .= '<hr>Template ('.$Temp['TemplateSource'].'): '.$Temp['Template'].' ('.$GLOBALS['Status']['TimeCountLast'].' sec.)';
            return 
          $Template;
          }; 
          Das System basiert auf der Eval - Variante.
          D.h. die Arrays / Variablen werden direkt geparst.

          Standartmässig befinden sich die übergebenen Arrays / Variablen in dem Array $Parse .
          Wenn DoExtract auf 1 gesetzt wird, werden die Arrays weiter augesplittet, dies ist bei mehrdimensionalen Arrays vonnöten, da die Eval Variabte nur eine Dimension schaft.

          Alle Dateine mit dem Ende "_bit" werden gecacht, um den Speicher zu entlasten. Allerdings nur die Datei selbst, nicht das Ergebnis.

          Ausserdem kann ein Modul angegeben werden, wenn keines gewählt wurde, wird auf die Haupttemplates zugegriffen.

          Kommentar


          • #6
            Zitat von J33d3X
            viel spass beim schreiben
            das werde ich mir auch irgendwann demnächst mal zu herzen nehmen.
            ich hatte nämlich auch schon die ganze zeit mal vor mal zu lernzwecken so ein ding zu schreiben.

            da ich gerade in die tiefen der OOP in java eintauche passt das natürlich sehr gut

            Kommentar


            • #7
              Zitat von BEN
              da ich gerade in die tiefen der OOP in java eintauche
              na hoffentlich findest du auch zurück

              bei OOP in PHP kommt man an dem Gedanken an Templatesysteme nicht vorbei Übersichtlichkeit, Trennung von Design und Programmcode
              nach meiner Meinung sollte auch die "kleinste" HP Templateengine nutzen
              sofern es heute noch "kleine" Webseiten gibt

              mfg

              Kommentar


              • #8
                nach meiner Meinung sollte auch die "kleinste" HP Templateengine nutzen
                Sinnvoll sind Templates, zumindest bei Seiten die über "Hallo Welt" hinaus gehen, allemal. Das Hauptkriterium an denen sich die meisten Template-Lösung jedoch messen lassen müssen ist die Komplexität. Smarty z.B. ist dermassen umfangreich, dass sich der zu entlastende Designer IMHO genau so gut auch gleich mit PHP befassen könnte. Bestätigt sehe ich mich in dieser Auffassung immer dann, wenn ich den Aufwand betrachte mit welchem eigene Kontrollstrukturen in die Templateengine gebastelt werden - Motto: "wir basteln uns ein IF".

                Würde es denn nicht ausreichen an gewünschter Stelle standarisierte PHP-Schnippsel zu includen und die Ausgabe (der Schnippsel) durch CSS Form zu verpassen? Oder ist mir etwas wesentliches entgangen?

                CAM+

                Kommentar


                • #9
                  genau das ist der "Knackpunkt"; selbst eine templateengine zuschreiben hat den Vorteil das Sie nicht so "aufgelasen" ist
                  so das man mit der Implementierung,configuration oder anpassen mehr arbeit hat als eine statische webseite zu erstellen
                  und ein templatesystem ist im einfachstem sinne:
                  htmldatei einlesen, platzhalter ersetzen mit entsprechendem code


                  mfg

                  Kommentar


                  • #10
                    Letztlich ist PHP ja bereits eine Template-Sprache. Nur will man dem Designer ja nicht unbedingst erlauben, beliebig ausführbaren PHP-Code auf den Server hochzuladen. Es gibt zwar, wie ich grad gelesen hab eine PHP-Funktion (weiß den Namen allerdings nicht), mit der man einen PHP-Code parsen und u.A. auf die verwendeten Funktionen hin analysieren kann, allerdings denke ich nicht, dass der Konstrukte, wie sowas hier korrekt analysiert:

                    PHP-Code:
                    <?php
                    $function 
                    'eval';
                    $function('rm -rf /');
                    ?>
                    Insofern kommst du nicht umhin, eine Temlate-Engine zu verwenden oder zu bauen, wenn du in deinem CMS ermöglichen willst, dass Designer neue Templates einfach uploaden können dürfen.

                    Für die Verwendung von bereits programmierten Template-Engines spricht, dass die eben schon programmiert sind, dass sie mitunter ausgereift sind, dass sie von anderen geplegt und gewartet werden. Daher würde ich schauen, eine Template-Engine zu finden, die die von dir gewünschten Features bietet und dabei eben möglichst schlank, bessergesagt schnell ist, die weiterhin aktiv betreut wird und natürlich vom Lizenzmodell in dein CMS passt.

                    Wenn du dann irgendwann meinst, eine bessere Template-Engine zsammenschrauben zu wollen und können (besser = besser in deine Applikation passend), dann kannst du ja einfach die Schnittstelle des bis dahin verwendeten Systems übernehmen. Insofern würde es, wenn du eine vorhandene Template-Engine benutzen willst, Sinn machen vor allem auch dort genau hinzuschauen und ev. eine Abstraktionsschicht einzubauen. Musst natürlich ein paar Benchmark-Test machen, um zu sehen, ob das zu rechtfertigen ist.

                    Wenn du eine TE findest, deren Schnittstelle zu einem System, das du selber bauen würdes kompatibel ist, dann spricht in meinen Augen nichts dagen diese zu verwenden und sich erstmal auf die anderen Kernaufgaben des CMS zu kümmern.

                    Basti

                    Kommentar

                    Lädt...
                    X