我正在使用magento。这是加载我左侧导航栏的代码。它将主要类别加载到ol中。我还想让它在每个li中加载子类别。我在这里放 LOAD CHILD CATEGORIES 我想知道PHP代码来获取和显示上述父类别的所有子类别。我找到了几个修复但不知道pHp导致了一系列错误。
/**
* Category left navigation
*
* @see Mage_Catalog_Block_Navigation
*/
if (!Mage::registry('current_category')) {
//no current category selected so default to showing the Products category
$cur_category=Mage::getModel('catalog/category')->load(51);
$layer = Mage::getSingleton('catalog/layer');
$layer->setCurrentCategory($cur_category);
}else{
//current category selected so display the child categories for it
$layer = Mage::getSingleton('catalog/layer');
$_category = $layer->getCurrentCategory();
$currentCategoryId= $_category->getId();
if($currentCategoryId == 306){
//best sellers is selected so show the Product category
$cur_category=Mage::getModel('catalog/category')->load(51);
$layer = Mage::getSingleton('catalog/layer');
$layer->setCurrentCategory($cur_category);
}
}
$_categories=$this->getCurrentChildCategories();
$_count = is_array($_categories)?count($_categories):$_categories->count();
if($_count):
?>
<div class="box layered-nav">
<div class="head">
<h3><?php echo $this->__('Browse By') ?> PRODUCT CATEGORY</h3>
</div>
<div class="border-creator">
<div class="narrow-by">
<dl id="narrow-by-list">
<dd>
<ol>
<?php foreach ($_categories as $_category): ?>
<?php if($_category->getIsActive()): ?>
<li>
<a href="<?php echo $this->getCategoryUrl($_category) ?>"<?php if ($this->isCategoryActive($_category)): ?> class="active"<?php endif ?>><?php echo $this->htmlEscape($_category->getName()) ?></a>
**LOAD CHILD CATEGORIES IN HERE**
</li>
<?php endif; ?>
<?php endforeach ?>
</ol>
</dd>
</dl><script type="text/javascript">decorateDataList('narrow-by-list')</script>
</div>
</div>
</div>
<?php
endif;
?>
<!-- [ends] .browse-by // -->
到目前为止,我提出的最好,我知道它不多
<ul class="subnav">
<li><a></a>
</ul>
我非常感谢任何帮助
答案 0 :(得分:0)
检查以下代码
<?php $_helper = Mage::helper('catalog/category');
$_categories = $_helper->getStoreCategories();
$currentCategory = Mage::registry('current_category') ;
if (count($_categories) > 0): ?>
<ul>
<?php foreach($_categories as $_category): ?>
<li>
<a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
<?php echo $_category->getName() ?>
</a>
<?php $_category = Mage::getModel('catalog/category')->load($_category->getId()) ?>
<?php $_subcategories = $_category->getChildrenCategories() ?>
<?php if (count($_subcategories) > 0): ?>
<ul>
<?php foreach($_subcategories as $_subcategory): ?>
<li>
<a href="<?php echo $_helper->getCategoryUrl($_subcategory) ?>">
<?php echo $_subcategory->getName() ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
现在$_subcategories = $_category->getChildrenCategories()
获取所有子类别。
答案 1 :(得分:0)
谢谢Chanz我使用了你的代码片段,最终提出了以下内容。花了一段时间cus我有点慢,但你给了我我需要的东西。很多东西。
/**
* Category left navigation
*
* @see Mage_Catalog_Block_Navigation
*/
if (!Mage::registry('current_category')) {
//no current category selected so default to showing the Products category
$cur_category=Mage::getModel('catalog/category')->load(51);
$layer = Mage::getSingleton('catalog/layer');
$layer->setCurrentCategory($cur_category);
}else{
//current category selected so display the child categories for it
$layer = Mage::getSingleton('catalog/layer');
$_category = $layer->getCurrentCategory();
$currentCategoryId= $_category->getId();
if($currentCategoryId == 306){
//best sellers is selected so show the Product category
$cur_category=Mage::getModel('catalog/category')->load(51);
$layer = Mage::getSingleton('catalog/layer');
$layer->setCurrentCategory($cur_category);
}
}
$_categories=$this->getCurrentChildCategories();
$_count = is_array($_categories)?count($_categories):$_categories->count();
if($_count):
?>
<div class="box layered-nav">
<div class="head">
<h3><?php echo $this->__('') ?> PRODUCT CATEGORIES</h3>
</div>
<div class="border-creator">
<div class="narrow-by">
<dl id="narrow-by-list">
<dd>
<ol>
<?php foreach ($_categories as $_category): ?>
<?php if($_category->getIsActive()): ?>
<li>
<a href="<?php echo $this->getCategoryUrl($_category) ?>"<?php if ($this->isCategoryActive($_category)): ?> class="active"<?php endif ?>><?php echo $this->htmlEscape($_category->getName()) ?></a>
<?php $_subcategories = $_category->getChildrenCategories() ?>
<?php if (count($_subcategories) > 0): ?>
<ul>
<?php foreach($_subcategories as $_subcategory): ?>
<?php if($_category->getIsActive()): ?>
<li>
<a href="<?php echo $this->getCategoryUrl($_subcategory) ?>"<?php if ($this->isCategoryActive($_subcategory)): ?> class="active"<?php endif ?>><?php echo $this->htmlEscape($_subcategory->getName()) ?></a>
</a>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ol>
</dd>
</dl><script type="text/javascript">decorateDataList('narrow-by-list')</script>
</div>
</div>
</div>
<?php
endif;
?>
<!-- [ends] .browse-by // -->