自定义添加的顶级菜单项的活动状态[Magento topmenu]

时间:2015-05-08 05:04:25

标签: jquery css magento

在类别菜单项后添加“HOME”菜单项和其他:在文件project\app\design\frontend\rwd\default\template\page\html\topmenu.phtml中添加两个块home-linkpost-menu-links

<nav id="nav">
        <ol class="nav-primary">
            <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('home-link')->toHtml(); ?>
            <?php echo $_menu ?>
            <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('post-menu-links')->toHtml(); ?>
        </ol>
</nav>

这样可以相应地成功添加菜单项现在如何保持其活动状态,例如在通过这些块添加的活动菜单项上添加“活动”类?

我尝试了什么

我尝试在jquery cookies中点击设置菜单(li)索引使用jquery cookies。但它失败了

  • 点击并停止加载

  • 或稍后在网站上发布(以前的Cookie是活动的,在错误的菜单项上有效。)

2 个答案:

答案 0 :(得分:1)

在模板文件中:

  

项目\程序\设计\前台\ RWD \ DEFAULT \模板\页面\ HTML \ topmenu.phtml

如果链接指向CMS页面,您应该找到当前页面标识符。

path

您也可以使用网页ID执行此操作,但请记住,您需要设置&lt; li&gt;来自CMS区块的ID

如果您使用不同的链接,例如来自自定义模块的链接,您需要查找当前模块,控制器和操作,并检查它们是否与任何链接匹配,然后再次使用jQuery设置活动类。 获取当前模块,控制器和操作:

<li id="the-cms-link">
    <a href="/the-cms-link">The CMS Link</a>
</li>

//Then in the PHP below the menu:
<script>
    var currentPageId = '';

    <?php if (Mage::getSingleton('cms/page')): ?>
        currentPageId = '<?php echo Mage::getSingleton('cms/page')->getIdentifier(); ?>';
    <?php endif; ?>

    if (jQuery('#'+currentPageId).is('li')) {
        jQuery('#'+currentPageId).addClass('active');
    }
</script>

答案 1 :(得分:0)

我们可以将CMS页菜单项添加到活动班级。

在此Topmenu中,我添加了CMS链接块,并与“静态块”一起显示。

我必须创建jQuery,以便在url中添加活动分类

<?php if ($block->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('block-name')->toHtml()) { ?>
    <div class="top-menu-nav">
        <ul>
            <?php echo $block->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('block-name')->toHtml(); ?>
        </ul>
    </div>
<?php } ?>

<!-- Add custom block Active urls -->

<script type="text/javascript">
require(['jquery', 'jquery/ui'], function($){
  $(document).ready( function() {
    var url = window.location.href; //sets the variable "url" to the pathname of the current window
    var lastChar = url.substr(url.length - 1); 
    if(lastChar == "/") {url = url.substring(0, url.length-1);}
    //console.log(url);
    $('.top-menu-nav a.active').removeClass('active');
    $('.top-menu-nav a').each(function () { 
        url2 = $(this).attr('href');
        if(url2.substr(url2.length - 1) == "/"){ url2 = url2.substring(0, url2.length-1);  } 
        //console.log(url2);
        if(url2 == url){
            $(this).addClass('active');
        }
    });
  });
});
</script>