根据catalog ID,得到这个菜单的html代码。

本文介绍了一个自定义Magento中产品分类导航菜单的方法。通过重写renderCategoriesMenuHtml方法,可以实现只显示激活状态的分类,并提供了具体的实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1

PHTML

$this->renderCategoriesMenuHtml_ter(0,'level-top')

2

phtml对应的block文件

继承

Mage_Catalog_Block_Navigation

编写方法:


public function renderCategoriesMenuHtml_ter($level = 0, $outermostItemClass = '', $childrenWrapClass = '')
{
$activeCategories = array();
foreach ($this->getStoreCategories_ter() as $child) {
if ($child->getIsActive()) {
$activeCategories[] = $child;
}
}
$activeCategoriesCount = count($activeCategories);
$hasActiveCategoriesCount = ($activeCategoriesCount > 0);

if (!$hasActiveCategoriesCount) {
return '';
}

$html = '';
$j = 0;
foreach ($activeCategories as $category) {
$html .= $this->_renderCategoryMenuItemHtml(
$category,
$level,
($j == $activeCategoriesCount - 1),
($j == 0),
true,
$outermostItemClass,
$childrenWrapClass,
true
);
$j++;
}

return $html;
}

public function getStoreCategories_ter()
{
$helpers = Mage::helper('catalog/category');
return $helpers->getStoreCategories_ter();
}

3

help类

继承

Mage_Catalog_Helper_Category

public function getStoreCategories_ter($sorted=false, $asCollection=false, $toLoad=true)
{
$parent = 889; //此处为:catelog ID!!!!!
$cacheKey = sprintf('%d-%d-%d-%d', $parent, $sorted, $asCollection, $toLoad);
if (isset($this->_storeCategories[$cacheKey])) {
return $this->_storeCategories[$cacheKey];
}

/**
* Check if parent node of the store still exists
*/
$category = Mage::getModel('catalog/category');
/* @var $category Mage_Catalog_Model_Category */
if (!$category->checkId($parent)) {
if ($asCollection) {
return new Varien_Data_Collection();
}
return array();
}

$recursionLevel = max(0, (int) Mage::app()->getStore()->getConfig('catalog/navigation/max_depth'));
$storeCategories = $category->getCategories($parent, $recursionLevel, $sorted, $asCollection, $toLoad);

$this->_storeCategories[$cacheKey] = $storeCategories;
return $storeCategories;
}

如果想省劲,直接在继承的类里面直接写,反正做成版本的东西又不升级,稳定才是王道!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值