[gelöst ]Parameter zwischen index.tpl und entries.tpl

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
reinhardl
Regular
Posts: 258
Joined: Wed Jun 20, 2007 8:54 am
Location: Germany

[gelöst ]Parameter zwischen index.tpl und entries.tpl

Post 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
Last edited by reinhardl on Tue Sep 29, 2015 6:53 pm, edited 1 time in total.
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Parameter zwischen index.tpl und entries.tpl

Post 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)
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
reinhardl
Regular
Posts: 258
Joined: Wed Jun 20, 2007 8:54 am
Location: Germany

Re: Parameter zwischen index.tpl und entries.tpl

Post 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
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Parameter zwischen index.tpl und entries.tpl

Post 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 ...}
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
reinhardl
Regular
Posts: 258
Joined: Wed Jun 20, 2007 8:54 am
Location: Germany

[gelöst} Re: Parameter zwischen index.tpl und entries.tpl

Post 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!!
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Parameter zwischen index.tpl und entries.tpl

Post 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.
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
reinhardl
Regular
Posts: 258
Joined: Wed Jun 20, 2007 8:54 am
Location: Germany

Re: [gelöst ]Parameter zwischen index.tpl und entries.tpl

Post 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
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: [gelöst ]Parameter zwischen index.tpl und entries.tpl

Post 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.
Regards,
Ian

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