scoping in entries

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

scoping in entries

Post by Timbalu »

Angeregt durch eine kleine Diskussion (*) die ich mit Don über die genaue Benutzung von $staticpage_pagetitle führte, habe ich mich mal wieder damit beschäftigt.

Die $staticpage_* Variablen - außer $staticpage_categorypage, sind nur dann im Smarty assign scope (**) wirklich vorhanden, wenn eine statische Seite inkl derjenigen Plugins, die eine solche emulieren, wie contactform, involviert ist. Ansonsten ist eine Abfrage mit {if $staticpages_pagetitle != ''} ziemlich sinnlos, da als Variable überhaupt nicht gesetzt. ( Besser wäre da {if isset($staticpage_pagetitle)} .)

Dazu kommt, dass man auf diese Variablen (sofern also überhaupt vorhanden) nur in der Template index.tpl bzw Staticpage oder Plugin eigenen Seiten (wie plugin_staticpage.tpl oder plugin_contactform.tpl) zugreifen kann, nicht aber in der entries.tpl.

Gibt es nun irgendwelche Szenarien, die die wirkliche Notwendigkeit einer Verfügbarkeit in der entries.tpl beschreiben? (***)



(*) http://board.s9y.org/viewtopic.php?f=4&t=19490
(**)

Code: Select all

$staticpage_pagetitle 	Smarty_Variable Object (3)
->value = "testpage"
->nocache = false
->scope = "file:/var/www/.../.../testpage.html"
(***) Dieses Verhalten war mit beiden Smarty Versionen gleich. (Ein assign zur Laufzeit wie bei $entry scope="parent" ist nicht möglich.)[/size]
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: scoping in entries

Post by garvinhicking »

Hi!

Das mit "isset" sieht halt für Leute einfach etwas verwirrender aus, ein != '' kann man meiner Meinung nach einfach besser lesen.

Dass die Variable als Scope so nicht durchgereicht ist, war mir noch gar nicht klar. Das ist natürlich schon etwas doof - ich dachte schon dass das mit Smarty2 eigentlich ging!? Nun ja, Du sagst es gibt keine Möglichkeit globale Variablen im PHP-Bereich zu vergeben? Würede das dann nicht auch viel mehr Dinge betreffen wie z.b. Variablen die templates via config.inc.php zuweisen?

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: scoping in entries

Post by Timbalu »

garvinhicking wrote:Nun ja, Du sagst es gibt keine Möglichkeit globale Variablen im PHP-Bereich zu vergeben?
Wie, Wo? Wenn ich verstehe was du damit meinst... möglicherweise erst mit upcoming Smarty3.2, das so eine Art "bubbling assign() to higher scopes" auf der ToDo hatte. Ansonsten nur, wenn man {include file scope} Syntax statt assign() benutzen könnte.
Smarty 3 does no longer pass the Smarty object but the template object to plugins.
Da könnte aber ein "möglicher" workaround helfen ... $template->smarty->assign() und $template->smarty->fetch(). Ungetestet!

Eine index.tpl mit

Code: Select all

{assign var='foo' value=$staticpage_pagetitle scope="root"} (oder global) 
staticpage page title: "{$staticpage_pagetitle}-{$foo}"; View: "{$view}"
wird in entries.tpl jedenfalls niemals wahr.

Absolut ist es aber eher die Frage, warum in der entries.tpl diese Variable überhaupt erhalten sein sollte?! Denn ansonsten funktioniert das ja alles wie es soll, außer das möglicherweise nicht gesetzte Variablen mit =! '' (verwirrend, aber fehlerfrei) abgefragt werden. :wink:
garvinhicking wrote:Würede das dann nicht auch viel mehr Dinge betreffen wie z.b. Variablen die templates via config.inc.php zuweisen?
Nein, das glaube ich nicht, da das ein lokaler scope ist. Ich habe jedenfalls bisher nichts Gegenteiliges feststellen können (habe aber auch nicht ausdrücklich danach gesucht).
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
Post Reply