Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更改Magento社区中的悬停列表显示/关闭_Javascript_Php_Html_Magento_Navigation - Fatal编程技术网

Javascript 如何更改Magento社区中的悬停列表显示/关闭

Javascript 如何更改Magento社区中的悬停列表显示/关闭,javascript,php,html,magento,navigation,Javascript,Php,Html,Magento,Navigation,我有个小问题 我可能认为代码是一种php语言,请参见以下内容: protected function _renderCategoryMenuItemHtml($category, $level = 0, $isLast = false, $isFirst = false, $isOutermost = false, $outermostItemClass = '', $childrenWrapClass = '', $noEventAttributes = false)

我有个小问题

我可能认为代码是一种php语言,请参见以下内容:

    protected function _renderCategoryMenuItemHtml($category, $level = 0, $isLast = false, $isFirst = false,
    $isOutermost = false, $outermostItemClass = '', $childrenWrapClass = '', $noEventAttributes = false)
{
    if (!$category->getIsActive()) {
        return '';
    }
    $html = array();

    // get all children
    if (Mage::helper('catalog/category_flat')->isEnabled()) {
        $children = (array)$category->getChildrenNodes();
        $childrenCount = count($children);
    } else {
        $children = $category->getChildren();
        $childrenCount = $children->count();
    }
    $hasChildren = ($children && $childrenCount);

    // select active children
    $activeChildren = array();
    foreach ($children as $child) {
        if ($child->getIsActive()) {
            $activeChildren[] = $child;
        }
    }
    $activeChildrenCount = count($activeChildren);
    $hasActiveChildren = ($activeChildrenCount > 0);

    // prepare list item html classes
    $classes = array();
    $classes[] = 'level' . $level;
    $classes[] = 'nav-' . $this->_getItemPosition($level);
    if ($this->isCategoryActive($category)) {
        $classes[] = 'active';
    }
    $linkClass = '';
    if ($isOutermost && $outermostItemClass) {
        $classes[] = $outermostItemClass;
        $linkClass = ' class="'.$outermostItemClass.'"';
    }
    if ($isFirst) {
        $classes[] = 'first';
    }
    if ($isLast) {
        $classes[] = 'last';
    }
    if ($hasActiveChildren) {
        $classes[] = 'parent';
    }

    // prepare list item attributes
    $attributes = array();
    if (count($classes) > 0) {
        $attributes['class'] = implode(' ', $classes);
    }
    if ($hasActiveChildren && !$noEventAttributes) {
         $attributes['onmouseover'] = 'toggleMenu(this,1)';
         $attributes['onmouseout'] = 'toggleMenu(this,0)';
    }

    // assemble list item with attributes
    $htmlLi = '<li';
    foreach ($attributes as $attrName => $attrValue) {
        $htmlLi .= ' ' . $attrName . '="' . str_replace('"', '\"', $attrValue) . '"';
    }
    $htmlLi .= '>';
    $html[] = $htmlLi;

    $html[] = '<a href="'.$this->getCategoryUrl($category).'"'.$linkClass.'>';
    $html[] = '<span>' . $this->escapeHtml($category->getName()) . '</span>';
    $html[] = '</a>';

    // render children
    $htmlChildren = '';
    $j = 0;
    foreach ($activeChildren as $child) {
        $htmlChildren .= $this->_renderCategoryMenuItemHtml(
            $child,
            ($level + 1),
            ($j == $activeChildrenCount - 1),
            ($j == 0),
            false,
            $outermostItemClass,
            $childrenWrapClass,
            $noEventAttributes
        );
        $j++;
    }
    if (!empty($htmlChildren)) {
        if ($childrenWrapClass) {
            $html[] = '<div class="' . $childrenWrapClass . '">';
        }
        $html[] = '<ul class="level' . $level . '">';
        $html[] = $htmlChildren;
        $html[] = '</ul>';
        if ($childrenWrapClass) {
            $html[] = '</div>';
        }
    }

    $html[] = '</li>';

    $html = implode("\n", $html);
    return $html;
}
protected function\u rendercategory menuitemhtml($category,$level=0,$isLast=false,$isFirst=false,
$isOutermost=false,$outermostItemClass='',$childrenWrapClass='',$noEventAttributes=false)
{
如果(!$category->getIsActive()){
返回“”;
}
$html=array();
//让所有的孩子
if(Mage::helper('catalog/category_flat')->isEnabled()){
$children=(数组)$category->getChildrenNodes();
$childrenCount=计数($childrenCount);
}否则{
$children=$category->getChildren();
$childrenCount=$children->count();
}
$hasChildren=($children&&$childrenCount);
//选择活动的子项
$activeChildren=array();
foreach($childrenas$child){
如果($child->getIsActive()){
$activeChildren[]=$child;
}
}
$activeChildrenCount=计数($activeChildrenCount);
$hasActiveChildrenCount=($activeChildrenCount>0);
//准备列表项html类
$classes=array();
$classes[]=“级别”。$level;
$classes[]='nav-'.$this->\u getItemPosition($level);
如果($this->isCategoryActive($category)){
$classes[]=“活动”;
}
$linkClass='';
if($isOutermost&&$outermostItemClass){
$classes[]=$outermostItemClass;
$linkClass='class=“”。$outermostItemClass.'”;
}
如果($isFirst){
$classes[]=“第一”;
}
如果($isLast){
$classes[]=“最后一个”;
}
如果($hasActiveChildren){
$classes[]=“父级”;
}
//准备列表项属性
$attributes=array();
如果(计数($classes)>0){
$attributes['class']=内爆(“”,$classes);
}
if($hasActiveChildren&!$noEventAttributes){
$attributes['onmouseover']='toggleMenu(this,1)';
$attributes['onmouseout']='toggleMenu(this,0)';
}
//使用属性组合列表项
$HTMLI='';
$html[]=$htmlLi;
$html[]='';
//给孩子
$htmlChildren='';
$j=0;
foreach($activechildrenas$child){
$htmlChildren.=$this->\u renderCategory菜单项HTML(
$child,
($level+1),
($j==$activeChildrenCount-1),
($j==0),
错误的
$outermostItemClass,
$childrenWrapClass,
$NOEVENTAT贡品
);
$j++;
}
如果(!empty($htmlChildren)){
if($childrenWrapClass){
$html[]='';
}
$html[]='
    ”; $html[]=$htmlChildren; $html[]='
'; if($childrenWrapClass){ $html[]=''; } } $html[]=''; $html=内爆(“\n”,$html); 返回$html; }
请帮忙


谢谢大家!

您可以用jQuery解决这个问题。 你所要做的就是在菜单中添加一个slideToggle函数

  • 首先,确保在您的站点中包含jQuery
  • 为小js补丁(我通常称之为customjs.js)创建一个js文件,并从站点的页脚中包含
  • 添加以下jQuery

    $(“.block title”)。单击(函数(){ $(“.block content”).slideToggle();//用于上下滑动的滑动切换 return false;//阻止链接工作 })

  • 查看jsfiddle.net/pTg68/17/以获取示例


    Cheerz

    首先找到函数的调用,我会想象它是这样的:

    var menu = "closed";
    
    function toggleMenu(){
    
      if(menu = "closed"){
         openTree();
      }else{
         closeTree();
      } 
    }
    
    function openTree(){  
        //code to open the menu
    };
    
    function closeTree(){  
       //code to close the menu
    };
    
    你所要做的就是从中更改每个类别的链接

    <a href="fastfood.html">Fast Food</a>
    
    
    

    <a href="javascript:void(0);" onclick="toggleMenu();">Fast Food</a>
    
    
    
    是否希望链接与单击+/-符号的操作相同?Samtheman 999-完全正确!简单地说,问题是我找不到为此更改的代码。当使用Google开发者工具并使用它时,我能够更改它(HTML样式)。但是我在上面写的代码中哪里可以找到它呢?所有这些代码都是你自己写的吗?不,这是Magento Webshop的模板-使用Magento社区。你能找到这个函数的javascript吗?否则我帮不了你
    <a href="javascript:void(0);" onclick="toggleMenu();">Fast Food</a>