我正在开发一个引导主题,我正在尝试修改分配给下拉菜单/父母的类,但我运气不佳。
我所做的任何更改都不会显示在前端 - 我已刷新缓存、登录/注销,我什至尝试编辑实际的核心文件,但没有任何效果。
navigation.phtml
我已经制作了to的副本,local/Mage/Catalog/Block/Navigation.phtml
但仍然无法正常工作。
有什么我错过的吗?我不太确定该怎么做。
我正在开发一个引导主题,我正在尝试修改分配给下拉菜单/父母的类,但我运气不佳。
我所做的任何更改都不会显示在前端 - 我已刷新缓存、登录/注销,我什至尝试编辑实际的核心文件,但没有任何效果。
navigation.phtml
我已经制作了to的副本,local/Mage/Catalog/Block/Navigation.phtml
但仍然无法正常工作。
有什么我错过的吗?我不太确定该怎么做。
首先,据我所知,没有Navigation.phtml
in code/core/Mage/Catalog/Block/
。而是Navigation.php
(Magento 1.7.x)。
其次,如果您需要覆盖核心模块中的任何内容,最好创建一个单独的模块。因为如果您在 中创建精确副本local
,更新后可能无法正常工作。
如果您尝试创建下拉菜单,则需要编辑文件以在文件夹app/design/frontend/base/default/
中创建副本。app/design/frontend/yourtheme/default/
顶部菜单位于app/design/frontend/base/default/catalog/navigation/top.phtml
. 如需详细查看,请在System>Configuration>Developer>Debug
.
如果您想将 Magento 1.7.x 转换为 Bootstrap 导航,请将 topmenu.phtml 转换为您的主题:
*magento/app/design/frontend/your_package/your_theme/template/page/html/topmenu.phtml*
添加jQuery代码:
<script type="text/javascript">
/*<![CDATA[*/
jQuery(document).ready(function ($) {
$("#nav").magentoBootstrapNavigation();
});
/*]]>*/
</script>
你会得到这样的东西:
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE_AFL.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category design
* @package base_default
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
?>
<?php
/**
* Top menu for store
*
* @see Mage_Page_Block_Html_Topmenu
*/
?>
<?php $_menu = $this->getHtml('level-top') ?>
<?php if($_menu): ?>
<ul id="nav" class="nav navbar-nav">
<?php echo $_menu ?>
</ul>
<script type="text/javascript">
/*<![CDATA[*/
jQuery(document).ready(function ($) {
$("#nav").magentoBootstrapNavigation();
});
/*]]>*/
</script>
<?php endif ?>
然后通过local.xml添加js文件
<!-- jQuery scripts -->
<action method="addItem"><type>skin_js</type><script>js/jquery-scripts/magento-to-bootstrap-navigation.js</script></action>
创建.js文件:
*magento/skin/frontend/your_package/your_theme/js/jquery-scripts/magento-to-bootstrap-navigation.js*
打开 magento-to-bootstrap-navigation.js 结束粘贴:
/*
* Convert default Magento navigation to Bootstrap navigation
*/
(function ( $ ) {
$.fn.magentoBootstrapNavigation = function() {
var menu = function(){
var nav = $(this);
nav.find(".parent")
.addClass("dropdown")
.children("a").addClass("dropdown-toggle").attr("data-toggle", "dropdown").append( ' <b class="caret"></b>')
.next().addClass("dropdown-menu");
};
return this.each(menu);
};
}( jQuery ));
就这样。
PS:您可能会遇到 .btn-group 的自我隐藏问题。我通过编辑核心 Bootstrap dropdown.js 文件来解决这个问题:
*path_to_your_bootstrap/bootstrap/js/dropdown.js*
打开并找到行:
$parent.removeClass('open').trigger('hidden.bs.dropdown')
并替换为:
//$parent.removeClass('open').trigger('hidden.bs.dropdown')
$parent.removeClass('open').trigger('hidden.bs.dropdown').show()
祝你今天过得愉快。
而不是编辑核心文件,我决定通过 jQuery 来代替......
<script type="text/javascript">
jQuery('.parent').addClass('dropdown');
jQuery('a.level-top').addClass('dropdown-toggle');
jQuery('li.parent ul').addClass('dropdown-menu');
jQuery('li.level1 ul').wrap('<li class="dropdown-submenu" />');
jQuery('ul.nav li.dropdown').hover(function() {
jQuery(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn();
}, function() {
jQuery(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut();
});
</script>
我通过 jQuery 添加了所需的类,并使用 .wrap 来包装下拉子菜单
第二部分是从单击时打开子菜单更改为悬停时打开子菜单。
现在一切正常,并且具有在 magento 中构建引导多级下拉菜单所需的类。