Page 1 of 1
[gelöst ]Parameter zwischen index.tpl und entries.tpl
Posted: Tue Sep 29, 2015 11:46 am
by reinhardl
Hallo,
ich habe in der index.tpl einen Aufruf wie folgt:
Code: Select all
{if $startpagerow.thedesign =='design1'}
{serendipity_fetchPrintEntries limit="0,3" entryprops="ep_EntryPicture != ’’" category=$startpagerow.kategorie noCache=false fetchDrafts=false full=false use_footer=false template="entries_3boxes.tpl"}
{/if}
in der Datei
entries_3boxes.tpl benötige ich aber nun den Inhalt aus $startpagerow.thedesign.
Also wollte ich dieses mit folgender Funktion in der
config.inc.php realisieren:
Code: Select all
function smarty_function_global($params, &$smarty) {
global $serendipity;
if (isset($params['put']))
$serendipity[$params['put']] = $params['value'];
if(isset($params['get'])
return $globals[$params['get']];
}
$serendipity['smarty']->registerPlugin('function', 'global', 'smarty_function_global');
in den .tpl Dateien wollte ich dann über
Code: Select all
{global put=foo value="hallo"}
{global get=foo}
zugreifen. Funktioniert aber nicht. Irgendwie ist die return Zeile falsch oder funzt das grundsätzlich nicht?
Danke
Reinhard
Re: Parameter zwischen index.tpl und entries.tpl
Posted: Tue Sep 29, 2015 2:36 pm
by Timbalu
Da fehlte zumindest eine Klammer und auch das $globals war zumindest unnötig.
Auch scheint das put foo var zum globalen Serendipity array unsinnig... wie willst du wo später darauf zugreifen?
Meinst du also eher das hier?
Code: Select all
function smarty_function_global($params, Smarty_Internal_Template $template) {
if (isset($params['put'])) {
// assign variable to template object scope
$template->assign($params['put'], $params['value']);
}
if (isset($params['get'])) {
return $params['get'];
}
}
Code: Select all
{global put='foo' value='hallo'}
{if isset($foo)}{$foo}{/if}
{global get='foo'}
(Ohne mich mit dem eigentlichen Sinn und Zweck und der Namensgebung näher beschäftigt zu haben)
Re: Parameter zwischen index.tpl und entries.tpl
Posted: Tue Sep 29, 2015 4:46 pm
by reinhardl
hmmm
wenn ich die Funktion in der index.tpl aufrufe
Code: Select all
{global put='foo' value='hallo'}
{if isset($foo)}{$foo}{/if}
{global get='foo'}
hat foo den wert "hallo"
Die index ruft
{include file='include/include_content3box.tpl'}
auf.
In der include_content3box.tpl hat foo auch den Wert "hallo"
In include_content3box.tpl der wird entries_3boxes.tpl mittels serendipity_fetchPrintEntries aufgerufen:
Code: Select all
{serendipity_fetchPrintEntries limit="0,3" entryprops="ep_EntryPicture != ’’" category=$startpagerow.kategorie noCache=false fetchDrafts=false full=false use_footer=false template="entries_3boxes.tpl"}
in der entries_3boxes.tpl ist foo leer
Re: Parameter zwischen index.tpl und entries.tpl
Posted: Tue Sep 29, 2015 5:36 pm
by Timbalu
reinhardl wrote:hat foo den wert "hallo"
aber das wolltest du doch... du hattest put foo als $serendipity['foo'] mit dem value "hallo" definiert, oder? (
Nur, dass das wahrscheinlich nie wirklich gearbeitet hätte..)
Ich verstehe immer noch nicht wirklich worauf das alles hinausläuft.
reinhardl wrote:In der include_content3box.tpl hat foo auch den Wert "hallo" ... [aber] ... in der entries_3boxes.tpl ist foo leer
Das liegt daran, dass das ein völlig anderer scope ist.
Du könntest es also dort vielleicht mit scoping versuchen
Code: Select all
Example 7.13. {assign} a global variable
A global variable is seen by all templates.
{assign var=foo value="bar" scope="global"}
{assign "foo" "bar" scope="global"} {* short-hand *}
und das vor dem {serendipity_fetchPrintEntries ...}
[gelöst} Re: Parameter zwischen index.tpl und entries.tpl
Posted: Tue Sep 29, 2015 6:24 pm
by reinhardl
{assign var=foo value="bar" scope="global"}
funktioniert auch. Hattes es ohne scope ausprobiert und deshalb die funktion schreiben wollen. Meine Unwissenheit ....
Danke!!
Re: Parameter zwischen index.tpl und entries.tpl
Posted: Tue Sep 29, 2015 6:32 pm
by Timbalu
Es gäbe auch noch scope="parent", scope="root" und wie gezeigt scope="global" als letzte Steigerung. Vielleicht testest du mal durch, ob nicht auch schon ein vorheriger scope level ausreicht, und berichtetst hier davon.
Re: [gelöst ]Parameter zwischen index.tpl und entries.tpl
Posted: Wed Sep 30, 2015 10:46 am
by reinhardl
habs ausprobiert
parent funktionierte nicht!
root und global funktionieren
Code: Select all
{assign var=textlaenge value=$startpagerow.truncated_qty scope="root"}
{if $startpagerow.thedesign =='design1'}
{serendipity_fetchPrintEntries limit="0,3" entryprops="ep_EntryPicture != ’’" category=$startpagerow.kategorie noCache=false fetchDrafts=false full=false use_footer=false template="entries_3boxes.tpl"}
{/if}
ich nehme dann mal root
Re: [gelöst ]Parameter zwischen index.tpl und entries.tpl
Posted: Wed Sep 30, 2015 10:54 am
by Timbalu
Ja, besser!
Bei
Code: Select all
entryprops="ep_EntryPicture != ’’"
solltest du wirklich einfache (echte) single quotes verwenden, sonst kann das eventuell schiefgehen, siehe
Code: Select all
entryprops="ep_EntryPicture != ''"
Es ist wichtig einen guten Editor (wie zB Notepad++) zu nehmen, sonst baut man sich so leicht Fehler ein.