【问题标题】:Magento which file have code of navigation menu bar?Magento 哪个文件有导航菜单栏的代码?
【发布时间】:2013-07-26 11:09:26
【问题描述】:

我想编辑magento导航菜单条码,但我不知道哪个文件有菜单条码请帮助如何编辑该文件并更改请帮助

i want to edit menu magento provide menu like
<ul>
    <li><a href=''>Home</a></li>
    <li><a href=''>Contact Us</a></li>
    <li><a href=''>Abouty Us</a></li>

</ul>

i want to edit it like

<ul>
    <li><img src=''/><a href=''>Home</a></li>
    <li><img src=''/><a href=''>Contact Us</a></li>
    <li><img src=''/><a href=''>Abouty Us</a></li>

</ul>

我想将图像添加到菜单中并创建高级菜单

【问题讨论】:

    标签: php magento


    【解决方案1】:

    您应该重写 Mage_Page_Block_Html_Topmenu 类中的 _getHtml() 方法。

    步骤如下:

    1. 创建您的应用/代码/本地/Mage/Page/Block/Html/Topmenu/Custom.php
    2. 放入class Mage_Page_Block_Html_Topmenu_Custom extends Mage_Page_Block_Html_Topmenu
    3. 从 app/code/code/Mage/Page/Block/Html/Topmenu.php 复制 _getHtml() 方法并根据需要进行自定义
    4. 编辑您的应用程序/设计/前端/your_theme/default/layout/page.xml 并将&lt;block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml"/&gt; 替换为&lt;block type="page/html_topmenu_custom" name="catalog.topnav" template="page/html/topmenu.phtml"/&gt;
    5. 利润!

    【讨论】:

      【解决方案2】:

      你好朋友你也可以在navigation.php文件中看到导航菜单栏

      \app\code\core\Mage\Catalog\Block\navigation.php

      该文件有一个导航菜单条码

      【讨论】:

      • 不应更改核心文件。您将无法转移您的主题。
      • 编辑此文件将使网站不再安全升级
      【解决方案3】:
      app\design\frontend\default\yourtheme\template\page\html\topmenu.phtml
      

      【讨论】:

      • 你指定文件我没有那个文件 app\design\frontend\default\theme394\template\page\html 在那个路径上
      • 感谢您快速重播。我想在菜单中显示图像如何做到这一点请帮助
      • 从 - app\design\frontend\base\default\template\page\html\topmenu.phtml 复制它 - 并放入您的主题
      • 那个文件有那个代码我不能改变它。我将服装图像添加到菜单 getHtml('level-top') ?>
      • 请解释一下,您要如何添加图片。它的
        在菜单中。
      【解决方案4】:

      根据您的 Magento 版本,这篇文章可能已经过时,所以我会更新。看起来 Magento 正是出于这个原因进行了更改,以允许自定义该导航 html。

      如果您查看第 80 行,在 Mage_Page_Block_Html_Topmenu 中

          if ($renderer = $this->getChild('catalog.topnav.renderer')) {
              $renderer->setMenuTree($this->_menu)->setChildrenWrapClass($childrenWrapClass);
              $html = $renderer->toHtml();
          } else {
              $html = $this->_getHtml($this->_menu, $childrenWrapClass);
          }
      

      它检查是否定义了渲染块,如果没有,则使用已弃用的方法来构建导航 html

      /**
           * Recursively generates top menu html from data that is specified in $menuTree
           *
           * @param Varien_Data_Tree_Node $menuTree
           * @param string $childrenWrapClass
           * @return string
           * @deprecated since 1.8.2.0 use child block catalog.topnav.renderer instead
           */
          protected function _getHtml(Varien_Data_Tree_Node $menuTree, $childrenWrapClass)
      

      在你的主题的 local.xml 中尝试这个块语句。

      <default>
          <reference name="catalog.topnav">
              <block type="page/html_topmenu_renderer" name="catalog.topnav.renderer" template="page/html/topmenu/renderer.phtml"/>
          </reference>
      </default>
      

      然后你就可以从rwd主题中拉取模板页面/html/topmenu/render.phtml到你自己的主题中,进行自定义,而无需重写block。

      【讨论】:

        【解决方案5】:

        好的,替换这个

        <li>
        <a href="<?php echo $this->getBaseUrl() . $page['identifier']; ?>"><?php      echo $page['title']; ?></a>
        </li>
        

        作者

         <li><img src=''/>
        <a href="<?php echo $this->getBaseUrl() . $page['identifier']; ?>"><?php      echo $page['title']; ?></a>
        </li>
        

        好的,这里是新代码,用这个替换整个页面代码

        <?php $_menu = $this->getHtml('level-top') ?>
         <?php if($_menu): ?>
        
         <?php $identifier = Mage::getSingleton('cms/page')->getIdentifier() ?>
        
         <?php $collection = Mage::getModel('cms/page')->getCollection()-     >addStoreFilter(Mage::app()->getStore()->getId());?>
         <?php  $collection->getSelect()
        ->where('is_active = 1'); ?>
        <ul class="main-menu cf">
         <?php foreach ($collection as $page): ?>
        <?php $PageData = $page->getData(); ?>
        
         <?php //make the current page active?>
        <?php if($identifier == $PageData['identifier'] && $identifier != 'no-route'){ $c = 'class="active"';}else{ $c = '';}?>
        <?php if($PageData['identifier']!='no-route' && $PageData['identifier']!='enable-cookies' && $PageData['identifier']!='home2') { ?>
         <li><img src=''/>
         <a <?php echo $c;?> href="<?php echo $this->getBaseUrl() . $page['identifier']; ?>"><?php       echo $page['title']; ?></a>
         </li>
         <?php } ?>
         <?php endforeach; ?>
         </ul>
        

        根据您的需要设置样式。通过替换类

        【讨论】:

        • 请告诉我替换文件代码的文件名
        • 在 topmenu.phtml 文件中只有那一行代码 getHtml('level-top') ?>
      • 替换该代码后,输出为空白,请帮助,感谢帮助我亲爱的,非常感谢
      • 猜你喜欢
        • 2013-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-15
        • 1970-01-01
        • 2017-03-30
        相关资源
        最近更新 更多