Seite 1 von 1
Eine Frage zu Smarty
Verfasst: Di 28. Apr 2015, 10:05
von derju
Hallo
Eine Frage, wie kann man folgen's umsetzen:
Code: Alles auswählen
{assign var="name" value=$wrapper.item->get('name')}
{assign "ersetzen" array('</span><span class="label-nav-sub" $name>')}
Ich benötige die Variable
$name in dem nächsten assign leider funktioniert das nicht.
Gibt es hier für eine Möglichkeit?
LG - derJu
Re: Eine Frage zu Smarty
Verfasst: Di 28. Apr 2015, 12:02
von homtata
Ich denke, dass die komplette Syntax der zweiten Zeile so in smarty nicht funktioniert. Das Array wird m.E. so nicht bearbeitet/erstellt.
http://www.smarty.net/docs/en/language. ... assign.tpl
Musst du hier wirklich ein Array aufmachen?
Dann solltest du das vielleicht schon vorher im Modulcode defnieren, mit übergeben ins Smarty und dann eher nachbearbeiten.
Es riecht danach, als wolltest du irgendwie eine spezielle Art von Navigation bauen. Meistens bist du besser bedient, Sonderfälle durch if-Schleifen in Smarty zu regeln.
Was willst du denn mit dem "ersetzen" erreichen?
Re: Eine Frage zu Smarty
Verfasst: Di 28. Apr 2015, 12:27
von derju
Hallo
Das ersetzen funktioniert ohne Probleme das Problem ist die Variable ($name) die ich in benötige um einen jquery data-hover auszugeben.
Code: Alles auswählen
{if 0 lt $ulId|strlen}<!-- navigation_main/template/get.tpl -->{/if}
<ul class="{$ulId}">
{foreach from=$tree item=wrapper}
{assign var="idcat" value=$wrapper.idcat}
{assign var="url" value=$wrapper.item->getLink()}
{assign var="name" value=$wrapper.item->get('name')}
{assign "suchen" array('*/')}
{assign "ersetzen" array('</span><span class="label-nav-sub" data-hover="$name">')}
{assign "ersetzen2" array('')}
{if $idcat|in_array:$path}
{assign var="aClass" value='activepath'}
{else}
{assign var="aClass" value=''}
{/if}
<li class="{$aClass}">
<a href="{$url}" title="{$name|replace:$suchen:$ersetzen2}"><span class="label-nav">{$name|replace:$suchen:$ersetzen}</span></a>
{if !empty($wrapper.subcats) }
{include file="navigation_main/template/get_sub.tpl"
tree=$wrapper.subcats path=$path ulId="" ulClass=""}
{/if}
</li>
{/foreach}
</ul>
{if 0 lt $ulId|strlen}<!-- /navigation_main/template/get.tpl -->{/if}
LG - derJu
Re: Eine Frage zu Smarty
Verfasst: Di 28. Apr 2015, 12:37
von homtata
ah so. dann packe die variable mal in geschweifte klammern, das ist auch bei assign-zuweisungen nötig. hatte ich übersehen.
Beispiel:
Re: Eine Frage zu Smarty
Verfasst: Di 28. Apr 2015, 12:41
von derju
Danke, dass hatte ich auch schon Versucht.
Leider funktioniert das nicht es wird einfach {$name} ausgeben.
LG - derJu
Re: Eine Frage zu Smarty
Verfasst: Di 28. Apr 2015, 14:01
von homtata
dann liegts vermutlich an den Hochkommata, denn in der gezeigten einfachen Form funktioniert das definitiv...
Die Smarty-Hilfe redet bei komplizierten Variablenkonstrukten davon, dass Backticks eingesetzt werden müssen, um diese zu umklammern. Dürfte hier aber nicht der Fall sein. Vielleicht musst du noch escapen. Das ergäbe dann:
Code: Alles auswählen
{assign "ersetzen" array('</span><span class="label-nav-sub" data-hover="$name">')|escape }
oder dreh mal die Hochkommataversionen um (doppelte außen, einfache innen) und versuch mal schrittweise:
Code: Alles auswählen
{assign var="toarray" value="</span><span class='label-nav-sub' data-hover='{$name}'>" }
{assign "ersetzen" array($toarray)}
Re: Eine Frage zu Smarty
Verfasst: Di 28. Apr 2015, 14:28
von derju
oder dreh mal die Hochkommataversionen um (doppelte außen, einfache innen) und versuch mal schrittweise:
Das hat geholfen. Danke dir!
LG - derJu