Eine Frage zu Smarty

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
derju
Beiträge: 301
Registriert: Do 15. Jan 2009, 09:00
Kontaktdaten:

Eine Frage zu Smarty

Beitrag 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
Contenido 4.8.20 | Contenido 4.9.12
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Eine Frage zu Smarty

Beitrag 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?
derju
Beiträge: 301
Registriert: Do 15. Jan 2009, 09:00
Kontaktdaten:

Re: Eine Frage zu Smarty

Beitrag 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
Contenido 4.8.20 | Contenido 4.9.12
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Eine Frage zu Smarty

Beitrag von homtata »

ah so. dann packe die variable mal in geschweifte klammern, das ist auch bei assign-zuweisungen nötig. hatte ich übersehen.

Beispiel:

Code: Alles auswählen

{assign var="TEXT" value="{$name}"}
derju
Beiträge: 301
Registriert: Do 15. Jan 2009, 09:00
Kontaktdaten:

Re: Eine Frage zu Smarty

Beitrag von derju »

Danke, dass hatte ich auch schon Versucht.
Leider funktioniert das nicht es wird einfach {$name} ausgeben.

LG - derJu
Contenido 4.8.20 | Contenido 4.9.12
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Eine Frage zu Smarty

Beitrag 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)}
derju
Beiträge: 301
Registriert: Do 15. Jan 2009, 09:00
Kontaktdaten:

Re: Eine Frage zu Smarty

Beitrag von derju »

oder dreh mal die Hochkommataversionen um (doppelte außen, einfache innen) und versuch mal schrittweise:
Das hat geholfen. Danke dir!

LG - derJu
Contenido 4.8.20 | Contenido 4.9.12
Antworten