Ankündigung

Einklappen
Keine Ankündigung bisher.

Leere Zeile über Template

Einklappen

Neue Werbung 2019

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

  • Leere Zeile über Template

    Hallo,

    ich habe mir nun eine simple Templateklasse geschrieben und diese funktioniert bisher auch ohne Probleme. Nun wird aber über meinem Template eine leere Zeile in der Hintergrundfarbe der Webseite dargestellt.

    Template.php
    PHP-Code:
    <?php
        
    class template {

            var 
    $templateFile;
            var 
    $templatePath;
            var 
    $content// Inhalt des Templates

            // Konstruktor
            
    function template($templateFile$templatePath "template/") {
            
                
    $this->templateFile    =    $templateFile;
                
    $this->templatePath    =    $templatePath;
            } 

            
    // Template Datei öffnen
            
    function loadTemplate() {
            
                
    $file = @fopen($this->templatePath $this->templateFile"r");

                if(!
    $file) {
                    echo 
    "Template nicht gefunden.";
                } else {

                    
    // Datei einlesen
                    
    while(!feof($file)) {
                        
    $this->content .= fgets($file);
                    }
                }
            }

            
    // Platzhalter ersetzen
            
    function assign($placeholder$value) {

                
    // Funktion zum Ersetzen der angegebenen Platzhalter durch die Werte
                
    $this->content str_replace("{" $placeholder "}"$value$this->content);
            }

            
    // Fertige Datei ausgeben
            
    function parse() {
                echo 
    $this->content;
            }
        }
    ?>
    index.php
    PHP-Code:
    <?php
        
    include("classes/Template.php");

        
    $template    =    new Template("index.tpl.php");
        
    $template->loadTemplate();
        
        
    $template->assign("LOGIN""Das künftige Loginforumlar.");
        
    $template->assign("MENU"file_get_contents("navigation.php"4096));
        
    $template->assign("NEWS"file_get_contents("news.php"4096));
        
    $template->assign("FORUM""Die letzten 5 Beiträge aus dem Forum");
        
    $template->assign("VOTING""Umfragen");
        
        
    $template->parse();
    ?>
    Das Ergebnis davon befindet sich im Anhang.
    Angehängte Dateien


  • #2
    Lass die ?> weg, eine andere (mögliche) Fehlerquelle sehe ich nicht.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Hab' ich nun weggelassen, es ändert sich am Ergebnis selbst jedoch nichts.

      Ich vermute dass es mit file_get_contents zusammenhängt, denn wenn ich versuche mein Hauptmenü einzubinden, dann geschieht dasselbe.

      Kommentar


      • #4
        Wie sieht denn der Generierte Quelltext aus?
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          PHP-Code:
          <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
          <
          html xmlns="http://www.w3.org/1999/xhtml">
              <
          head>
                  <
          meta name='description' content='Projektbeschreibung' />
                  <
          meta name='keywords' lang='de' content='keywords' />
                  <
          meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1'>
                  <
          link rel='stylesheet' type='text/css' href='template/css/css.css'>
                  <
          link rel='stylesheet' media='all' type='text/css' href='template/css/flyout.css' />

                  <
          title>Projekttitel</title>
              </
          head>

              <
          body>
                  <
          div id="skyline">
                      <
          div id="logo">
                          <
          a href="index.php"><img src="template/img/logo.png" /></a>
                      </
          div>
                  </
          div>
                  
                  <
          div id="newsticker">
                      <
          marquee scrollamount="2" scrolldelay="5">
                          
          +++
          <
          b>01.07.2014</b> - Das Design ist in Arbeit +++
          <
          b>01.07.2014</b> - Die Templateklasse ist implementiert +++
                      </
          marquee>
                  </
          div>
                  
                  <
          div id="sidearea">
                      <
          div id="leftarea">
                          <
          div id="loginFrame">
                              <
          div id="loginTop">Login</div>
                              <
          div id="loginBottom">Das künftige Loginforumlar.</div>
                          </
          div>
                          
                          <
          div id="menuFrame">
                              <
          div id="menuTop">Hauptmenü</div>
                              
                              <
          div id="menuBottom">
                                  
          <nav>
              <
          li><a href="index.php">Startseite</a></li>
          </
          nav>
                              </
          div>
                          </
          div>
                          
                          <
          div class="boxFrame">
                              <
          div class="boxTop">Forum</div>
                              
                              <
          div class="boxBottom">
                                  Die 
          letzten 5 Beiträge aus dem Forum
                              
          </div>
                          </
          div>
                      </
          div>
                      
                      <
          div id="middlearea">
                          <
          div class="contentFrame">
                              <
          div class="contentTop"></div>
                              <
          div class="contentBottom">
                                  
          Content
                              
          </div>
                          </
          div>
                      </
          div>
                      
                      <
          div id="rightarea">            
                          <
          div class="boxFrame">
                              <
          div class="boxTop">Aufgabenliste</div>
                              <
          div class="boxBottom">
                                  
          Anpassung des Designes<br />
                                  
          Fortschritt10%
                                  <
          hr />
                              </
          div>
                          </
          div>
                          
                          <
          div class="boxFrame">
                              <
          div class="boxTop">Umfrage</div>
                              
                              <
          div class="boxBottom">
                                  
          Umfragen
                              
          </div>
                          </
          div>
                      </
          div>
                  </
          div>
              </
          body>
          </
          html
          Beim Chrome-Entwicklermodus befindet sich vor'm Design eine leere Zeichenfolge umrandet von Anführungszeichen.

          Kommentar


          • #6
            Beim Chrome-Entwicklermodus befindet sich vor'm Design eine leere Zeichenfolge umrandet von Anführungszeichen.
            Vielleicht ne Testausgabe (echo, print) von Dir noch irgendwo versteckt?
            Competence-Center -> Enjoy the Informatrix
            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

            Kommentar


            • #7
              Nein, mir ist jedoch aufgefallen dass sich die <meta ... />-Inhalte im Bodybereich befinden, eventuell ist es darauf zurückzuführen.

              Kommentar


              • #8
                Möglicherweise befindet sich auch ein BOM vor der eigentlichen Ausgabe, das
                verursacht u.a. zumindest genau dieses Problem, dass eine "Leerzeile" angezeigt
                wird, die eigentlich nicht da ist.

                Also ggf mal die betroffenen Dateien (Templates, Template.php, index.php) mit
                einem Editor öffnen, der dir diese Sonderzeichen anzeigt (MC z.B.) bzw die
                Dateien explizit ohne BOM speichern.

                Kommentar


                • #9
                  Nur so am Rande..
                  Deine Templateklasse funktioniert ohne Probleme? So wie ich das sehe, tut sie das nur solange du nur HTML in deinen Skripten hast.
                  PHP-Skripte, welche du mit file_get_contents() holst und in dein Content einfügst, werden nicht geparst.
                  Oder hab ich da etwas übersehen?
                  PHP-Klassen auf github

                  Kommentar


                  • #10
                    Zitat von WTB Beitrag anzeigen
                    Möglicherweise befindet sich auch ein BOM vor der eigentlichen Ausgabe, das
                    verursacht u.a. zumindest genau dieses Problem, dass eine "Leerzeile" angezeigt
                    wird, die eigentlich nicht da ist.

                    Also ggf mal die betroffenen Dateien (Templates, Template.php, index.php) mit
                    einem Editor öffnen, der dir diese Sonderzeichen anzeigt (MC z.B.) bzw die
                    Dateien explizit ohne BOM speichern.
                    Danke! Hab die Datei in UTF-8 ohne BOM gespeichert und nun sind die überflüssigen Leerzeilen verschwunden, dürfte wohl wirklich daran gelegen haben.

                    Zitat von jspit Beitrag anzeigen
                    Nur so am Rande..
                    Deine Templateklasse funktioniert ohne Probleme? So wie ich das sehe, tut sie das nur solange du nur HTML in deinen Skripten hast.
                    PHP-Skripte, welche du mit file_get_contents() holst und in dein Content einfügst, werden nicht geparst.
                    Oder hab ich da etwas übersehen?
                    Derzeit habe ich noch keine PHP-Skripte welche geladen werden sondern nur Texte oder Verweise auf andere Dateien (wie z. B. bei den Neuigkeiten oder bei dem Hauptmenü).

                    Kommentar


                    • #11
                      Zitat von Rier Beitrag anzeigen
                      Danke! Hab die Datei in UTF-8 ohne BOM gespeichert und nun sind die überflüssigen Leerzeilen verschwunden, dürfte wohl wirklich daran gelegen haben.
                      das schoene ist ja dass deine header aber nicht UTF-8 sind, somit werden deine umlaute kaputt sein, es seidenn du nutzt diese umstaendlichen &uuml; dinger
                      apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                      Kommentar

                      Lädt...
                      X