Sie befinden sich hier : 
Dokumentation / Extension Tutorials / UDM Layer-Menü / Tutorial

Accessible Website Menu

Generelles:

UDM Dokumentation auf der Website des Autors in englischer Sprache.
Ein weiteres Tutorial zu diesem Thema finden Sie bei den CSS-Tutorials.de.
Wenn Sie sich für reine CSS-Menüs ohne JavaScript interessieren, lesen Sie diesen Thread im Forum von TYPO3.net.

Aus lizenzrechtlichen Gründen können die Skripte nicht der Download-Version des TYPO3 Templates beigelegt werden. Auch die relevanten Seiten sind in der t3d Datei nicht enthalten. Sie können sich die Skripte aber selbst herunterladen und dieses Tutorial anwenden.

Skripte herunterladen

Laden Sie das Paket von der Website des Autors herunter und entpacken Sie das ZIP-Archiv auf Ihrer Festplatte. Alle dort angebotenen Pakete sind identisch, sie unterscheiden sich lediglich durch die Lizenzbedingungen. Wählen Sie die für Sie günstigste Lizenz und beachten Sie die Bedingungen.

Nach dem Entpacken finden Sie eine Verzeichnisstruktur vor, wie unten abgebildet. Das einzige was wir für dieses Tutorial benötigen, sind die Dateien im Verzeichnis udm4/udm-resources. Laden Sie diese Dateien auf Ihren Webserver hoch und zwar in das Verzeichnis fileadmin/udm. Sie können ein anderes Verzeichnis wählen, müssen dann aber die Pfade, die in diesem Tutorial verwendet werden, anpassen.

Verzeichnisstruktur

Extension Template

Das Original YAML Template mit den Sliding-Door-Buttons als Menü wollte ich nicht verändern, weil es keinen Sinn macht, daß in der Typo3 Version plötzlich ein komplett anderes Menü enthalten ist als im Original.

Deshalb erstellen wir auf der Seite, auf der das UDM 4 Menü erscheinen soll, ein Extension-Template und behalten das Original-Menü auf den restlichen Seiten bei. Das Extension-Template wird automatisch an alle darunterliegenden Seiten vererbt.

Wichtig: Das Sliding-Door Menü (wird im Original-YAML verwendet) befindet sich im DIV-Container nav_main. Dieser stellt für das Sliding-Door-Menü wichtige Eigenschaften bereit, die für das UDM-Menü aber nicht gebraucht werden. Deshalb habe ich einen neuen Container nav_mainUDM verwendet (Zeile 5 und 6). Sie müssen also entweder die HTML-Vorlage layout_2col_left_vlines.html ändern oder sie kopieren und unter dem Namen layout_2col_left_vlinesUDM.html im Verzeichnis fileadmin/template speichern (empfohlen). Danach können Sie die Vorlage im Template-Selector auswählen.

  1. #############################
  2. # subpart temp.nav_mainUDM
  3. #############################
  4. #
  5. temp.nav_mainUDM = HMENU
  6. temp.nav_mainUDM {
  7.   entryLevel = 0
  8.   excludeUidList = 30,26,34,21,10
  9.   wrap = <ul id="udm" class="udm"><li><a href="http://yaml.t3net.de/" target="_self"">Home</a></li>|</ul>
  10.   1 = TMENU
  11.   1 {
  12.     expAll = 1
  13.     noBlur = 1
  14.     wrap = |
  15.     NO = 1
  16.     NO.ATagTitle.field = abstract // description // subtitle
  17.     NO.wrapItemAndSub = <li>|</li>
  18.     NO.stdWrap.htmlSpecialChars = 1
  19.   }
  20.   2 < .1
  21.   2.wrap = <ul>|</ul>
  22.   3 < .1
  23.   3.wrap = <ul>|</ul>
  24.   4 < .1
  25.   4.wrap = <ul>|</ul>
  26. }
  27. #############################
  28. # Temp-Objekt in subpart kopieren
  29. #############################
  30. temp.mainTemplate.subparts.nav_mainUDM < temp.nav_mainUDM
  31. #############################
  32. # Erforderliche Skripte in HEADER schreiben
  33. #############################
  34. page.headerData.5 = HTML
  35. page.headerData.5.value (
  36. <script type="text/javascript" src="fileadmin/udm/udm-custom.js"></script>
  37. <script type="text/javascript" src="fileadmin/udm/udm-control.js"></script>
  38. <script type="text/javascript" src="fileadmin/udm/udm-style.js"></script>
  39. )
  40. #############################
  41. # Erforderliche Skripte in BODY schreiben
  42. #############################
  43. page.5 = HTML
  44. page.5.value = <script type="text/javascript" src="fileadmin/udm/udm-dom.js"></script>
  45. page.6 = HTML
  46. page.6.value = <script type="text/javascript" src="fileadmin/udm/udm-mod-keyboard.js"></script>
  47. page.7 = HTML
  48. page.7.value = <script type="text/javascript" src="fileadmin/udm/udm-x-sliding.js"></script>
  49. #############################
  50. # Template in Seite kopieren
  51. #############################
  52. page.10 >
  53. page.10 < temp.mainTemplate
