Howto: Modultemplate Varablenangepasst ausgeben

Alles rund um Module und Plugins in CONTENIDO 4.9.
Antworten
Horst1234
Beiträge: 366
Registriert: Sa 25. Okt 2008, 12:45
Wohnort: Bremen
Kontaktdaten:

Howto: Modultemplate Varablenangepasst ausgeben

Beitrag 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
Webdesign | Contenido: Templateprogrammierung, Einrichtung und Verwaltung | http://www.w2media.de
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Howto: Modultemplate Varablenangepasst ausgeben

Beitrag 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
Horst1234
Beiträge: 366
Registriert: Sa 25. Okt 2008, 12:45
Wohnort: Bremen
Kontaktdaten:

Re: Howto: Modultemplate Varablenangepasst ausgeben

Beitrag 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
Webdesign | Contenido: Templateprogrammierung, Einrichtung und Verwaltung | http://www.w2media.de
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Howto: Modultemplate Varablenangepasst ausgeben

Beitrag 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'); }
Horst1234
Beiträge: 366
Registriert: Sa 25. Okt 2008, 12:45
Wohnort: Bremen
Kontaktdaten:

Re: Howto: Modultemplate Varablenangepasst ausgeben

Beitrag von Horst1234 »

Hallo Homtata,
super, das war's!!
Vielen Dank aus Bremen,
Horst
Webdesign | Contenido: Templateprogrammierung, Einrichtung und Verwaltung | http://www.w2media.de
Antworten