我有 vertnav/left.phtml 文件代码,
<div class="vertnav-container">
<div class="">
<h4 class="no-display"><?php echo $this->__('Category Navigation:') ?></h4>
<?php $store_categories = $this->toLinearArray($this->getStoreCategories()) ?>
<?php if ($count = count($store_categories)): ?>
<ul id="vertnav">
<?php endif; ?>
<?php foreach ($store_categories as $i => $_category): ?><?php $class = array() ?>
<?php if ($count == 1): ?>
<?php $class[] = 'only' ?>
<?php elseif (! $i): ?>
<?php $class[] = 'first' ?>
<?php elseif ($i == $count-1): ?>
<?php $class[] = 'last' ?>
<?php if (isset($store_categories[$i+1]) && $this->isCategoryActive($store_categories[$i+1])) $class[] = 'prev'; ?>
<?php if (isset($store_categories[$i-1]) && $this->isCategoryActive($store_categories[$i-1])) $class[] = 'next'; ?>
<?php echo $this->drawOpenCategoryItem($_category, 0, $class) ?>
<?php endforeach ?>
<?php if ($count): ?>
</ul>
<?php endif; ?>
</div>
</div>
并根据我的要求将目录>类别垂直导航>系统>配置设置为 2,但现在将鼠标悬停在该显示的类别上时应显示子类别
那么我该如何对此进行自定义并为此添加悬停效果代码呢?
请帮助我
如果您仔细查看Mage_Catalog_Block_Navigation
的drawOpenCategoryItem
,您可能会注意到该方法会检查给定类别是否是当前类别路径的一部分。所以只有当这个检查返回true
时,才会呈现这个类别的子类别。对于其他类别,脚本不会进入代码的该部分。
如果我正确理解您的问题,这听起来就是这种情况。
if (in_array($category->getId(), $this->getCurrentCategoryPath())){
$children = $category->getChildren();
$hasChildren = $children && $children->count();
if ($hasChildren) {
$htmlChildren = '';
foreach ($children as $child) {
$htmlChildren.= $this->drawOpenCategoryItem($child);
}
if (!empty($htmlChildren)) {
$html.= '<ul>'."n"
.$htmlChildren
.'</ul>';
}
}
}
此信息的附加内容。在整个 PHP 代码库中从未实际调用过drawOpenCategoryItem()
。
因此,要获得这些翻转效果,您需要有生成完整树结构的代码,或者至少是其中足够大的一部分。关于System > Configuration > Catalog > Category Vertical Navigation
.我猜你自己定制了?
给你一些指示。您可能需要查看以下方法。这些用于呈现顶部菜单,并且实际上正在执行您计划实现的事情。
Mage_Catalog_Block_Navigation::renderCategoriesMenuHtml()
Mage_Catalog_Block_Navigation::_renderCategoryMenuItemHtml()
希望这可以帮助您进行工作。