Willkommen in der Webstatt Zum Webstatt Blog und Stories
Sven Sven am 02.03.06 01:26

Sodelle, ich schmettere glatt mal die 1. Frage raus.
Mein Problem : Ich lade meine Templates für mein CMS per fopen, allerdings erhalte
ich dadurch irgendwie einen Haufen Zeilenumbrüche -> unvalider Code im nachhinein :(
Hier meine Funktion :
// Loading template
function loadtpl ($filename) {
$opentpl = fopen ($filename, 'r');
$file = fread ($opentpl, filesize ($filename));

return $file;
fclose ($file);
}


Meine index.php :
<?php
// Load Templates
$main = loadtpl ($MODULE['template']);

// Parse template and print out
$main = str_replace ('{pfad}', $a_PAGE['pfad'], $main);
$main = str_replace ('{build:navigation}', get_menu (), $main);
$main = str_replace ('{build:content}', get_content ($_GET['modul']), $main);

echo $main;
?>


Und hier könnt ihr auch das ganze gleich mal angucken (Quelltext anzeigen lassen) :
http://www.beatboxscene.de

Jemand ne Idee wie ich die Zeilenumbrüche wegbekomme bzw. woher die kommen?
Danke euch schonmal.

Edit: Stellt mal die Schriftgröße für die PHP-Highlights rauf bitte :/

netcup.de Warum gibt es hier Werbung?
Barabbas Barabbas am 02.03.06 01:33

kannst du den Code mit den fehlerhaften Zeilenumbrüchen - also die Ausgabe - hier kurz posten? Ich sehe auf deiner Seite nicht, was du meinst.

lG

brb

Sven Sven am 02.03.06 01:35

Quote
Original von Sven
Und hier könnt ihr auch das ganze gleich mal angucken (Quelltext anzeigen lassen) :
http://www.beatboxscene.de


;)




<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>....


Ich hab immer vor meiner XML Deklaration Zeileumbrüche drinnen.

Barabbas Barabbas am 02.03.06 01:48

*lol* das wäre mir gar nicht als Fehler aufgefallen, dachte, du hast HTML- Zeilenumbrüche.... aber im Template ist alles "sauber", oder?

Sven Sven am 02.03.06 01:49

Tja, da geht bei mir wieder der Perfektionist durch ;)
Japp, im Template ist bei mir alles sauber. Nur diese Zeilenumbrüche da
stören mich extrem, da dadurch bei der CSS Validierung was schief geht :(

Snake am 02.03.06 02:19

// Loading template
function loadtpl ($filename) {
$opentpl = fopen ($filename, 'r');
$file = fread ($opentpl, filesize ($filename));

return $file;
fclose ($file);
}

das ist falsch.

gründe:

-nach return wird kein code mehr ausgeführt.
-selbst wenn der code noch ausgeführt würde, müsstest du $opentpl an fclose übergeben.

dein resultat ist nun, dass die datei bis scriptende offen bleibt. du könntest also niemals eine template 2 mal holen.

Sven Sven am 02.03.06 02:20

Wobei sich immernoch nicht das Problem löst ;)
Aber egal.....
Siehste mal, sowas passiert wenn man zu lange wach ist :/
Danke dir

milahu milahu am 02.03.06 10:05

dumme frage, aber wieso nutzt du nicht einfach file() bzw. file_get_contents() ?

ne quick'n'dirty lösung wäre, mit trim() nachzuhelfen, aber damit wirst du dich wahrscheinlich nicht zufrieden geben :D

deaktiviere mal systematisch diverse include anweisungen und schau, wann die whitespaces auftreten.

die natur (und damit auch PHP) würfelt nicht. ;)

Sven Sven am 02.03.06 10:34

Gute Frage :/
Wird gleich mal ausprobiert.

beme am 02.03.06 15:35

ich möchte in mein cms auch gerne eine template funktion einbauen...
kann man da an der gewünschten stelle nicht einfach per:

<?php include("template.html") ?> einfügen ???

und die inhalte mit preg_replace einfügen ????

also zB. {name} und dann {name} = preg_replace...

Sven Sven am 02.03.06 15:38

Du brauchst aber deinen Inhalt zunächst in einer Variable ;)

Barabbas Barabbas am 02.03.06 15:49

wobei das letztendlich keinen Unterschied macht, Sven hat anstatt der Variable halt eine Funktion, die den jeweiligen Inhalt zurückgibt.

In meinen ersten Templates hatte ich unmittelbar php- includes stehen, so dass ich die templates direkt includieren konnte und nur den Vars vorher Werte zuweisen musste... nicht sehr schön, ging aber auch ;)

Dustwolf Dustwolf am 02.03.06 21:05

Zum Thema Template habe ich da noch einen Tipp.

Schaut euch da mal http://kuerbis.org/template/ an, da gibt es ne Templateklasse. Die kann man bei Bedarf ja einfach ins Deutsche übersetzen und nach Wunsch modifizieren.


Ansonsten zu den zeilenumbrüchen:
Ich benutze bei meinem Templatesystem auch file() und setze das Array dann per foreach einfach in der Variablen $file zusammen. Notfalls einfach alle "Leerzeichen" und somit auch Zeilenumbrüche am Anfang und Ende der Variablen rauswerfen. ;-)

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt