PHP-Code in Templates

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

  • PHP-Code in Templates

    Hallo,

    ich versuche mich gerade am phpNuke-CMS. Ich habe mir ein Theme angepasst, dass auf HTML basiert.

    In eine der Theme-Dateien (header.html) möchte ich aus der Datenbank den Namen des angemeldeten Benutzers auslesen. Ich hab in der Datei einfach ein <script language="php"></script> - Block eingebaut, aber scheint mir den Code nicht auszuführen.

    Kann das daran liegen, dass die header.html eine Template-Datei ist und durch einen Template-Parser läuft?

    Wie kann ich das anders regeln?

    Danke, Chriss

  • #2
    schau dir an, wie bei nuke die templates geparst werden.

    entweder werden variablen gegen gleichnamige platzhalter ersetzt
    oder
    arrays erledigen das ^^
    oder
    per eval()

    bei eval() könntest du php-code direkt ins template geben ... ansonsten
    übergib deine variable mit an den template-parser und bau vorher einen
    passenden platzhalter in das template deines vertrauens.
    Kissolino.com

    Kommentar


    • #3
      Hallo Wurzel,

      hier mal ein kleiner Codeschnipsel aus der theme.php des Themes:
      PHP-Code:
      $tmpl_file "themes/CreativeFast/header.html";
      $thefile implode(""file($tmpl_file));
      $thefile addslashes($thefile);
      $thefile "\$r_file=\"".$thefile."\";";
      eval(
      $thefile);
      print 
      $r_file;
      blocks(left); 
      Ich denke, dass das dann die Variante ist, wo das Template einfach mit eval() ausgeführt wird, oder? Es wird allerdings nicht ausgeführt.

      Wie bekomme ich das zum laufen? Hast du oder irgendjemand anders eine Idee?

      Danke, Chriss

      Kommentar


      • #4
        bin nicht ganz sicher aber:
        header.html ----> header.php
        [font=dauphin]Die Seite für Spychos[/font]

        Kommentar


        • #5
          Das hab ich schon probiert, bewirkt genau das gleiche. Hab es auch mal testweise mit der Kurzform <?php ?> probiert.

          Kommentar


          • #6
            guckst du:
            PHP-Code:
            $keks "blubb";
            echo 
            $thefile 'dhkj kdj kdf <b>$keks</b> jkdfh dh ksdhf<br />';
            $thefile addslashes($thefile);
            eval(
            "\$r_file=\"".$thefile."\";");
            print 
            $r_file
            Kissolino.com

            Kommentar


            • #7
              Hallo Wurzel,

              leider funktioniert das nicht. Er gibt mir die Zeile zweimal aus. Einmal mit $keks, wo die Variable nicht ersetzt wurde und einmal mit blubb anstelle von $keks. Außerdem wird das Layout völlig verhauen.

              Kann ich nicht in der theme.php eine Variable deklarieren und diese in der header.html an beliebiger Stelle einsetzen?

              Was würde denn passieren, wenn ich zusätzlich zur Template-Engine von phpNuke noch zusätzlich eine andere Template-Enigine verwende, mit der ich mich auskenne?

              Gruß, Chriss

              Kommentar


              • #8
                Hallo,

                ich habe eine Lösung gefunden. Ich habe den oberen Teil der header.html, wo auch die zu ersetzende Variable enthalten ist, aus der header.html entfernt und habe diesen Teil mit echos in die theme.php unter dem Abschnitt Header eingefügt.

                Das hat so wunderbar funktioniert, denn das scheint ansonsten größere Probleme zu machen, als ich gedacht habe. Im Internet habe ich zu meinem Problem einen Thread in einem anderen Forum gefunden, wo genau das behandelt wurde. Hier ein Auszug aus dem Antwort-Thread:

                ... das ist bei HTML-basierten Themes für phpNuke nicht so einfach weil PHP-Code in HTML-Templatedateien nicht geparsed wird.

                Du kannst aber einen Trick anwenden - kopiere Dir den Headercode heraus und paste ihn in einen PHP-Editor. Den PHP-Code setzt Du jetzt direkt in die theme.php und zwar dort, wo die header.html aufgerufen wird.

                Nun kannst Du direkt im Header auch PHP-Anweisungen unterbringen.
                Gruß, Chriss

                Kommentar

                Lädt...
                X