[Beispiel] ypMenu ( GMENU horizontal , ypSlideOutMenus )

  • n-joy n-joy
    R2-D2
    0 x
    65 Beiträge
    0 Hilfreiche Beiträge
    25. 01. 2005, 17:33

    Tach allerseits :)

    ich habe mir mal die Mühe gemacht (..sieh an ..sieh an ;) ) und zum ypMenu ein relativ umfangreiches Beispiel erstellt. Dieses soll euch helfen das ypMenu schnell und ohne viel Zeitaufwand zum laufen zu bringen...

    aus optischen Gründen habe ich das Beispiel erstmal im HTML-Format erstellt:
    http://steinhauer-gmbh.net/_tmp/ypMenu/

    ...im Laufe der Zeit werde ich mein Posting erweitern (editieren)

    - Verbesserungsvorschläge erwünscht
    - bei Problemen oder wenn nicht verständlich, fragen :)

    [quote:dcd9872421]
    [b:dcd9872421]ypMenu (ypSlideOutMenu) in Typo3[/b:dcd9872421]

    Dateien (copyright haben die jeweiligen Autoren):
    - [url=http://steinhauer-gmbh.net/_tmp/ypMenu/ypMenu-php.zip]ypMenu.php [/url]( [i:dcd9872421]per includeLibs in Typo3 einbinden[/i:dcd9872421] )
    - [url=http://steinhauer-gmbh.net/_tmp/ypMenu/ypSlideOutMenus-js.zip]ypSlideOutMenus.js[/url] ( [i:dcd9872421]im header laden[/i:dcd9872421] )
    - [url=http://steinhauer-gmbh.net/_tmp/ypMenu/ypMenu-css.zip]ypMenu.css[/url] ( [i:dcd9872421]in eure CSS-datei übernehmen oder im header mitladen[/i:dcd9872421] )

    [code:1:dcd9872421]
    [b]Typo3: externes Template ( temp.ypMenu ) -> Setup[/b]

    config.no_cache = 1
    page.includeLibs.ypMenu = fileadmin/scripts/ypMenu/ypMenu.php
    page.headerData.11 = TEXT
    page.headerData.11.value = <script type="text/javascript" src="fileadmin/scripts/ypMenu/ypSlideOutMenus.js" language="JavaScript"></script> temp.ypMenu.special = directory
    # 57 ist die ID der root-page - siehe screenshot
    temp.ypMenu.special.value = 57
    temp.ypMenu = HMENU
    temp.ypMenu {
    1 = GMENU
    1 {
    IProcFunc = user_menu->firstLevel
    expAll = 1
    wrap = |
    NO = 1
    NO {
    wrap = |
    XY = [50.w]+20, 31
    30 = IMAGE
    30.file = fileadmin/scripts/ypMenu/menu_bg2.gif
    50 = TEXT
    50 {
    text.field = title
    fontSize = 10
    fontFile = fileadmin/templates/fonts/verdana.ttf
    fontColor = #222222
    offset = 10,20
    niceText = 0
    transparentBackground = 1
    }
    100 = || IMAGE
    100.file = fileadmin/scripts/ypMenu/menu_space.gif
    }

    IFSUB < temp.ypMenu.1.NO
    IFSUB = 1

    RO < temp.ypMenu.1.NO
    RO = 1
    RO {
    backColor = #DDDDDD
    30 >
    }

    IFSUBRO < temp.ypMenu.1.NO
    IFSUBRO = 1
    IFSUBRO {
    backColor = #DDDDDD
    30 >
    }
    }

    2 = TMENU
    2 {
    IProcFunc = user_menu->secondLevel
    expAll = 1
    NO.linkWrap = <li>|</li>
    }

    3 = TMENU
    3 {
    IProcFunc = user_menu->thirdLevel
    expAll = 1
    NO.linkWrap = <li>|</li>
    }

    4 = TMENU
    4 {
    IProcFunc = user_menu->fourthLevel
    expAll = 1
    NO.linkWrap = <li>|</li>
    }
    }

    temp.user_menu = USER
    temp.user_menu.userFunc = user_menu->menuEnd
    [/code:1:dcd9872421]
    Ich habe vieles - wie auch das ypMenu - aus meinem MainTemplate in externe Templates ausgelagert, damits im MainTemplate übersichtlich bleibt! Deshalb kommt auch nur wenig TS in das MainTemplate(externes Template einbinden)
    [code:1:dcd9872421]
    [b]Typo3: MainTemplate der root-page -> Setup[/b]

    page = PAGE
    page.typeNum = 0
    page.stylesheet = fileadmin/templates/style2/class.css
    page.10 = TEMPLATE
    page.10{
    template = FILE
    template.file = fileadmin/templates/style2/template.htm
    workOnSubpart = DOKUMENT

    marks.MENU = COA
    marks.MENU {
    10 < temp.ypMenu
    20 < temp.user_menu
    }
    }
    [/code:1:dcd9872421]
    Das dazugehörige XHTML-template ist natürlich nur als Beispiel/Vorlage gedacht!
    [code:1:dcd9872421]
    [b]HTML-template ( fileadmin/templates/style2/template.htm )[/b]

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    <!-- ###DOKUMENT###-->
    <div id="cRoot">
    <div id="cBanner"></div>
    <div id="cHeader"></div>
    <div id="cMenu">###MENU###</div>
    <div id="cPfad"></div>
    <div id="cInhalt">###INHALT###</div>
    <div id="cFunktion"></div>
    <div style="clear:both;height:1px;overflow:hidden;"></div>
    <div id="cFooter"></div>
    </div>
    <!-- ###DOKUMENT### -->
    </body>
    </html>
    [/code:1:dcd9872421]
    Im CSS-Teil kann man im grunde >alles< dem eigenen design anpassen, ich habe aber erstmal nur die relevantesten eigenschaften blau markiert. Ausserdem ist die class "cMenu" nur ein Beispiel für einen DIV-container in dem der MENU-marker steht.
    [code:1:dcd9872421]
    [b]CSS-code ( fileadmin/templates/style2/class.css ) für das ypMenu und für den DIV mit der ID cMenu[/b]

    #cMenu {
    height:31px;
    width: 708px;
    margin-left:1px;
    margin-bottom:1px;
    background: #FFFFFF url(menu_bg.gif) repeat-x top left;
    position:relative; /* wichtige angabe, sonst taucht das slideMenu an falscher Position auf */
    }

    /*
    ###################
    # ypMenu Styles #
    ###################
    */
    .mmContent {
    /* nrmale schrift definieren */
    font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, SunSans-Regular;
    }

    .mmContent ul {
    margin: 0px; padding: 0px;
    list-style: none;
    z-index:2;
    position:relative;
    left:0px; top:0px;
    }
    .mmContent li {
    padding: 0px; margin: 0px;
    }

    .menuBackground {
    position:absolute;
    left:0px; top:0px;
    z-index:1;
    }

    .mmContent li a {
    /* Links bzw. die slideMenü-Elemente definieren */
    display: block;
    color: #222222;
    font-weight:normal;
    font-size: 12px;
    font-family: Verdana, Arial, Helvetica, Geneva, SunSans-Regular;
    width: 150px;
    padding: 5px;
    text-decoration: none;
    border-bottom: solid 1px #CCCCCC; /* der rand zwischen den MenüElementen */
    }

    * html .mmContent li a {
    width: 160px;
    width: 160px;
    }

    /* */
    .mmContent li a:link { background: #EAED65; color: #222222; font-size: 12px; }
    .mmContent li a:visited { background: #EAED65; color: #222222; font-size: 12px; }

    .mmContent li a:hover{ background: #FFFF99; color: #222222; font-size: 12px; }
    .mmContent li a:active { background: #EAED65; color: #222222; font-size: 12px; }

    .mmContent li a.submenu {
    background: #EAED65 url(fileadmin/scripts/ypMenu/pfeil.gif) no-repeat right center; }
    .mmContent li a.submenu:hover {
    background: #FFFF99 url(fileadmin/scripts/ypMenu/pfeil.gif) no-repeat right center; }

    /*
    ##########################################
    # ypMenu Styles for our belove IE 5.01 #
    ##########################################
    */

    .mmContentb {
    font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, SunSans-Regular;
    }

    .mmContentb ul {
    margin: 0px; padding: 0px;
    list-style: none;
    z-index:2;
    position:relative;
    left:0px; top:0px;
    }
    .mmContentb li {
    padding: 0px; margin: 0px;
    }

    .menuBackground {
    position:absolute;
    left:0px; top:0px;
    z-index:1;
    }

    .mmContentb li a {
    /* Links bzw. die slideMenü-Elemente definieren */
    display: block;
    width: 150px;
    padding: 5px;
    color: #222222;
    font-weight: normal;
    font-size: 12px;
    font-family: Verdana, Arial, Helvetica, Geneva, SunSans-Regular;
    text-decoration: none;
    border-bottom: solid 1px #CCCCCC; /* der rand zwischen den MenüElementen */
    }

    * html .mmContentb li a {
    width: 160px;
    width: 160px;
    }

    .mmContentb li a:link { background: #EAED65; color: #222222;}
    .mmContentb li a:visited { background: #EAED65; color: #222222;}

    .mmContentb li a:hover{ background: #FFFF99; color: #222222;}
    .mmContentb li a:active { background: #EAED65; color: #222222;}

    .mmContentb li a.submenu {
    background: #EAED65 url(fileadmin/scripts/ypMenu/pfeil.gif) no-repeat right center;
    font-size: 12px;
    }
    .mmContentb li a.submenu:hover {
    background: #FFFF99 url(fileadmin/scripts/ypMenu/pfeil.gif) no-repeat right center;
    font-size: 12px;
    }
    [/code:1:dcd9872421]
    In der ypMenu.php wird man noch ein paar kleinigkeiten anpassen müssen...
    [code:1:dcd9872421]
    [b]ypMenu.php anpassen...[/b]

    var $offsetY = 31; // vertikale fixierung des slideMenu's - relativ zum gecenterten DIV oder TD
    var $offsetX = 0; // horizontale fixierung des slideMenu's - relativ zum gecenterten DIV oder TD
    var $sublevelWidth = 160; // breite des sublevel elements
    var $sublevelHeight = 25; // höhe des sublevel elements

    var $padding = 5; // padding-abstand rechts und links
    var $fontSize = 11; // schriftgröße
    var $breakpoint = 14; // bricht Zeile nach X(14) Zeichen um
    var $secPadding = 16; // padding-abstand oben und unten

    var $fontFile = 'fileadmin/templates/fonts/verdana.ttf'; // font-datei wird fürs berechnen des zeilenumbruchs benötigt
    var $transBg = 'fileadmin/scripts/ypMenu/menu_bg.png'; // transparente PNG datei, behebt transparenz-fehler beim Mac IE 5 und Opera - die PNG-Transparenz sollte die gleiche sein wie die der CSS-FILTER-eigenschaft: alpha(opacity)
    [/code:1:dcd9872421]

    [/quote:dcd9872421]

    MfG

    [i:dcd9872421]p.s. ypMenu kommt von Ersteller der http://www.meade.de[/i:dcd9872421]


  • 0 x
    21 Beiträge
    0 Hilfreiche Beiträge
    20. 06. 2005, 12:48

    [quote="rommy"]
    Was kann man machen , damit bei ausgeschaltetem
    Javascript die unteren Menüebenen nicht sichtbar werden ?
    [/quote]

    schau dir dazu doch mal den workaround von lulatsch an, den er im http://www.meade.de-thread beschrieben hat:
    [url]http://www.typo3.net/forum/list/list_post//15065/?page=14[/url]
    [/url]

  • Liberation Liberatio...
    Jedi-Meister
    0 x
    412 Beiträge
    0 Hilfreiche Beiträge
    20. 06. 2005, 12:50

    Hi,
    das liegt daran das der IE beim laden schon teile der Webseite anzeigt und somit auch die eigendlich unsichtbaren menuteile sichtbar sind.

    schau mal quellcode der webseite http://www.sci-worx.com da habe ich das durch einen kleinen trick ausgeblendet.

  • StefanBeike StefanBei...
    Padawan
    0 x
    42 Beiträge
    0 Hilfreiche Beiträge
    28. 06. 2005, 11:01

    [quote="s.sach"]
    Also ich hatte auf dem Account, wo das Menü nichtfunktionierte noch Typo 3.6 Beta2 laufen. Hab es auf 3.6.2 upgedatet und nun funktioniert das Menü #paralyzed#
    [/quote]

    hatte das Problem auch. Liegt wirklich an der Version. t3lib_page.php hatte die getmountpointinfo noch nicht implementiert.

  • RChristian RChristia...
    Sternenflotten-Admiral
    0 x
    242 Beiträge
    0 Hilfreiche Beiträge
    29. 06. 2005, 12:52

    Hallo Leute,

    hat einer von euch eine Ahnung warum bei mir der IE6 - Browser die untermenüs nicht anzeigt? Im Firefox funktioniert der menü einwandfrei nur im IE6 nicht.

    Hier könnt ihr mein code für das menu sehen:

    1. config.no_cache = 1
    2.  
    3. # include der menü script
    4. ###################
    5. page.includeLibs.ypMenu = fileadmin/scripts/ypMenu/ypMenu.php
    6. page.headerData.11 = TEXT
    7. page.headerData.11.value = <script type="text/javascript" src="fileadmin/scripts/ypMenu/ypSlideOutMenus.js" language="JavaScript"></script>
    8. page.headerData.12 = TEXT
    9. page.headerData.12.value = <link rel="stylesheet" type="text/css" href="fileadmin/skripts/ypMenu.css" />
    10.  
    11.  
    12. temp.ypMenu.excludeUidList = 2, 15, 16, 17, 18, 19
    13. temp.ypMenu = HMENU
    14. temp.ypMenu {
    15. 1 = GMENU
    16. 1 {
    17. IProcFunc = user_menu->firstLevel
    18. expAll = 1
    19. wrap = |
    20. NO = 1
    21. NO {
    22. wrap = |
    23. XY = [50.w]+34, 20
    24. backColor = #000000
    25. 30 = IMAGE
    26. 30.file = fileadmin/template/imgs/grafik_menue_oben.jpg
    27. 50 = TEXT
    28. 50 {
    29. text.field = title
    30. fontSize = 10
    31. fontFile = fileadmin/template/fonts/arial.ttf
    32.  
    33. fontColor = #ffffff
    34. offset = 30,16
    35. niceText = 1
    36. transparentBackground = 1
    37.  
    38. }
    39. }
    40.  
    41. IFSUB < temp.ypMenu.1.NO
    42. IFSUB = 1
    43.  
    44. RO < temp.ypMenu.1.NO
    45. RO = 1
    46. RO {
    47. backColor = #000000
    48. 30 < .30
    49. 50 {
    50. fontColor = #608C28
    51. }
    52. }
    53.  
    54. ACT < temp.ypMenu.1.NO
    55. ACT = 1
    56. ACT {
    57. backColor = #000000
    58. 30 < .30
    59. 50 {
    60. fontColor = #FE9900
    61. }
    62. }
    63.  
    64. IFSUBRO < temp.ypMenu.1.NO
    65. IFSUBRO = 1
    66. backColor = #000000
    67. 30 < .30
    68. 50 {
    69. fontColor = #608C28
    70. }
    71. }
    72. }
    73.  
    74. 2 = TMENU
    75. 2 {
    76. IProcFunc = user_menu->secondLevel
    77.  
    78. expAll = 1
    79. NO.linkWrap = <li>|</li>
    80. }
    81.  
    82. 3 = TMENU
    83. 3 {
    84. IProcFunc = user_menu->thirdLevel
    85. expAll = 1
    86. NO.linkWrap = <li>|</li>
    87. }
    88.  
    89.  
    90. }
    91.  
    92.  
    93. temp.user_menu = USER
    94. temp.user_menu.userFunc = user_menu->menuEnd

    mfg,

    RChristian

  • aschne1 aschne1
    T3PO
    0 x
    30 Beiträge
    0 Hilfreiche Beiträge
    24. 07. 2005, 14:23

    Hallo

    Mein ypMenu funktioniert eigentlich ganz gut. Nur wenn ich die Seite XHTML-validiere erhalte ich eine Fehlermeldung von den Hauptmenüpunkten bei denen kein Untermenü hinterlegt ist (z.B. Home)

    [HTML]<div id="menu16Container" class="mmContainer">
    <div id="menu16Content" class="mmContent" style="-moz-opacity:.....">
    <ul class="mmLevel1"></ul> // Hier liegt der Fehler !!!!
    </div>
    </div>
    [/HTML]

    Wie gehe ich am besten vor, damit mir der Validator freundlicher gesinnt ist?

    Besten Dank + Gruss

    Armin

  • TFG TFG
    T3PO
    0 x
    22 Beiträge
    0 Hilfreiche Beiträge
    28. 07. 2005, 01:24

    Hi

    Ich bin wirklich am verzweifeln. :'( Nachdem ich die Menüs via TMENU_LAYERS vor allem mit Opera (ganz links) und bei Firefox (ein Versatz um 1px in y) nicht wirklich zum Laufen gebracht habe, bin ich auf das [b]ypMenu[/b] gestossen.

    Ich habe das versucht zu implementieren mit Hilfe der vorliegenden Anleitung. #paralyzed# Doch leider habe ich es nicht geschafft, dass das "externe" Template (temp.ypMenu) irgendwie erkannt wurde. So habe ich alles in mein Haupttemplate integriert. Nun sehe ich ausser der Hauptnavigation gar nix, denn keine Unternavi geht auf. #angry# Ich muss fairerweise dazu sagen, dass ich die Hauptnavigation nicht mit GMENU, sondern mit TMENU implementiert habe, was hoffentlich keine "Nebenwirkungen" ergibt.

    Wer kann helfen, denn langsam verzweifle ich ganz wegen der Menüs? Da ich aber im Endausbau der Website jede Menge Links haben werde, bin ich auf mehrstufige Pulldown-Menüs angewiesen...

    Hier mal der Code aus meinem Template (unwichtige Sachen habe ich entfernt):

    1. # Template einbinden
    2. seite = PAGE
    3. config.no_cache = 1
    4. seite.includeLibs.ypMenu = uploads/ypMenu/ypMenu.php
    5. seite.headerData.11 = TEXT
    6. seite.headerData.11.value = <script type="text/javascript" src="uploads/ypMenu/ypSlideOutMenus.js" language="JavaScript"></script>
    7.  
    8. seite.typeNum = 0
    9.  
    10. #CSS Files einbinden
    11. seite.includeCSS {
    12. file1 = fileadmin/_styles/common.css
    13. file2 = fileadmin/_styles/guestbook.css
    14. file3 = fileadmin/_styles/ypMenu.css
    15. }
    16.  
    17. # Standardsprache deutsch
    18. config.sys_language_uid = 0
    19. config.language = de
    20. config.locale_all = de_DE
    21. plugin.tx_news._DEFAULT_PI_VARS.lang = 0
    22.  
    23.  
    24. ***Seite aufbauen für Template***
    25.  
    26. seite.10 = TEMPLATE
    27.  
    28. seite.10 {
    29. template = FILE
    30. template.file = fileadmin/whiskymania_vorlage.html
    31.  
    32. workOnSubpart = DOKUMENT
    33.  
    34. # Navigationspfad / Brotkruemelnavigation
    35. subparts.NAVIPFAD = HMENU
    36. subparts.NAVIPFAD {
    37. special = rootline
    38. special.range = | 1 | 2 | 3
    39. 1 = TMENU
    40. 1.NO = 1
    41. 1.NO.linkWrap = | » |
    42. }
    43.  
    44. # Menue erzeugen
    45. # marks.MENUE.special = directory -> funzt nicht, wenn eingeschaltet
    46. marks.MENUE = HMENU
    47. marks.MENUE {
    48. 1 = TMENU
    49. 1 {
    50. IProcFunc = user_menu->firstLevel
    51. expAll = 1
    52. wrap = |
    53. NO = 1
    54. NO {
    55. allWrap = <td nowrap=""> | </td>
    56. ATagBeforeWrap = 1
    57. ATagParams = class="Menu"
    58.  
    59. 10 = text
    60. 10.text.field = title
    61. }
    62. }
    63.  
    64. 2 = TMENU
    65. 2 {
    66. IProcFunc = user_menu->secondLevel
    67. expAll = 1
    68. NO.linkWrap = <li>|</li>
    69. }
    70.  
    71. 3 = TMENU
    72. 3 {
    73. IProcFunc = user_menu->thirdLevel
    74. expAll = 1
    75. NO.linkWrap = <li>|</li>
    76. }
    77.  
    78. 4 = TMENU
    79. 4 {
    80. IProcFunc = user_menu->fourthLevel
    81. expAll = 1
    82. NO.linkWrap = <li>|</li>
    83. }
    84. }
    85.  
    86. marks.user_menu = USER
    87. marks.user_menu.userFunc = user_menu->menuEnd
    88.  
    89. # Inhalt erzeugen
    90.  
    91. marks.INHALT < styles.content.get
    92. # marks.INHALT.wrap = <tr> <td class="txt"> | </td> </tr>
    93.  
    94. # Inhalt rechte Spalte erzeugen
    95. marks.RSPALTE < styles.content.getRight
    96. }

    Ich hoffe, dass jemand Rat weiss!

    Ach ja: zu sehen gibt es das "Resultat" unter: [url]http://web13.hostspirit.ch[/url]

    Vielen Dank!

    Gruss Marc

  • TFG TFG
    T3PO
    0 x
    22 Beiträge
    0 Hilfreiche Beiträge
    05. 08. 2005, 01:54

    Hallo zusammen!

    Habe es nun zum Laufen gebracht, jedoch habe ich nun die 1. Navigationsebene wie im Beispiel beschrieben grafisch umgesetzt.

    Nun habe ich unter Typo3 V3.8 das Problem wie schon zwei Kollegen vor mir: beim IE werden diese Menüpunkte untereinander statt nebeneinander angezeigt. Jemand hat scheinbar die Lösung gefunden, doch keiner hat sie bisher hier im Forum publiziert... :'(

    Wer kann helfen?

    Gruss und Dank!
    Marc

  • RChristian RChristia...
    Sternenflotten-Admiral
    0 x
    242 Beiträge
    0 Hilfreiche Beiträge
    05. 09. 2005, 11:50

    Hallo Leute,

    hat niemand eine ahnung woran das liegt das mein menü im ie nicht angezeigt wird (auch keine fehlermeldung oder sowas in der art) und im Firefox funktioniert der menü einwandfrei.

    mfg,
    RChristian

  • 0 x
    26 Beiträge
    0 Hilfreiche Beiträge
    21. 09. 2005, 15:04

    Hallo Leute,

    danke an alle die durch ihre Beiträge hier im Board Licht in mein unergründliches Dunkel gebracht haben.

    Dennoch ergibt sich noch eine klitze kleine Frage die wohl hier schon erwähnt wurde mir aber nicht geholfen hat:

    das Menü soll bei mir vertikal, also alle menuepunkte untereinander erscheinen. nun wenn ich in der .php Datei die änderung "right" vornehme bleibt mein menue wie in den beispiel horizontal aber die slides kommen nun von der seite...

    bin ein neuling und begreife meinen fehler nicht. please help. #giggle#