Magento Forum

   
Menu Slide
 
lucr3zi4
Jr. Member
 
Total Posts:  9
Joined:  2008-10-20
 

Hallo,
ich möchte, dass die Hauptnavigation langsam raus und wieder rein slided habe allerdings noch nicht wirklich entdeckt, wie man das umsetzt.
In der Navigation.php:

$children $category->getChildren();
        
$hasChildren $children && $children->count();
        
$html.= '<li';
        if (
$hasChildren{
             $html
.= ' onmouseover="toggleMenu(this,1)" onmouseout="toggleMenu(this,0)"';
        
}
denke mal das ruft die menu.js auf:
function toggleMenu(elover)
{
    
if (over{
            Element
.addClassName(el'over');
    
}
    
else {
        Element
.removeClassName(el'over');
    
}
}

in der scriptaculous/effects.js steht dann dies hier:

multiple: function(elementeffect{
    
var elements;
    if(((
typeof element == 'object') || 
        (
typeof element == 'function')) && 
       (
element.length))
      
elements element;
    else
      
elements = $(element).childNodes;
      
    var 
options Object.extend({
      speed
0.1,
      
delay0.0
    }
arguments[2] || {});
    var 
masterDelay options.delay;

    
$A(elements).each( function(elementindex{
      
new effect(elementObject.extend(options{ delayindex options.speed masterDelay }));
    
});
  
},
  
PAIRS{
    
'slide':  ['SlideDown','SlideUp'],
    
'blind':  ['BlindDown','BlindUp'],
    
'appear'['Appear','Fade']
  }
,
  
toggle: function(elementeffect{
    element 
= $(element);
    
effect = (effect || 'appear').toLowerCase();
    var 
options Object.extend({
      queue
{ position:'end'scope:(element.id || 'global'), limit1 }
    }
arguments[2] || {});
    
Effect[element.visible() ? 
      
Effect.PAIRS[effect][1] Effect.PAIRS[effect][0]](elementoptions);
  
}
}
;

var 
Effect2 Effect// deprecated

wie verbinde ich das jetzt??? müsste da nicht irgendwo ‘el’ definiert sein?

ich gebe ja offen und ehrlich zu: js ist nicht so mein Ding… doch wenn ich wüsste wie das zusammenhängt könnte ich mir es vlt. noch zusammen suchen.

Wäre dankbar für Eure Hilfe....

Gruss
Lula

 
Magento Community Magento Community
Magento Community
Magento Community
 
symmetrics_si
Member
 
Avatar
Total Posts:  36
Joined:  2009-03-06
 

Nein, mußt nirgendwo “el” definieren, mit

toggleMenu(this,1)

übergibst du den Namen des aktuellen Elements (this) an die Funktion toggleMenu....die den Namen wiederrum als “el” aufnimmt

function toggleMenu(elover)

Also steht jetzt in “el” der Name des Elements von dem aus toggleMenu(this,1) augerufen wurde! Aaaaber ich glaube mit “this” holt js sich nicht den Namen sondern die ID des Elements...wenn es also nicht klappt dann mußte mal gucken ob das Element ne ID hat, in deinem Fall also das <li>...wenn nicht, dann ne ID hinzufügen.

EDIT: Manchmal hab ich Tomaten auf den Augen....du schreibst oben ja das du SO

$children $category->getChildren();
        
$hasChildren $children && $children->count();
        
$html.= '<li';
        if (
$hasChildren{
             $html
.= ' onmouseover="toggleMenu(this,1)" onmouseout="toggleMenu(this,0)"';
        
}

die Funktion einbindest...also hat das <li> weder Name noch ID, also mach mal

$children $category->getChildren();
        
$hasChildren $children && $children->count();
        
$html.= '<li id="blub" ';
        if (
$hasChildren{
             $html
.= ' onmouseover="toggleMenu(this,1)" onmouseout="toggleMenu(this,0)" ';
        
}

jetzt hat dein <li> ne id und es sollte klappen…

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
    Back to top