Fragen zu Smarty

StefanR

Erfahrenes Mitglied
Hallo,

bevor ihr mich haut oder was auch immer.... ich habe in die Mailinglist und auch im Forum von Smarty geschaut, aber ich werde darauß einfach nicht schlau. Das "Handbuch" habe ich auch durch gewälzt, aber auch da nichts und zwar stellen sich mir folgende Fragen, wenn ich jetzt mehrere Templates habe einmal index.tpl, tabelle.tpl, inhalt.tpl und denn auch dafür drei Skripte, index.php, tabell.php, inhalt.php. In index.php werden inhalt und tabelle.php eingebunden, wie kann ich jetzt die drei Templates ansprechen, muss ich in jedem Script, die Variablen deklarieren und denn am Ende display() machen oder geht es auch einfacher.

PS: Das Beispiel oben mit den Tabellen ist nur ein Beispiel und nicht ernstzunehmen, konnte mein Problem nur nicht anders erklären.

Danke
 
Eigentlich musst du da nix gesondert ansprechen. Du kannst ein anderes Template in Smarty ja so in ein anderes integrieren.

Beispiel: (index.tpl)
Code:
... code ...
{include file="tabelle.tpl"}
... code ...
{include file="footer.tpl"}

In der index.php meinetwegen rufst du ja nun in der display(); mit der index.tpl auf ...
Code:
$smarty->display ("index.tpl");

Die Variablen, die du jetzt ganz normal an smarty übergeben hast sind in der index.tpl verfügbar und auch in allen Templates, die du darin eingebunden hast ... deshalb sollte man mit der Benennung der Variablen aufpassen, aber damit hat man eigentlich keine Probleme.
 
Hallo,

danke für deine schnelle Antwort. Habe mir voll den Kopf zerbrochen, aber dass das so einfach ist, hätte ich ja nicht gedacht. :)
 
Hallo ich habe da mal wieder ein Problem mit Smarty und zwar, wird bei mir die gesamte section wiederholt,aber nur der teil der rangehängt wird, die restlichen Variablen bleiben leer, beim zweiten Durchlauf.(ich weiß hört sich komisch an, ich hänge gleich den Code mit an).

Hier mal der Code des Templates:
Code:
{section name=news loop=$news}
  <p> {$news[news].titel}<br />
  <b>{$news[news].summ}</b> {if $news[news].long == 'ja'}
  <a href="{$news[news].longurl}">weiterlesen....</a>{/if}
  </p>
{/section}
und das Script index.php
PHP:
<?php
 session_start();
 //konfigdatei einfügen
 require_once("admin/config.inc.php");
 require_once(ADMINROOT.'inc/incclass/database.inc.class.php');
 $db=new database('mysql', $db['host'], $db['database'], $db['user'], $db['pw']);
 $db->debug_mode(false);
 $tpl = new Smarty_Start();	
 
 
 if ($_GET['content']==""){
 $content="content_newsShort.tpl";
 require_once(DOCROOT.'plugins/news/newsShort.php');
 }
 if ($_GET['content']=="newsLong") {
 $content="content_newsLong.tpl";
 require_once(DOCROOT.'plugins/news/newsLong.php');
 }

 
 $tpl->assign('content', $content);
 $tpl->assign('title', $seitenname);
 $tpl->display('main_index.tpl');
?>
und newsShort.php.
PHP:
 $sqlNewsshort = "	SELECT
	   				news.*,
					user.*
					FROM pornews AS news JOIN poruser AS user
					ON userID = newsRedID";
 
 $resultNewsshort=$db->query($sqlNewsshort);
 $newsShort=array();
 while ($rowNewsshort=$db->get_row()) {
 	$date=date('d.m.Y H:i:s',$rowNewsshort['newsDate']);
 	array_push($newsShort, array(
 		'titel'=>$rowNewsshort['newsHead'], 
	    'date' => $date, 
	    'user' => $rowNewsshort['userName'], 
	    'subtitle' => $rowNewsshort['newsSubhead'], 
	    'links' => $rowNewsshort['newsQuelllinks'], 
	    'id' =>  $rowNewsshort['newsID'], 
	    'summ' => $rowNewsshort['newsAnfang']
 	));
//hier wird das Array $newsShort um die beiden Schlüssel "long" und "longurl" 
//vergrößert. 	
if (""!=$rowNewsshort['newsZusatz']) {
 		array_push($newsShort, array(
 		'long' => 'ja',
 		'longurl' => '?content=newsLong&id='.$rowNewsshort['newsID'] 		
 		));
 	}
 }
 
 $tpl->assign('news', $newsShort);
 
Hmm keiner ne Idee, was da evtl. schief läuft, kann mir nämlich nicht erklären, wasrum er mit der While schleife nochmal anfängt, aber die anderen Variblen nicht anrührt außer die die den Link bildet.
 
Gib dir doch mal die Variable $newsShort; aus:

PHP:
var_dump ($newsShort);

Vielleicht ist da irgendwas schiefgelaufen und das Array ist nicht ganz richtig.
 
Zurück