Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

Javascript Slidedown Menü integrieren

Eingetragen von masterlampe (4)
am 12.07.2010 - 20:10 Uhr in
  • Themes & Theming
  • Drupal 6.x

Hi Drupaler,

ich bin gerade am erstellen einer Drupalseite und muss mich noch am Menü schaffen. Habe schon Nice Menüs und Superfish probiert, aber war beides nicht ganz mein Wunsch jetzt habe ich ein Slidedown Menü in Javascript gefunden und möchte dieses einbauen. Bräuchte da mal kurz Tipps, wie ich das am besten mache.

Das gewünschte Menü ist auf http://www.dhtmlgoodies.com/scripts/slidedown-menu2/slidedown-menu2.html zu sehen und der Quelltext wird auch angezeigt.

Ich möchte damit das Standardmenü überschreiben. Wie ich es jetzt verstanden habe, packe ich die CSS-Befehle in meine system-menues.css und das Javascript??? Wo müsste ich dann den html-Code eingeben? Ist das ganze überhaupt umsetzbar? Vielleicht lieber auf Basis von Superfish oder so?

Danke für eure Hilfe!!!

‹ block.tpl.php wird nicht eingebunden - Wo der Fehler? Theming von Views aus dem Modul "Taxonomy Menu" ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

implementation javaskript menüs

Eingetragen von karl1120 (97)
am 12.07.2010 - 21:32 Uhr

Die implementation ist möglich, wenn auch etwas umständlich für einsteiger.

CSS:
in deinem theme order befinden sich dateien für css, dort fügst du den css code für dein menü ein.
Dieser code muss noch angepasst werden.

Menü:
für das menü verwendest du ein modul das den menü title link als .class benutzt "vereinfacht die implementierung"

javascript: in deinem theme ordner befindet sich eine datei "scripts.js" dort fügst du den javascript code ein.
falls die datei nicht vorhanden ist musst du sie in "dein theme name.info " aktivieren.

implementation:
installiere das modul
menu_css_names

erstelle als nächstes hirachisch dein menü so wie du es gerne hättest

dann passt du dem entsprechend dein css code an

bsp:
"#dhtmlgoodies_slidedown_menu li"
ersetzt du durch
"#deinmenüname li"

hierbei kann dir firebug eine große hilfe sein.
sorry für die kurtze anleitung soll dich aber auch nur auf den richtigen weg bringen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Etwas Hilfe bitte noch!!!

Eingetragen von masterlampe (4)
am 13.07.2010 - 14:43 Uhr

Hi,

also, ich habe zuerst einmal den Javascript teil in die script.js importiert, welche ich auch in der info verlinkt habe. Muss ich in die .js noch einen Header oder sowas reinschreiben oder genügt das so?

P.S. Unten geht's noch weiter mit dem Post!

Zitat:

