Recursives Smarty-Template mit abschließendem Code
Recursives Smarty-Template mit abschließendem Code
Hallo,
ich möchte für ein Modul in einer Art Artikelliste ein Smarty_Template ähnlich wie im Modul "Navigation_main" rekursiv durchlaufen.
Das funktioniert auch. Aber:
Wie schaffe ich es, dass nach dem allerletzten Durchlauf durch das Template noch ein abschließender Code ausgegeben werden kann.
Da muss es doch irgendeine (if)-Konstruktion geben, oder?
Würde mich freuen, wenn mir da jemand helfen kann.
Vielen Dank,
Mathias
ich möchte für ein Modul in einer Art Artikelliste ein Smarty_Template ähnlich wie im Modul "Navigation_main" rekursiv durchlaufen.
Das funktioniert auch. Aber:
Wie schaffe ich es, dass nach dem allerletzten Durchlauf durch das Template noch ein abschließender Code ausgegeben werden kann.
Da muss es doch irgendeine (if)-Konstruktion geben, oder?
Würde mich freuen, wenn mir da jemand helfen kann.
Vielen Dank,
Mathias
-
- Beiträge: 3215
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 17 Mal
- Kontaktdaten:
Re: Recursives Smarty-Template mit abschließendem Code
Hallo rzwei,
irgendwo fängst du ja initial an, z. B. durch Aufruf einer Funktion und diese Funktion ruft sich selber rekursiv auf, bis es die Aufgabe erledigt hat.
Du kanst dann nach dem Funktionsaufruf den abschließenden Code ausführen...
Gruß
xmurrix
irgendwo fängst du ja initial an, z. B. durch Aufruf einer Funktion und diese Funktion ruft sich selber rekursiv auf, bis es die Aufgabe erledigt hat.
Du kanst dann nach dem Funktionsaufruf den abschließenden Code ausführen...
Code: Alles auswählen
meineRekursiveFunktionDieSichSelberAufruft();
// Hier der Code, der abschließend ausgeführt wird...
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Re: Recursives Smarty-Template mit abschließendem Code
Hallo murrix,
aber genau das funktioniert nicht:
Der abschließende input-Button erscheint nach jedem Durchlauf der Schleife.
Viele Grüße
aber genau das funktioniert nicht:
Code: Alles auswählen
<!-- projekt--stellenangebot/template/get.tpl -->
{if $tree}
{* loop categories *}
{foreach from=$tree item=wrapper name=catlist}
{if $wrapper.level == 1}
<h3><br />{$wrapper.item->get('name')} </h3>
{else}
{assign var="value" value=$wrapper.item->get('idcat')}
{assign var="name" value=$wrapper.item->get('name')}
{if $value|in_array:$choosen_target}
{$checked = 'checked="checked"'}
{else}
{$checked = ''}
{/if}
<input type="checkbox" name="choosen_target[]" class="target_class" value="{$value}" {$checked}>{$name}<br />
{/if}
{include file="projekt--stellenangebot/template/get.tpl"
tree=$wrapper.subcats path=$path level=$wrapper.level name=sub}
{/foreach}
{/if}
<input type="submit" id="create_linkfields" value="Absenden"/>
Viele Grüße
-
- Beiträge: 3215
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 17 Mal
- Kontaktdaten:
Re: Recursives Smarty-Template mit abschließendem Code
Includierst du etwa am Ende der Schleife nochmal das Template selber?
Falls ja, dann hast du da die Template-Variable name (name=sub).
Kannst also in deinem Template ermitteln, ob es als Subtemplate ausgeführt wird oder nicht, folgendes sollte funktionieren:
Gruß
xmurrix
Falls ja, dann hast du da die Template-Variable name (name=sub).
Kannst also in deinem Template ermitteln, ob es als Subtemplate ausgeführt wird oder nicht, folgendes sollte funktionieren:
Code: Alles auswählen
{if $name && $name != 'sub'}
<input type="submit" id="create_linkfields" value="Absenden"/>
{/if}
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Re: Recursives Smarty-Template mit abschließendem Code
Ja, ich includiere das Template selbst. Das wird beim Beispielmandanten bei der Navigation oder der Sitemap auch so gemacht.
Die Idee mit der Abfrage des Namens hatte ich auch schon. Dann kommt gar kein input-Tag, d.h. die if-Bedingung wird nicht erreicht:
Grüße
Die Idee mit der Abfrage des Namens hatte ich auch schon. Dann kommt gar kein input-Tag, d.h. die if-Bedingung wird nicht erreicht:
Code: Alles auswählen
<!-- projekt--stellenangebot/template/get.tpl -->
{if $tree}
{* loop categories *}
{foreach from=$tree item=wrapper name=catlist}
{if $wrapper.level == 1}
<h3><br />{$wrapper.item->get('name')} </h3>
{else}
{assign var="value" value=$wrapper.item->get('idcat')}
{assign var="catname" value=$wrapper.item->get('name')}
{if $value|in_array:$choosen_target}
{$checked = 'checked="checked"'}
{else}
{$checked = ''}
{/if}
<input type="checkbox" name="choosen_target[]" class="target_class" value="{$value}" {$checked}>{$catname}<br />
{/if}
{include file="projekt--stellenangebot/template/get.tpl"
tree=$wrapper.subcats path=$path level=$wrapper.level name=sub}
{/foreach}
{/if}
{if $name && $name != 'sub'}
<input type="submit" id="create_linkfields" value="Absenden"/>
{/if}
-
- Beiträge: 3215
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 17 Mal
- Kontaktdaten:
Re: Recursives Smarty-Template mit abschließendem Code
Entweder übergibst du in der Modulausgabe einen initialen Wert für "name" und überprüfst diesen Wert im Template
oder du übergibst initial keinen Wert in der Modulausgabe, dann machst du im Template folgende Prüfung
Das kommt halt darauf an, was genau für einen initialen Wert die Variable $name im Template hat. In Subtemplates hat es den Wert "sub"...
Gruß
xmurrix
Code: Alles auswählen
// Modulausgabe
$smarty->assign('name', 'root');
// Im Template
{if $name && $name == 'root'}
<input type="submit" id="create_linkfields" value="Absenden"/>
{/if}
Code: Alles auswählen
// Im Template
{if !$name}
<input type="submit" id="create_linkfields" value="Absenden"/>
{/if}
Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Re: Recursives Smarty-Template mit abschließendem Code
Super!!!,
beide Varianten funktionieren.
Das ist es, was ich gesucht habe!
Vielen Dank!
beide Varianten funktionieren.
Das ist es, was ich gesucht habe!
Vielen Dank!