[TYPO3-german] TMENU .addParam = &caller=###PAGE_ID### geht nicht

Johannes Konert johanneskonert at gmx.de
Sun Jun 18 17:31:08 CEST 2006


hallo Marc,
danke dir für diesen guten Hinweis. Die Verwendung eines before.cObjects 
ist klasse.

..leider habe ich das Problem, dass auf diese Weise nicht mehr das 
JSWindow funktioniert, da mit deinem Lösungsvorschlag der Link komplett 
selbst generiert wird und der "eigentliche" Link (mit JSWindow) nicht 
angezeigt wird.
Was nicht geht:
   1 = TMENU
    1 {
       NO.doNotShowLink = 1
       NO.allWrap = <li>|</li>
       NO.before.cObject = TEXT
       NO.before.cObject {
         field = nav_title//title
         typolink.parameter.field = uid
         typolink.additionalParams.data = TSFE:id
         typolink.additionalParams.wrap = &caller=|
        }
      JSWindow = true
      JSWindow.newWindow = false
      JSWindow.params = status=0,menubar=0,scrollbars=yes
      wrap = <div class="submenue"><ul>|</ul></div>

Die JSWindow-Optionen laufen ins Nichts. (wegen NO.doNotShowLink = 1)

Daher habe ich eine kleine Extension-Funktion geschrieben, die den 
Parameter liefert (indem StdWrap ausgewertet wird). TScript sieht dann 
so aus:

includeLibs.ux_dummy = EXT:dummy/class.ux_dummy.php
   1 = TMENU
    1 {
       ## own solution for parameter..
       itemArrayProcFunc = ux_dummy->addMenuCallerParam
       itemArrayProcFunc.addParams = TEXT
       itemArrayProcFunc.addParams.data = page:uid
       itemArrayProcFunc.addParams.wrap = &caller=|
      JSWindow = true
      JSWindow.newWindow = false
      JSWindow.params = status=0,menubar=0,scrollbars=yes
      wrap = <div class="submenue"><ul>|</ul></div>

Die Funktion addMenuCallerParam fügt einfach dem Array der Menüeinträge, 
welche ihr übergeben werden, die eigenen strWrap-Optionen als 
GET/POST-Parameter hinzu und gibt das Array wieder zurück.

Funktion:
	function addMenuCallerParam($menuArray, $conf) { //adds the 
configuration .addParameter with stdWrap-Functions to the URL
		// 1. get parameter as cObject from .parameter
		// 2. then manipulate Array
		$addParam = trim($this->cObj->stdWrap($conf['addParams'], 
$conf['addParams.']));	
		if ($addParam != '') {
			for($i=0; $i < sizeof($menuArray); $i++) {
			if ($i > 100) break; // just in case it is some wrong-formatted Array...
				$menuArray[$i]['_ADD_GETVARS'] .= $addParam;
			}
		}
		return $menuArray;
	}

Wenn es allerdings eine TYpoScript-Lösung gibt, die einen &caller=uid 
Parameter auch mit JSWindow verbinden kann, freue ich mich über 
Lösungsvorschläge. Ansonsten für alle mit gleichem Problem obige Lösung 
als Vorschlag.

Grüße
Johannes

Marc Bastian Heinrichs schrieb:
> Hallo Johannes,
> 
>> in einem Textmenü möchte in jeden Menü-Link mit einem Parameter 
>> versehen, der einem Plugin auf der Zielseite sagt, durch welche pid 
>> die Seite aufgerufen wurde.
>> [...]
>> ...leider klappt es nicht mit
>> 1 = TMENU
>> 1 {
>>   addParams = &caller=###PAGE_ID###
>>
>> da addParams keine Ersetzungen durchläuft (und auch kein stdWrap 
>> unterstützt) kommt im Link wörtlich 
>> index.php?id=24&caller=###PAGE_ID### raus.
> 
> ja, der fehlende stdWrap bei addParams ist das Problem. Man kann dass 
> aber mit diesem TS umgehen
> 
> 1 = TMENU
> 1 {
>   NO {
>     linkWrap = |
>     doNotShowLink = 1
>     before.cObject = TEXT
>     before.cObject {
>       field = nav_title//title
>       typolink.parameter.field = uid
>       typolink.additionalParams.data = TSFE:id
>       typolink.additionalParams.wrap = &caller=|
>     }
>   }
> }
> 
> Grüße
> Marc Bastian



More information about the TYPO3-german mailing list