Datei herunterladen:uploads/tx_jphcodesnippets/extUDM.txt

JavaScript anpassen

Wenn Sie möchten, daß das Menü so aussieht, wie auf dieser Seite, dann übernehmen Sie das untenstehende Skript. Sie müssen auf jeden Fall den Pfad anpassen (Zeile 20). Jede der Optionen ist in der Datei dokumentiert und sollte selbsterklärend sein. Im Zweifelsfall einfach ausprobieren und sehen was passiert. Diese Datei ist die zentrale Konfigurationsdatei, an den anderen müssen Sie nichts ändern.

  1. // UDMv4.5 //
  2. /***************************************************************/
  3. var um={'menuClasses':[],'itemClasses':[],'menuCode':[]};
  4. /***************************************************************\
  5.   ULTIMATE DROP DOWN MENU Version 4.5 by Brothercake
  6.   http://www.udm4.com/
  7.  
  8.   This script may not be used or distributed without license
  9. \***************************************************************/
  10.  
  11.  
  12. /***************************************************************\
  13. * CORE CONFIGURATION
  14. \***************************************************************/
  15.  
  16.  
  17. //path to images folder
  18. um.baseSRC = "fileadmin/udm/";
  19.  
  20.  
  21. //initialization trigger element ["id"];
  22. um.trigger = "Impressum";
  23.  
  24.  
  25. //navbar orientation
  26. um.orientation = [
  27.   "horizontal"// alignment ["vertical"|"horizontal"|"popup"|"expanding"]
  28.   "left",  // h align ["left"|"right"|"rtl"]
  29.   "top",    // v align ["top"|"bottom"]
  30.   "relative"// positioning ["relative"|"absolute"|"fixed"|"allfixed"]
  31.   "50px"// x position ["em"|"ex"|"px"|"0"]
  32.   "0"// y position ["em"|"ex"|"px"|"0"]
  33.   "1000",  // z order ["0" to "10000"] (menu takes 20000 headroom)
  34.   ];
  35.  
  36.  
  37. //navbar list output
  38. um.list = [
  39.   "flexible"// horizontal overflow ["rigid"|"flexible"]
  40.   "yes",    // -SPARE-
  41.   "no",     // -SPARE-
  42.   ];
  43.  
  44.  
  45. //menu behaviors 
  46. um.behaviors = [
  47.   "200",    // open timer ["milliseconds"|"0"]
  48.   "500",    // close timer ["milliseconds"|"never"|"0"]
  49.   "yes",    // reposition menus to stay inside the viewport ["yes"|"no"]
  50.   "default"// manage windowed controls for win/ie ["default","hide","iframe","none"]
  51.   ];
  52.  
  53.  
  54. //reset behaviors
  55. um.reset = [
  56.   "yes",    // reset from document mouse click ["yes"|"no"]
  57.   "yes",    // reset from window resize ["yes"|"no"]
  58.   "yes",    // reset from text resize ["yes"|"no"]
  59.   "no",  // reset after following link ["yes"|"no"]
  60.   ];
  61.  
  62.  
  63. //horizontal continuation strip
  64. um.hstrip = [
  65.   "none",  // background ["color"|"#hex"|"rgb()"|"image.gif"|"none"]
  66.   "yes",    // copy item margin-right to margin-bottom ["yes"|"no"]
  67.   ];
  68.  
  69.  
  70. /***************************************************************\
  71. * MODULE SETTINGS
  72. \***************************************************************/
  73.  
  74.  
  75. //keyboard navigation
  76. um.keys = [
  77.   "38",  // up ["n"] ("38" = up arrow key)
  78.   "39",  // right ["n"] ("39" = right arrow key)
  79.   "40",  // down ["n"] ("40" = down arrow key)
  80.   "37",  // left ["n"] ("37" = left arrow key)
  81.   "123",    // hotkey ["n"] ("123" = F12)
  82.   "none",  // hotkey modifier ["none"|"shiftKey"|"ctrlKey"|"altKey"|"metaKey"]
  83.   "27",  // escape ["n"|"none"] ("27" = escape key)
  84.   "document.getElementsByTagName('a')[4]", // exit focus ["js-expression"]
  85.   ];
  86.  
  87.  
  88. /***************************************************************\
  89. * NAVBAR DEFAULT STYLES
  90. \***************************************************************/
  91.  
  92.  
  93. //styles which apply to the navbar
  94. um.navbar = [
  95.   "2",    // nav to menu x-offset (+-)["n" pixels]
  96.   "-1"// nav to menu y-offset (+-)["n" pixels]
  97.   "auto"// width ["em"|"ex"|"px"] (vertical navbar only - horizontal navbar items have "auto" width) ("%" doesn't work right)
  98.   ];
  99.  
  100.  
  101. //styles which apply to each navbar item
  102. um.items = [
  103.   "0",    // margin between items ["n" pixels]
  104.   "2",    // border size ["n" pixels] (single value only)
  105.   "separate"// border collapse ["collapse"|"separate"] (only applies when margin = "0")
  106.   "#5d91f1 #325081 #325081 #5d91f1",// border colors ["color"|"#hex"|"rgb()"] (single, double or four values)
  107.   "solid"// border styles ["solid"|"double"|"dotted"|"dashed"|"groove"|"ridge"|"inset"|"outset"] (single, double or four values; be careful with using "none")
  108.   "#5d91f1 #325081 #325081 #5d91f1",// hover/focus border colors ["color"|"#hex"|"rgb()"] (single, double or four values)
  109.   "solid"// hover/focus border styles ["solid"|"double"|"dotted"|"dashed"|"groove"|"ridge"|"inset"|"outset"] (single, double or four values; be careful with using "none")
  110.   "#5d91f1 #325081 #325081 #5d91f1",// visited border colors ["color"|"#hex"|"rgb()"] (single, double or four values)
  111.   "solid",// visited border styles ["solid"|"double"|"dotted"|"dashed"|"groove"|"ridge"|"inset"|"outset"] (single, double or four values; be careful with using "none")
  112.   "8",    // left/right padding ["n" pixels] (single value only)
  113.   "3",    // top/bottom padding ["n" pixels] (single value only)
  114.   "#5482d4",// background ["color"|"#hex"|"rgb()"|"image.gif"]
  115.   "#fff",// hover/focus background ["color"|"#hex"|"rgb()"|"image.gif"]
  116.   "#5482d4",// visited background ["color"|"#hex"|"rgb()"|"image.gif"]
  117.   "100%",  // font size ["em"|"ex"|"%"|"px"|"pt"|"absolute-size"|"relative-size"]
  118.   "'Trebuchet MS',Verdana,Helvetica,Arial, sans-serif;",// font family ["font1,font2,font3"] (always end with a generic family name)
  119.   "bold",  // font weight ["normal"|"bold"|"bolder"|"lighter|"100" to "900"]
  120.   "none",  // text decoration ["none"|"underline"|"overline"|"line-through"]
  121.   "left",  // text-align ["left"|"right"|"center"]
  122.   "#fff"// color ["color"|"#hex"|"rgb()"]
  123.   "#325081"// hover/focus color ["color"|"#hex"|"rgb()"]
  124.   "#fff"// visited color ["color"|"#hex"|"rgb()"]
  125.   "normal"// font-style ["normal"|"italic"|"oblique"]
  126.   "normal"// hover/focus font-style ["normal"|"italic"|"oblique"]
  127.   "normal"// visited font-style ["normal"|"italic"|"oblique"]
  128.   "",// additional link CSS (careful!)
  129.   "",// additional hover/focus CSS (careful!)
  130.   "",// additional visited CSS (careful!)
  131.   "right-navwhite.gif",// menu indicator character/image ["text"|"image.gif"|"none"]
  132.   "right-navblue.gif",// menu indicator rollover image ["image.gif"|"none"] (only when using image arrows)
  133.   "4",    // clipping width of indicator image ["n" pixels] (only when using image arrows)
  134.   "..",  // alt text of indicator image ["text"] (only when using image arrows)
  135.   ];
  136.  
  137.  
  138. /***************************************************************\
  139. * MENU DEFAULT STYLES
  140. \***************************************************************/
  141.  
  142.  
  143. //styles which apply to each menu
  144. um.menus = [
  145.   "-5",  // menu to menu x-offset (+-)["n" pixels]
  146.   "-3",  // menu to menu y-offset (+-)["n" pixels]
  147.   "2",    // border size ["n" pixels] (single value only)
  148.   "#5d91f1 #325081 #325081 #5d91f1",// border colors ["color"|"#hex"|"rgb()"] (single, double or four values)
  149.   "solid"// border styles ["solid"|"double"|"dotted"|"dashed"|"groove"|"ridge"|"inset"|"outset"] (single, double or four values; be careful with using "none")
  150.   "12em"// width ["em"|"ex"|"px"]
  151.   "2",    // padding ["n" pixels] (single value only)
  152.   "#5482d4"// background ["color"|"#hex"|"rgb()"|"image.gif"]
  153.   "",  // additional menu CSS (careful!) (you can use a transition here but *not* a static filter)
  154.   "none",// shadow background ["color"|"#hex"|"rgb()"|"image.gif"|"none"]
  155.   "0",    // shadow offset (+-)["em"|"ex"|"px"|"%"|"0"]
  156.   "",// additional shadow layer CSS (if you use a Microsoft.Shadow filter here then Win/IE5.5+ will do that *instead* of default shadow)
  157.   ];
  158.  
  159.  
  160. //styles which apply to each menu item
  161. um.menuItems = [
  162.   "0",    // margin around items ["n" pixels] (single value only; margins are like table cellspacing)
  163.   "1",    // border size ["n" pixels] (single value only)
  164.   "separate"// border collapse ["collapse"|"separate"] (only applies when margin = "0")
  165.   "#5482d4"// border colors ["color"|"#hex"|"rgb()"] (single, double or four values)
  166.   "solid"// border styles ["solid"|"double"|"dotted"|"dashed"|"groove"|"ridge"|"inset"|"outset"] (single, double or four values; be careful with using "none")
  167.   "#5d91f1 #325081 #325081 #5d91f1",    // hover/focus border colors ["color"|"#hex"|"rgb()"] (single, double or four values)
  168.   "solid"// hover/focus border styles ["solid"|"double"|"dotted"|"dashed"|"groove"|"ridge"|"inset"|"outset"] (single, double or four values; be careful with using "none")
  169.   "#5482d4"// visited border colors ["color"|"#hex"|"rgb()"] (single, double or four values)
  170.   "solid"// visited border styles ["solid"|"double"|"dotted"|"dashed"|"groove"|"ridge"|"inset"|"outset"] (single, double or four values; be careful with using "none")
  171.   "5",    // left/right padding ["n" pixels] (single value only)
  172.   "2",    // top/bottom padding ["n" pixels] (single value only)
  173.   "transparent"// background ["color"|"#hex"|"rgb()"|"image.gif"]
  174.   "#fff"// hover/focus background ["color"|"#hex"|"rgb()"|"image.gif"]
  175.   "transparent"// visited background ["color"|"#hex"|"rgb()"|"image.gif"]
  176.   "100%",  // font size ["em"|"ex"|"%"|"px"|"pt"|"absolute-size"|"relative-size"]
  177.   "'Trebuchet MS',Verdana,Helvetica,Arial,sans-serif;",// font family ["font1,font2,font3"] (always end with a generic family name)
  178.   "normal"// font weight ["normal"|"bold"|"bolder"|"lighter|"100" to "900"]
  179.   "none",  // text decoration ["none"|"underline"|"overline"|"line-through"]
  180.   "left",  // text-align ["left"|"right"|"center"]
  181.   "#fff",  // color ["color"|"#hex"|"rgb()"]
  182.   "#325081",    // hover/focus color ["color"|"#hex"|"rgb()"]
  183.   "#fff",  // visited color ["color"|"#hex"|"rgb()"]
  184.   "normal"// font-style ["normal"|"italic"|"oblique"]
  185.   "normal"// hover/focus font-style ["normal"|"italic"|"oblique"]
  186.   "normal"// visited font-style ["normal"|"italic"|"oblique"]
  187.   "",  // additional link CSS (careful!)
  188.   "",  // additional hover/focus CSS (careful!)
  189.   "",  // additional visited CSS (careful!)
  190.   "right-white.gif",// submenu indicator character/image ["text"|"image.gif"|"none"]
  191.   "right-darkblue.gif",// submenu indicator rollover image ["image.gif"|"none"] (only when using image arrows)
  192.   "3",    // clipping width of indicator image ["n" pixels] (only when using image arrows)
  193.   "..",  // alt text of indicator image ["text"] (only when using image arrows)
  194.   ];
  195.  
  196.  
  197. /***************************************************************\
  198. * MENU CLASSES
  199. \***************************************************************/
  200.  
  201.  
  202.  
  203.  
  204. /***************************************************************\
  205. * DYNAMIC MENUS
  206. \***************************************************************/
  207.  
  208.  
  209.  
  210.  
  211.  
  212. /***************************************************************\
  213. \***************************************************************/
  214.  
Datei herunterladen:uploads/tx_jphcodesnippets/udm-custom.txt

Testen der Funktionen

Das Menü sollte jetzt funktionieren. Wenn nicht, gehen Sie alle Schritte nochmal durch, bis Sie den Fehler gefunden haben. Ändern Sie die Datei udm-custom.js solange, bis das Menü hundertprozentig Ihren Anforderungen entspricht. Wenn das der Fall ist, lesen Sie die Seite weitere Schritte.

Design 1
Bookmark this page