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

  • Rier
    hat ein Thema erstellt Leere Zeile über Template.

    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

  • BlackScorp
    antwortet
    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

    Einen Kommentar schreiben:


  • Rier
    antwortet
    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ü).

    Einen Kommentar schreiben:


  • jspit
    antwortet
    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?

    Einen Kommentar schreiben:


  • WTB
    antwortet
    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.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    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?

    Einen Kommentar schreiben:


  • Rier
    antwortet
    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.

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    Wie sieht denn der Generierte Quelltext aus?

    Einen Kommentar schreiben:


  • Rier
    antwortet
    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.

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    Lass die ?> weg, eine andere (mögliche) Fehlerquelle sehe ich nicht.

    Einen Kommentar schreiben:

Lädt...
X