Page 1 of 1
Smarty in User-defined-Tag ausführen
Posted: Tue Aug 11, 2009 11:40 am
by medicus
Hallo Leute,
da ich aus der Doku nicht schlau geworden bin post ichs mal hier.
Ich würde gern in einem UDT auf das $node Element des Menü-Managers zugreifen.
Gwünschte Funktion: Falls eine dritte Menüebene existiert, soll der dazugehörige Parent ausgegeben werden.
( Die Kinder integrier ich ins Template über {menu start_level="3" template=""} )
Mein bescheidener Ansatz:
Code: Select all
if ($node->depth = 3) {
echo "$node->parent";
}
Vielleicht kann mir jemand auf die Sprünge helfen.
Grüße
Re: Smarty in User-defined-Tag ausführen
Posted: Tue Aug 11, 2009 11:56 am
by cyberman
Das sind ja gleich zwei Fragen in einem

.
1. Wie greife ich in PHP auf Smarty-Variablen zu?
http://smarty.net/manual/de/api.get.template.vars.php
2. Dein Ansatz
echo $node->parent wird nicht funktionieren da $node->parent allenfalls true ist und nicht den Menütext des Parents enthält.
Allerdings sollte dir das CGSimpleSmarty-Modul weiterhelfen können, damit kannst du auch auf den parent zugreifen.
Falls du nicht weiterkommst, einfach hier fragen

...
Re: Smarty in User-defined-Tag ausführen
Posted: Tue Aug 11, 2009 2:43 pm
by medicus
cyberman wrote:
Falls du nicht weiterkommst, einfach hier fragen

...
Das ist leider der Fall. Da ich leider bisher wenig mit PHP gearbeitet hab und Smarty auch neu ist, bin ich mir deren Funktionsumfang nicht wirklich bewusst.
$node bietet mir (aus meiner Sicht) leider keine verwertbare Eigenschaft für diese wohl primitive Aufgabe.
Wie könnte man, sobald ein Link im Menü auf zweiter Ebene (1.1) angeklickt wird UND über Kinder verfügt (1.1.2) etwas HTML-Code ausgeben?
Meine Idee war ein User-Defined-Tag, der schlussendlich im Markuptemplate platziert wird. Nur is mir das offenbar zu hoch.
Kann mir jemand helfen?
Re: Smarty in User-defined-Tag ausführen
Posted: Thu Aug 13, 2009 7:55 am
by cyberman
Die Frage ist, was genau du ausgeben möchtest (Text, Menü, Grafik, ...?).
Weiter oben hattest du von einem Menü in der dritten Ebene gesprochen ... für eine derartige Anwendung enthält das mitgelieferte Template "Top simple navigation + left subnavigation + 1 column" ein Beispiel (für die erste und die zweite Ebene - die erste Ebene als Top-Menü und die zweite Ebene in der linken Sidebar).
Re: Smarty in User-defined-Tag ausführen
Posted: Thu Aug 13, 2009 1:50 pm
by medicus
Die Frage ist, was genau du ausgeben möchtest (Text, Menü, Grafik, ...?).
Einfacher Text.
Es ist so gedacht, dass die dritte Ebene in der Sidebar geöffnet wird (das is mit {menu start_level="3"..} gelöst).
Dieser dritten Ebene soll als Überschrift der jeweilige Parent dienen.
Ich weiß bis heute nicht wie ich das am besten löse... hab aber mittlerweile einfach das Menü umstrukturiert.
Allerdings bin ich heute auf ein neues Problem gestoßen
Und zwar möchte ich in einem UD-Tag Parameter übergeben wies bei den vielen tollen Modulen üblich ist.
Als Aufruf im Quellcode z.B. {import page="adress"}
Ich dachte an sowas im UD-Tag:
$smarty->assign('page', $adress);
Geht das?
Und wenn ja, wie handle ich das dann im UD-Tag?
z.B. so?
if ( $smarty->get_template_vars('page'); ) {
Blablabla ..?
}
Re: Smarty in User-defined-Tag ausführen
Posted: Fri Aug 14, 2009 1:07 pm
by cyberman
medicus wrote:
Es ist so gedacht, dass die dritte Ebene in der Sidebar geöffnet wird (das is mit {menu start_level="3"..} gelöst).
Dieser dritten Ebene soll als Überschrift der jeweilige Parent dienen.
Ich weiß bis heute nicht wie ich das am besten löse... hab aber mittlerweile einfach das Menü umstrukturiert.
Du könntest evtl. auch im Menü-Template für die erste und zweite Ebene den Menü-Text des aktiven Menü-Eintrags einer separaten Smarty-Variablen zuweisen und diese Variable dann im Menü-Template der dritten Ebene als Überschrift verwenden.
Hier mal der (zu ergänzende) Ausschnitt aus dem Menü-Template für die 1. und 2. Ebene
Code: Select all
{if $node->current == true}
<li class="currentpage"><h3><dfn>Current page is {$node->hierarchy}: </dfn>{$node->menutext}</h3>
{assign var="sub3header" value=$node->menutext}
Im Menü-Template für die 3. Ebene fügst du an passender Stelle nur noch {$sub3header} ein.
Und zwar möchte ich in einem UD-Tag Parameter übergeben wies bei den vielen tollen Modulen üblich ist.
Evtl. hilft dir das etwas weiter
http://wiki.cmsmadesimple.org/index.php ... ed_Tags/de
Re: Smarty in User-defined-Tag ausführen
Posted: Sat Sep 05, 2009 12:16 am
by NaN
Ich verstehe leider immer noch nicht genau was Du vorhast.
Wie soll das ganze von statten gehen?
Rufst Du Deinen UDT im News-Template auf oder im Seiten-Template?
Welche Parameter werden an den UDT übergeben?
Was soll der UDT zurückgeben?
Soll der UDT nur Newseinträge mit einem bestimmen Extrafeld ausgeben?
Ist es das?
Oder soll er die Extrafelder zurückgeben?
Die sind normalerweise schon im News-Template verfügbar.
Wie sieht denn Deine Datenbankabfrage bisher aus?
Re: Smarty in User-defined-Tag ausführen
Posted: Mon Sep 07, 2009 12:17 am
by NaN
Lightstoner wrote:
Hat sich heut morgen erledigt. Bin per Zufal auf die lösung gestossen.
Die da wäre?