Problem mit {include} bei Smarty

Kalma

Erfahrenes Mitglied
Hallo.

ich habe ein mächtiges Problem mit meinen Templates.

Ich habe eine Datei namens head.tpl in der der "HTML-Kopf" bis zum Contentbereich drin steht. Diesen Teil will ich über {include file='head.tpl'} ins TPL einbinden, aber er macht einfach gar nichts.

Woran liegt das?
David
 
Zuletzt bearbeitet:
Ein wenig Code wäre gut.

Liegt die Datei im richtigen Template Ordner?
Wird die Datei auch richtig geparst?
 
Liegt die Datei im richtigen Template Ordner?
Wird die Datei auch richtig geparst?

1. Ja
2. Wie jetzt? Ich hab das so gemacht, wie unter Windows auch, da lief es. Jetzt bin ich bei Linux und es geht nicht mehr :mad:


Code:
index.tpl
HTML:
{include file='head.tpl'}
		<div id="content">
			{if (isset($news_result))}
			{foreach from=$news_content item=select}
			<h1>{$select.datum}</h1>

			<h2>{$select.titel}</h2>
			<h3>Geschrieben von {$select.autor} in {$select.kategorie}</h3>
			<p>{$select.text}</p>
			{/foreach}
			{/if}
		</div>
{include file='foot.tpl'}


head.tpl
HTML:
<html>
	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
		<meta http-equiv="content-type" content="text/html; charset=ISO 8859-1" />
		<title>Drumschool Mobil</title>
		<link href="{$at}style.css" type="text/css" rel="stylesheet"></link>
		<script src="include/javascript/nicetitle.js" language="javascript" type="text/javascript"></script>
	</head>
<body>
	<div id="wrapper">
		<div id="header">Drumschool <i>Mobil</i></div>
		<div id="topnav">
			<a href="index.php" title="die neusten News übersichtlich auf einer Seite">Home</a>
			<a href="kontakt.php" title="Du willst dem Inhaber/Webmaster eine Nachricht zukommen lassen?">Kontakt</a> 
			<a href="impressum.php" title="Erfahre mehr über den Datenschutz dieser Seite">Impressum</a>
			<a href="admin/index.php" title="Nix für die Öffentlichkeit: Der Adminbereich">Admin</a>
		</div>
		<ul id="navigation">
			<li><h1>Kategorien</h1></li>
			<li><a href="#"><a href="index.php" title="die neusten News übersichtlich auf einer Seite">News</a></li>
			<li><a href="lehrer.php" title="Erfahre mehr über die Lehrer">die Lehrer</a></li>
			<li><a href="unterricht.php" title="Du brauchst Infos zum Unterricht? Kein Problem!">Unterricht</a></li>
			<li><a href="media.php" title="Verschiedens: Gallerien, PDF-Dateien, MP3's und vieles mehr...">Media</a></li>
			<li><a href="links.php" title="Links zu Seiten anderer Leute. Natürlich Kategorisiert">Links</a></li>
			<li><a href="gaestebuch.php" title="Du willst uns was mitteilen? Dann ist das Gästebuch genau richtig!">Gästebuch</a></li>

			<br /><br />

			<h1>Layout</h1>
			<SELECT name="design">
				<option name="switch" value="switch">Wechseln</option>
				<option name="1" value="1">Standart</option>
			</SELECT>
			<br />
			<input type="submit" value="Los" style="margin-top:3px" />

			<br /><br />

			<h1>Meta</h1>
		</ul>


foot.tpl
HTML:
		<p id="footer">&copy; 2007 by David Floegel (Code & Design) & Friedemann Kuehn (Content)</p>
	</div>
</body>
</html>
 
Versuch es testweise mal mit dem absoluten Pfad:

PHP:
{* absolute filepath *}
{include file='/usr/local/include/templates/header.tpl'}
 
Hey,
wenn das mit dem absoluten Pfad funktionieren sollte, dann hat das womöglich folgende Gründe:

1) Du hast deine Windows-Konfiguration importiert, wo noch "C:/bla/bla" als Templatepfad eingetragen ist

2) Du hast die standart Smarty-Konfiguration benutzt, wobei du dir deine alte Konfig umgeschrieben hast und die Templates nicht in dem Smarty-Ordner liegen...

Frohe Ostern
 
Jo, dass mit dem absoluten Pfad t :-\

Hey,
wenn das mit dem absoluten Pfad funktionieren sollte, dann hat das womöglich folgende Gründe:

1) Du hast deine Windows-Konfiguration importiert, wo noch "C:/bla/bla" als Templatepfad eingetragen ist

2) Du hast die standart Smarty-Konfiguration benutzt, wobei du dir deine alte Konfig umgeschrieben hast und die Templates nicht in dem Smarty-Ordner liegen...

Frohe Ostern

Zum 1. Das geht eigentlich gar nicht, weil ich hab mir den Apache neu runtergeladen und installiert.
Zum 2. Ich hab nur in der Smarty.class.php den Ordner für templates_c umgeändert.

Aber ich probier noch nen bisschen rum
 
Punkt 1 ist sehrwohl möglich, denn die Smarty Konfiguration ist unabhängig von dem Apache... wenn du Smarty neuinstalliert hast, dann kannst du ja immer noch die Konfigdatei importieren, oder?

Ich tippe mal auf Punkt 2, du musst in der Smartykonfig auch den Templkateordner angeben...
Code:
/**
     * The name of the directory where templates are located.
     *
     * @var string
     */
    var $template_dir    =  'templates';

    /**
     * The directory where compiled templates are located.
     *
     * @var string
     */
    var $compile_dir     =  'templates/smarty/templates_c';

so z.B. bei Windows bei Linux ist es bei mir "var/www/web0/templates"...
bei dem Windowsbeispiel werden die Ordner immer aus der Sicht der Datei gesehen in du die Smarty Klasse einbindest.

z.B. wenn du die Smarty Klasse in C:/index.php einbindest, ist der Template Pfad (mit der Windows Konfig oben) C:/templates

solltest du aber Smarty in C:/lib/ einbinden, wird es einen Fehler geben, also am besten absolute Pfade in der Konfig benutzen, da du sowiess Linux benutzt solltest du keine weiteren Probleme haben... also einfach var/www/web0/templates etc. bzw. wo deine Templates liegen...

Hoffe, dass das verständlich war :)
 
Zuletzt bearbeitet:
Hallo,


joa, werde es mal versuchen, wenn mein PC wieder fit ist... Bin grad dabei, meinen PC innen neuen Tower zu verfrachten und komm damit leicht nich klar :-( :rolleyes:
 
Zurück