Seite 1 von 1
Howto: Modultemplate Varablenangepasst ausgeben
Verfasst: Di 21. Jan 2014, 16:57
von Horst1234
Hallo,
ich möchte eine Templatedatei Variablenangepasst ausgeben, damit ich nicht mehrere Varianten schreiben muss.
etwa so:
wenn {Text1} und {Text2} nicht leer sind:
<div><a>{Text1}</a><a>{Text2}</a></div>
wenn {Text1}, {Text2} und {Text3} nicht leer sind:
<div><a>{Text1}</a><a>{Text2}</a><br><span class="info">{Text3}</span></div>
wenn {Text1}, {Text2}, {Text3} und {Text4} nicht leer sind:
....
Vielen Dank schon mal,
Horst
Re: Howto: Modultemplate Varablenangepasst ausgeben
Verfasst: Di 21. Jan 2014, 17:07
von homtata
Hallo Horst1234,
das geht nur über die Smarty-Template-Routine im Modul selbst, nicht über die bis 4.8 einzubindenden HTML-Templates.
In Smarty sieht die verschachtelung der if-Codestruktur ungefähr so aus für zu übergebende Variablen:
Code: Alles auswählen
{if $Text1 != "" and $Text2 != "" }
<div><a>{$Text1}</a><a>{$Text2}</a></div>
{elseif $Text1 != "" and $Text2 != "" and $Text3 != ""}
<div><a>{$Text1}</a><a>{$Text2}</a><br><span class="info">{$Text3}</span></div>
{else}
<div>{$Text4}</div>
{/if}
Wichtig ist, dass direkt HINTER den geschwungenen öffnenden Klammern KEINE Leerzeichen stehen dürfen bei den Anweisungen, sonst geht das in die Hose.
Feinheiten gibts unter
http://www.smarty.net/docsv2/de/languag ... ion.if.tpl
LG
Re: Howto: Modultemplate Varablenangepasst ausgeben
Verfasst: Di 21. Jan 2014, 17:22
von Horst1234
Hallo Homtata,
Der Templatecode ist recht umfangreich, ich würde ihn gern aus dem Modul raushalten.
gibt es den die Möglichkeit, verschiedene Templates (get1.tpl, get2.tpl, get3.tpl) anzusteuern.
Im meinem Modul steht derzeit (verkürzt):
Code: Alles auswählen
defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');
$text1 = "CMS_HTML[201]";
$text2 = "CMS_HTML[202]";
$text3 = "CMS_HTML[203]";
$text4 = "CMS_HTML[204]";
$tpl = cSmartyFrontend::getInstance();
$tpl->assign('text1', $text1);
$tpl->assign('text2', $text2);
$tpl->assign('text3', $text3);
$tpl->assign('text4', $text4);
$tpl->display('get.tpl');
Kann ich die letzte Zeil mit solch einer if-elseif-else Abfrage verbinden?
Wie wäre da der Code?
lieben Dank,
Horst
Re: Howto: Modultemplate Varablenangepasst ausgeben
Verfasst: Di 21. Jan 2014, 17:30
von homtata
Hallo Horst,
der von mir genannte Code gehört NICHT in den Modulausgabebereich, sondern in die get.tpl (!).
Anders als die alten html-Templates erlaubt Smarty hier nämlich auch Abfragen-Steuerungen.
Selbstverständlich kannst du für manche Fälle auch in der Modulausgabe verschiedene tpl-Dateien ansteuern, falls nötig. Diese tpl-Dateien lassen sich in der Modulnavigation unter "HTML" anlegen und benennen.
Die Modulverzweigung lautet beispielsweise dann ganz einfach:
Code: Alles auswählen
if ( $a == 1 ) { $tpl->display('get.tpl'); } else { $tpl->display('variante2.tpl'); }
Re: Howto: Modultemplate Varablenangepasst ausgeben
Verfasst: Di 21. Jan 2014, 18:28
von Horst1234
Hallo Homtata,
super, das war's!!
Vielen Dank aus Bremen,
Horst