如何改变悬停列表显示/关闭Magento社区


How to change onhover list show/close in Magento Community

我有一个小问题。

左侧导航菜单切换<——网站链接-参见左侧分类导航。

正如你在上面的链接中看到的,这是一个带有切换选项的左侧导航。单击+号时,子菜单展开,+号变为-号,单击-号时,子菜单恢复正常。

左边的标题是一个链接,当点击左边的标题时,它会直接跳转到快餐类别。但是,我希望标题具有与+/-符号相同的选项-并删除链接类。

HTML代码为:

<div class="block block-side-nav-container">    
    <div class="block-title">
    <strong><span><?php echo $this->__('Categories') ?></span></strong>
    </div>
    <div class="block-content">
    <div class="side-nav">
   <ul id="category-treeview" class="treeview-side treeview">
    <?php foreach ($this->getStoreCategories() as $_category): ?>
        <?php echo $this->drawItem($_category) ?>
    <?php endforeach ?>
    </ul>
    </div>
    </div>

我可能认为代码是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;
}

请帮助。

谢谢!

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

    首先要确保在你的网站中包含jQuery
  1. 创建一个js文件的小js修复(我通常叫它customjs.js),包括从你的网站的页脚
  2. 添加以下jQuery

    $(".block-title").click(函数(){$ (" .block-content ") .slideToggle ();//上下滑动返回错误;//阻止链接工作})

查看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>