Zum Inhalt springen

if bei altTarget geht nicht

Erstellt am 17. August 2004 · 8 Antworten · letzte Antwort am 12. Juli 2005

Tags: Frage

saltimbokka ·

Hallo Experten.
Was mach ich hier falsch:

# navigation-frame
navigation.10 = TEMPLATE
navigation.10 {
template = FILE
template.file = fileadmin/templates/navigation.html
workOnSubpart = DOCUMENT_BODY
subparts.CONTENT < styles.content.get
subparts.MENU = HMENU
subparts.MENU.1 = TMENU
subparts.MENU.1.target = contentFrame
subparts.MENU.1.NO {
allWrap = <tr><td>|</td></tr>
altTarget = _blank
altTarget.if{
value = 2
isInList.field = uid
}
}
}

Das altTarget wird überall verwendet, nicht nur auf der Seite mit uid=2. Wenn ich das if etwa auf allWrap anwende, dann wird es ausgewertet, bei altTarget nicht.

Danke
Saltimbokka

saltimbokka ·

Hi
ich versuchs nun mit conditions, aber leider erwisch ich da die page-id der aufgerufenen seite, nicht des menü-eintags. kann mir wirklich niemand auf die sprünge helfen:

# navigation-frame
navigation.10 = TEMPLATE
navigation.10.template = FILE
navigation.10.template.file = fileadmin/templates/navigation.html
navigation.10.workOnSubpart = DOCUMENT_BODY
navigation.10.subparts.NAVMENU = HMENU
navigation.10.subparts.NAVMENU.1 = TMENU
navigation.10.subparts.NAVMENU.1.NO.allWrap = <tr ><td>|</td></tr>
[globalVar = GP:id = 2]
navigation.10.subparts.NAVMENU.1.target = _blank
[ELSE]
navigation.10.subparts.NAVMENU.1.target = contentFrame
[GLOBAL]
navigation.stylesheet = fileadmin/css/nav.css

grüße und die hoffnung auf hilfe
saltimbokka

doku ·
# navigation-frame 
navigation.10 = TEMPLATE 
navigation.10.template = FILE 
navigation.10.template.file = fileadmin/templates/navigation.html 
navigation.10.workOnSubpart = DOCUMENT_BODY 
navigation.10.subparts.NAVMENU = HMENU 
navigation.10.subparts.NAVMENU.1 = TMENU 
navigation.10.subparts.NAVMENU.1.NO.allWrap = <tr ><td>|</td></tr> 

[globalVar = TSFE:id = 2]
navigation.10.subparts.NAVMENU.1.target = _blank 
[global] 

navigation.10.subparts.NAVMENU.1.target = contentFrame 
navigation.stylesheet = fileadmin/css/nav.css
saltimbokka ·

Hallo doku.
Vielen Dank, dass du versuchst mir zu helfen, aber dein code erzeugt immer target=contentFrame, denn zuerst wird nachgeschaut ob die page-id 2 ist, das target gesetzt und dann nochmal überschrieben.
Vielleicht hab ich es auch schlecht erklärt: es soll ein menü erzeugt werden, in dem das target fast immer "contentFrame" ist, nur nicht der Eintrag für die Seite mit id=2.
Und das menü soll bei allen aufrufen so aussehen. Also unabhängig von der id oben in der url (TSFE:id), sondern abhängig von der id des menüeintrags!
Saltimbokka

doku ·

1) ich hab dir nur gezeigt, wie dein condition-code richtig geschrieben wird. überprüft hab ich die wirkungsweise natürlich nicht. 8-)
2) was bitte ist die id eines menüeintrags?
ich lerne immer gerne dazu... 😉

saltimbokka ·

naja, in einem TMENU stehen links, und diese enthalten als parameter ids:

<a href="index.php?id=6&amp;type=1" target="contentFrame">Eintrag 1</a>
<a href="index.php?id=3&amp;type=1" target="contentFrame">Eintrag 2</a>
usw.

Das Target soll nun abhängig von dieser id gesetzt werden:

<a href="index.php?id=6&amp;type=1" target="contentFrame">Eintrag 1</a>
<a href="index.php?id=2&amp;type=1" target="_blank">Eintrag 2</a>
<a href="index.php?id=3&amp;type=1" target="contentFrame">Eintrag 3</a>

Eigentlich etwas, was einfach gehen sollte. Ich brings aber nicht hin!!!!

saltimbokka ·

Falls es irgendjemanden interessiert: ich habs gelöst über eine user-function:

# navigation-frame
navigation.10 = TEMPLATE
navigation.10.template = FILE
navigation.10.template.file = fileadmin/templates/navigation.html
navigation.10.workOnSubpart = DOCUMENT_BODY
includeLibs.myMenu = fileadmin/php/my_menu.php
navigation.10.subparts.NAVMENU = HMENU
navigation.10.subparts.NAVMENU.1 = TMENU
navigation.10.subparts.NAVMENU.1.itemArrayProcFunc = user_myMenu
navigation.10.subparts.NAVMENU.1.NO {
allWrap = <tr><td>|</td><td></tr>
}
navigation.stylesheet = fileadmin/css/nav.css

und in my_menu.php steht:
<?php

function user_myMenu($menuArr,$conf) {
for($i=0;$i<sizeof($menuArr);$i++) {
if ($menuArr[$i]['subtitle'] == "_blank") {
$menuArr[$i]['target'] = "_blank";
$menuArr[$i]['_OVERRIDE_HREF'] = "index.php?id=".$menuArr[$i]['uid']."&type=1";
} else {
$menuArr[$i]['target'] = "contentFrame";
}
}
return $menuArr;
}

?>

Ich geh jetzt über den subtitle, den ich für sonst nix brauche, da sich die id ja bei einem Umzug ändern kann.

saltimbokka ·

Nun noch eine Version mit data-wrap, basierend auf einen thread in der offiziellen englischen typo3-mailinglist:

# navigation-frame mit data-wrap
navigation.10 = TEMPLATE
navigation.10.template = FILE
navigation.10.template.file = fileadmin/templates/navigation.html
navigation.10.workOnSubpart = DOCUMENT_BODY
navigation.10.subparts.NAVMENU = HMENU
navigation.10.subparts.NAVMENU.1 = TMENU
navigation.10.subparts.NAVMENU.1.NO {
beforeWrap = <tr><td> |
linkWrap = |
doNotShowLink = 1
before.cObject = TEXT
before.cObject.field = uid
before.cObject.dataWrap = <A href="index.php?id= |&type=1" target="{field:subtitle}">
after.cObject = TEXT
after.cObject.field = title//nav_title
after.cObject.wrap = | </a>
wrapItemAndSub = | </td></tr>
}
navigation.stylesheet = fileadmin/css/nav.css

mc mz ·

Wen´s interessiert,

es gibt noch eine einfachere Lösung mit der optionSplit funktion die leider nicht immer bei den dataTypes ausreichend dokumentiert ist:

temp.navi.1.NO.altTarget = |*| page |*|  _blank

So kann ich z.B für das letzte element in meinem menu den target: _blank auswählen!

Grüße,

mcmz