[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