Typo3 Popup Menü mit TMENU und window.open()

Kürzlich sind unsere Designer wieder an mich herangetreten wegen einer Webseite. Wie üblich hört sich immer alles ganz einfach an, bis sie am Schluß dann wieder irgend eine ‘Kleinigkeit’ noch wollen. Etwas das für sie so minimal ist, daß es vorher nicht erwähnt werden mußte.

Wie wollten in ihrem Presse-Menü, daß beim Anklicken auf ein Untermenüpunkt nicht normal zu dieser Seite navigiert wird, sondern es sollte der Inhalt der Seite in einem Popup Fenster erscheinen. Warum weiß ich nicht so genau, aber ich habe aufgegeben bei Webseiten-Designern Logik zu suchen.

Natürlich habe ich als erstes allen Unterseiten von Presse über Template eine andere HTML-Vorlage gegeben. Das war noch einfach. Dann habe ich versucht über das Target Feld in den Seiteneigenschaften ein Popup zu realisieren. Das geht zwar ist aber unbefriedigend, da es einen kompletten Browser mit Menü, Adressfeld, usw öffnet.

Also das Internet durchstöbert, um rauszufinden, wie das andere schon gelöst haben. Ich habe auch einige Sachen gefunden, die waren aber höllisch kompliziert und machten für meinen Fall einfach keinen Sinn. Außerdem glaube ich bei der Software-Entwicklung und KISS (Keep It Simple Stupid!). Ein Bißchen nachgedacht und überlegt und dann bin ich zu dem Schluß gekommen, daß man das doch selber zusammenbauen kann – mit dem stdWrap Element von TMENU.

Hier die Lösung. Klappt hervorragend!:

menu {
news = HMENU
news {
special = directory
special.value = 29
1 = TMENU
1 {
noBlur = 1
wrap = <h3>News</h3><table class=”news-menu” cellpadding=”0″ cellspacing=”0″ border=”0″>|</table>
NO = 1
NO {
doNotLinkIt = 1
stdWrap.cObject = COA
stdWrap.cObject {
10 = TEXT
10 {
field = tx_gstaliaspro_aliaspro
wrap = <a href=”|” onClick=”window.open(this.href,’popup’, ‘width=400,height=300,left=50,top=200′); return false;
}
15 = TEXT
15 {
field = subtitle // description
wrap = ” title=”|” >
}
20 = TEXT
20 {
field = title
wrap = | </a> </td></tr>
}
30 = TEXT
30 {
field = nav_title
wrap = <tr><td><strong>|</strong></td></tr><tr><td>&nbsp;</td></tr>
}
}
allWrap = <tr><td nowrap>|</td> </tr>
} # NO
} # 1
} # news
[....]
} ## end menu 

Verwendet natürlich leider JavaScript, aber das ließ sich nicht vermeiden. Der SEO wird wieder mal schimpfen, aber ich bin es leid immer zwischen den SEO und die Webdesigner zu geraten.

Statt dem Feld für AliasPro, eine bei mir sehr beliebte Extension, kann man auch das Feld uid hernehmen und dann im href ‘index.php?id=’ hernehmen. Außerdem kann man auch noch andere Fenster-Eigenschaften setzen über den window.open() Befehl.

Die Kommentarfunktion ist geschlossen.