Im Template abfragen, ob man sich in der Newsdetail-ansicht befindet oder nicht.

Diskussionen zur Smarty-Template-Engine
Post Reply
regina
Forum Members
Forum Members
Posts: 39
Joined: Mon Feb 09, 2009 6:09 pm

Im Template abfragen, ob man sich in der Newsdetail-ansicht befindet oder nicht.

Post by regina »

Im Template steht folgender Code:
{title}
{content}
 
Links im Menü ist eine Voransicht für News eingebaut.
Wenn der User dort auf einen Newstitel klickt, wird im content die Detailansicht der News gezeigt.
Hier steht oben der Titel der News.
Es wird also erst der Titel der Seite, dann der Titel der News angezeigt.

Es soll aber nur der Titel der News angezeigt werden.

d.h. im Template muß es eine IF-Abfrage geben, wenn im content-Bereich nicht die Detailansicht der news steht, dann zeige {titel} an, sonst nicht.

Auf was kann man denn da genau abfragen? Wie lautet die korrekte Smarty-Syntax?

Schönen Gruß, Regina
uniqu3

Re: Im Template abfragen, ob man sich in der Newsdetail-ansicht befindet oder nicht.

Post by uniqu3 »

Hi,

in deinem News Detail-Template füge etwas wie das hier hinzu und lösche {$entry->title}:
{assign var='pagetitle' value=$entry->title}

Danach in deinem Template einfach abfrage folgend einfügen:
{if isset($pagetitle)}{$pagetitle}{else}{title}{/if}
regina
Forum Members
Forum Members
Posts: 39
Joined: Mon Feb 09, 2009 6:09 pm

Re: Im Template abfragen, ob man sich in der Newsdetail-ansicht befindet oder nicht.

Post by regina »

Hi uniqu3,

Deine Lösung erscheint mir so genial wie einfach.
(Was nicht heißt, daß ich von selbst jemals drauf gekommen wäre ;))
Leider scheint die Variable $pagetitle im Template nie gesetzt zu sein, auch nicht, wenn ich auf die Detailansicht der News klicke.

Auch wenn ich sie ausgebe, ist sie immer leer.

Im Detail-Template habe ich die Variable ganz oben definiert und kann dann auch weiter unten drauf zu greifen.

Hast Du eine Idee, woran das liegen könnte?

Gruß, Regina
uniqu3

Re: Im Template abfragen, ob man sich in der Newsdetail-ansicht befindet oder nicht.

Post by uniqu3 »

Wie sehen jetzt dein News Detail Template und Page Template aus, müsste ja eigentlich funktioneren?
In der regel mache ich es noch so im Page Template, ganz am Anfang.

{if !isset($pagetitle)}{capture assign='pagetitle'}{title}{/capture}{/if}

So kann ich im Template einfach {$pagetitle} ohne if abfragen verwenden.
regina
Forum Members
Forum Members
Posts: 39
Joined: Mon Feb 09, 2009 6:09 pm

Re: Im Template abfragen, ob man sich in der Newsdetail-ansicht befindet oder nicht.

Post by regina »

OK, so habe ich das jetzt auch gemacht.
Das ist wirklich übersichtlicher, als die IF-Else-Konstruktion.

Er gibt aber immer den Seitentitel aus, statt den News-Titel, auch wenn ich auf der News-Detailseite bin, also offensichtlich ist  if(!isset($pagetitle)) nie true.

Ich habe ganz oben im Page-Template diese Zeile eingetragen:
{if !isset($pagetitle)}{capture assign='pagetitle'}{title}{/capture}{/if}
Weiter unten (also vor {content} dieses hier:
{$pagetitle}
Am Anfang des News-Detail-Templates steht:
{assign var='pagetitle' value=$entry->title}
Also eigentlich wie es sein sollte, oder?

Ich fürchte, ich muß den ganzen Vorgang mal mit meinem PHPEd debuggen.
Dazu muß ich aber erst mal rausfinden, in welchen Dateien das Template zusammengesetzt wird.
Ogottogottt..... :o
uniqu3

Re: Im Template abfragen, ob man sich in der Newsdetail-ansicht befindet oder nicht.

Post by uniqu3 »

Ist die Seite irgendwo online zugänglich? Kannst mir ja einen Zugang über PM zukommen lassen und ich schau es mir an.

Templates werden in der Datenbank gespeichert, da suchst Du Dateien dafür vergeblich.
regina
Forum Members
Forum Members
Posts: 39
Joined: Mon Feb 09, 2009 6:09 pm

Re: Im Template abfragen, ob man sich in der Newsdetail-ansicht befindet oder nicht.

Post by regina »

Danke für das Angebot, aber die Seite ist momentan nur lokal bei mir.
Ja, schon klar, daß die Templates nicht als Files existieren.
Aber aus der Datenbank müssen sie ja auch ausgelesen werden und dann irgendwie geparst.

Ich schau mir das bei Gelegenheit mal an im Debugger und melde, was ich gefunden habe...
regina
Forum Members
Forum Members
Posts: 39
Joined: Mon Feb 09, 2009 6:09 pm

Re: Im Template abfragen, ob man sich in der Newsdetail-ansicht befindet oder nicht.

Post by regina »

Ich habe in meinem Debugger einen Haltepunkt gesetzt in der Datei Smarty.class.php in der Funktion assign.
Da sehe ich, daß zuerst eine Variable im Seiten-Template gesetzt wird und später erst die aus dem Detail-Template der News.

Deswegen scheint obige Lösung bei mir nicht zu funktionieren, weil eben die Variable für den Newstitel noch nicht assigned ist.

Ich habe jetzt folgende Lösung gefunden:
{if $smarty.get.mact !='News,cntnt01,detail,0'} {title}{/if}
Also, nur wenn die Get-Variable mact nicht 'News,cntnt01,detail,0' ist, dann wird der Seitentitel angezeigt.

Das funktioniert soweit prima, ich bin mir nur nicht sicher, ob die Variable immer so heißt, oder ob die Ziffern variieren? z.B. auf 'News,cntnt01,detail,1'

Für den Fall wäre es mir lieber ich würde nicht auf $smarty.get.mact != 'News,cntnt01,detail,0' abfragen, sondern auf
$smarty.get.mact enthält nicht 'News'.
Ich finde aber nicht die richtige Smarty-Syntax dafür.

Mit Smarty kenne ich mich gar nicht aus...
Post Reply

Return to “Smarty-Tipps und -Tricks”