我创建了一个自定义模板(mytheme/template/catalog/navigation/left_parent_category.phtml)来显示当前类别的父类别。
<?php
echo '<div class="box base-mini">';
echo '<ol>';
$currentCat = Mage::registry('current_category');
if ( $currentCat->getParentId() == Mage::app()->getStore()->getRootCategoryId() )
{
// current category is a toplevel category
$loadCategory = $currentCat;
}
else
{
// current category is a sub-(or subsub-, etc...)category of a toplevel category
// load the parent category of the current category
$loadCategory = Mage::getModel('catalog/category')->load($currentCat->getParentId());
}
$subCategories = explode(',', $loadCategory->getChildren());
foreach ( $subCategories as $subCategoryId )
{
$cat = Mage::getModel('catalog/category')->load($subCategoryId);
if($cat->getIsActive())
{
echo '<li><a href="'.$cat->getURL().'">'.$cat->getName().'</a></li>';
}
}
echo '</ol>';
echo '</div>';
?>
我正在用magento管理中的子类别中的一点xml覆盖布局:
<reference name="left">
<block type="catalog/navigation" name="catalog.leftnav" after="currency" template="catalog/navigation/left_parent_category.phtml"/>
</reference>
php和xml可以正确地执行所有操作,但由于某些原因,它会显示两次。我不知道为什么这个模板会被调用两次。任何帮助都将不胜感激。
PS…这是给Magento 1.3的
最佳答案
我猜您的块名(catalog.leftnav)与布局XML中另一个名为catalog.leftnav的块冲突。实际上,catalog.xml中有一个catalog.leftnav块。
尝试更改块名。例如,在magento管理员的子类别中:
从变化
<reference name="left">
<block type="catalog/navigation" name="catalog.leftnav" after="currency" template="catalog/navigation/left_parent_category.phtml"/>
</reference>
到
<reference name="left">
<block type="catalog/navigation" name="catalog.myniceleftnav" after="currency" template="catalog/navigation/left_parent_category.phtml"/>
</reference>