var expandFirstItemAutomatically = false; // Expand first menu item automatically ?
var initMenuIdToExpand = false; // Id of menu item that should be initially expanded. the id is defined in the

  • tag.
    var expandMenuItemByUrl = true; // Menu will automatically expand by url - i.e. if the href of the menu item is in the current location, it will expand
  • var initialMenuItemAlwaysExpanded = true; // NOT IMPLEMENTED YET

    var dhtmlgoodies_slmenuObj;
    var divToScroll = false;
    var ulToScroll = false;
    var divCounter = 1;
    var otherDivsToScroll = new Array();
    var divToHide = false;
    var parentDivToHide = new Array();
    var ulToHide = false;
    var offsetOpera = 0;
    if(navigator.userAgent.indexOf('Opera')>=0)offsetOpera=1;
    var slideMenuHeightOfCurrentBox = 0;
    var objectsToExpand = new Array();
    var initExpandIndex = 0;
    var alwaysExpanedItems = new Array();

    function popMenusToShow()
    {
    var obj = divToScroll;
    var endArray = new Array();
    while(obj && obj.tagName!='BODY'){
    if(obj.tagName=='DIV' && obj.id.indexOf('slideDiv')>=0){
    var objFound = -1;
    for(var no=0;no=0){
    otherDivsToScroll.splice(objFound,1);
    }
    }
    obj = obj.parentNode;
    }
    }

    function showSubMenu(e,inputObj)
    {

    if(this && this.tagName)inputObj = this.parentNode;
    if(inputObj && inputObj.tagName=='LI'){
    divToScroll = inputObj.getElementsByTagName('DIV')[0];
    for(var no=0;no0){
    if(divToScroll){
    if(otherDivsToScroll.length>0){
    popMenusToShow();
    }
    if(otherDivsToScroll.length>0){
    autoHideMenus();
    hidingInProcess = true;
    }
    }
    }
    if(divToScroll && !hidingInProcess){
    divToScroll.style.display='';
    otherDivsToScroll.length = 0;
    otherDivToScroll = divToScroll.parentNode;
    otherDivsToScroll.push(divToScroll);
    while(otherDivToScroll && otherDivToScroll.tagName!='BODY'){
    if(otherDivToScroll.tagName=='DIV' && otherDivToScroll.id.indexOf('slideDiv')>=0){
    otherDivsToScroll.push(otherDivToScroll);

    }
    otherDivToScroll = otherDivToScroll.parentNode;
    }
    ulToScroll = divToScroll.getElementsByTagName('UL')[0];
    if(divToScroll.style.height.replace('px','')/1<=1)scrollDownSub();
    }

    return false;
    }

    function autoHideMenus()
    {
    if(otherDivsToScroll.length>0){
    divToHide = otherDivsToScroll[otherDivsToScroll.length-1];
    parentDivToHide.length=0;
    var obj = divToHide.parentNode.parentNode.parentNode;
    while(obj && obj.tagName=='DIV'){
    if(obj.id.indexOf('slideDiv')>=0)parentDivToHide.push(obj);
    obj = obj.parentNode.parentNode.parentNode;
    }
    var tmpHeight = (divToHide.style.height.replace('px','')/1 - slideMenuHeightOfCurrentBox);
    if(tmpHeight<0)tmpHeight=0;
    if(slideMenuHeightOfCurrentBox)divToHide.style.height = tmpHeight + 'px';
    ulToHide = divToHide.getElementsByTagName('UL')[0];
    slideMenuHeightOfCurrentBox = ulToHide.offsetHeight;
    scrollUpMenu();
    }else{
    slideMenuHeightOfCurrentBox = 0;
    showSubMenu();
    }
    }

    function scrollUpMenu()
    {

    var height = divToHide.offsetHeight;
    height-=15;
    if(height<0)height=0;
    divToHide.style.height = height + 'px';

    for(var no=0;no0){
    setTimeout('scrollUpMenu()',5);
    }else{
    divToHide.style.display='none';
    otherDivsToScroll.length = otherDivsToScroll.length-1;
    autoHideMenus();
    }
    }

    function scrollDownSub()
    {
    if(divToScroll){
    var height = divToScroll.offsetHeight/1;
    var offsetMove =Math.min(15,(ulToScroll.offsetHeight - height));
    height = height +offsetMove ;
    divToScroll.style.height = height + 'px';

    for(var no=1;no0 && initExpandIndex<(objectsToExpand.length-1)){
    initExpandIndex++;

    showSubMenu(false,objectsToExpand[initExpandIndex]);
    }
    }
    }
    }

    function initSubItems(inputObj,currentDepth)
    {
    divCounter++;
    var div = document.createElement('DIV'); // Creating new div
    div.style.overflow = 'hidden';
    div.style.position = 'relative';
    div.style.display='none';
    div.style.height = '1px';
    div.id = 'slideDiv' + divCounter;
    div.className = 'slideMenuDiv' + currentDepth;
    inputObj.parentNode.appendChild(div); // Appending DIV as child element of

  • that is parent of input

      div.appendChild(inputObj); // Appending
        to the div
        var menuItem = inputObj.getElementsByTagName('LI')[0];
        while(menuItem){
        if(menuItem.tagName=='LI'){
        var aTag = menuItem.getElementsByTagName('A')[0];
        aTag.className='slMenuItem_depth'+currentDepth;
        var subUl = menuItem.getElementsByTagName('UL');
        if(subUl.length>0){
        initSubItems(subUl[0],currentDepth+1);
        }
        aTag.onclick = showSubMenu;
        }
        menuItem = menuItem.nextSibling;
        }
        }
  • function initSlideDownMenu()
    {
    dhtmlgoodies_slmenuObj = document.getElementById('menu');
    dhtmlgoodies_slmenuObj.style.visibility='visible';
    var mainUl = dhtmlgoodies_slmenuObj.getElementsByTagName('UL')[0];
    var mainMenuItem = mainUl.getElementsByTagName('LI')[0];
    mainItemCounter = 1;
    while(mainMenuItem){
    if(mainMenuItem.tagName=='LI'){
    var aTag = mainMenuItem.getElementsByTagName('A')[0];
    aTag.className='slMenuItem_depth1';
    var subUl = mainMenuItem.getElementsByTagName('UL');
    if(subUl.length>0){
    mainMenuItem.id = 'mainMenuItem' + mainItemCounter;
    initSubItems(subUl[0],2);
    aTag.onclick = showSubMenu;
    mainItemCounter++;
    }
    }
    mainMenuItem = mainMenuItem.nextSibling;
    }

    if(location.search.indexOf('mainMenuItemToSlide')>=0){
    var items = location.search.split('&');
    for(var no=0;no=0){
    values = items[no].split('=');
    showSubMenu(false,document.getElementById('mainMenuItem' + values[1]));
    initMenuIdToExpand = false;
    }
    }
    }else if(expandFirstItemAutomatically>0){
    if(document.getElementById('mainMenuItem' + expandFirstItemAutomatically)){
    showSubMenu(false,document.getElementById('mainMenuItem' + expandFirstItemAutomatically));
    initMenuIdToExpand = false;
    }
    }

    if(expandMenuItemByUrl)
    {
    var aTags = dhtmlgoodies_slmenuObj.getElementsByTagName('A');
    for(var no=0;no=0 && hrefToCheckOn.indexOf('#')0){
    objectsToExpand.unshift(obj);
    }
    }
    obj = obj.parentNode;
    }
    showSubMenu(false,objectsToExpand[0]);
    break;
    }
    }
    }

    if(initMenuIdToExpand)
    {
    objectsToExpand = new Array();
    var obj = document.getElementById(initMenuIdToExpand)
    while(obj && obj.id!='menu'){
    if(obj.tagName=='LI'){
    var subUl = obj.getElementsByTagName('UL');
    if(initialMenuItemAlwaysExpanded)alwaysExpanedItems[obj.parentNode] = true;
    if(subUl.length>0){
    objectsToExpand.unshift(obj);
    }
    }
    obj = obj.parentNode;
    }

    showSubMenu(false,objectsToExpand[0]);

    }

    }

    Dann habe ich in meine theme.css den css-Code eingefügt. Mein menu soll einfach menu als css-Name haben. Habe außerdem das menu_name_css Modul installiert.

    Jetzt noch meine Frage? Muss ich nicht irgendwie die css mit dem Javascript verbinden, sonst weiß er doch gar nicht, dass er das verwenden soll? Wo genau müsste diese Anweisung erscheinen? In der page.tpl.php oder so? Das verwirrt mich etwas, da bisher noch nichts zu erkennen ist, dass er etwas ändert.

    Des weiteren habe ich an meinem Menü nichts verändert, da drupal momentan das Standardmenü korrekt anzeigt. Das passt dann so, oder?

    Würde mich sehr freuen, wenn ich dazu nochmal Infos bekommen könnte!!!

    • Anmelden oder Registrieren um Kommentare zu schreiben

    Benutzeranmeldung

    • Registrieren
    • Neues Passwort anfordern

    Aktive Forenthemen

    • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
    • Neuinstallation: vermutlich ein rewrite-Problem
    • Drupal CMS installieren
    • [erledigt]MP3 in Drupal 10 einbinden
    • (gelöst)Drupal 11 installieren
    • Titel ausblenden
    • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
    • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
    • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
    • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
    • Rolle erstellen nicht zu finden
    • für drupal11 ein Slider Modul
    Weiter

    Neue Kommentare

    • Gefunden
      vor 5 Wochen 14 Stunden
    • Vielen Dank für die ausführlichen Hinweise...
      vor 5 Wochen 4 Tagen
    • Mögliche Ursachen und nächste Schritte
      vor 5 Wochen 4 Tagen
    • Was für einen Server benutzt
      vor 8 Wochen 16 Stunden
    • Wenn die Subdomain auf
      vor 8 Wochen 2 Tagen
    • ordnerstruktur
      vor 8 Wochen 3 Tagen
    • Die Subdomain muß auf den
      vor 8 Wochen 5 Tagen
    • Verwende doch das Tag dafür,
      vor 12 Wochen 6 Stunden
    • Guckst du hier: step by step
      vor 11 Wochen 6 Tagen
    • Guckst du hier: step by step
      vor 11 Wochen 6 Tagen

    Statistik

    Beiträge im Forum: 250294
    Registrierte User: 20533

    Neue User:

    • DanielAltek
    • HilipPet
    • Henryskake

    » Alle User anzeigen

    User nach Punkten sortiert:
    wla9466
    stBorchert6003
    quiptime4972
    Tobias Bähr4019
    bv3924
    ronald3857
    md3717
    Thoor3678
    Alexander Langer3416
    Exterior2903
    » User nach Punkten
    Zur Zeit sind 0 User und 29 Gäste online.

    Hauptmenü

    • » Home
    • » Handbuch & FAQ
    • » Forum
    • » Übersetzungsserver
    • » Suche

    Quicklinks I

    • Infos
    • Drupal Showcase
    • Installation
    • Update
    • Forum
    • Team
    • Verhaltensregeln

    Quicklinks II

    • Drupal Jobs
    • FAQ
    • Drupal-Kochbuch
    • Best Practice - Drupal Sites - Guidelines
    • Drupal How To's

    Quicklinks III

    • Tipps & Tricks
    • Drupal Theme System
    • Theme Handbuch
    • Leitfaden zur Entwicklung von Modulen

    RSS & Twitter

    • Drupal Planet deutsch
    • RSS Feed News
    • RSS Feed Planet
    • Twitter Drupalcenter
    Drupalcenter Team | Impressum & Datenschutz | Kontakt
    Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
    Drupal Initiative - Drupal Association