您好我想创建一个Magento导航,该导航在类别页面上可见。这有点令人困惑。
1.我有一个父类别Designer3。
2.它有三个子类别CAT1,CAT2和CAT3。
3.现在,CAT1有三个子类:subcat1,sucat2和subcat3。
现在,当我转到CAT1页面时,我希望CAT1 CAT2和CAT3在导航菜单中都可以看到它们的子序列。
取决于所选的当前类别(CAT1,CAT2)或CAT3):
- >如果当前类别为CAT1,则首先显示CAT1及其子类。
- >如果当前的cat是CAT2,那么导航将是具有子类的CAT1,CAT1及其子类,CAT3及其子类。
此外,如果我们在CAT1中选择子类别,Nav的位置应该是CAT1 - 带子系统,带子系统的CAT2和带子系统的CAT3以及现在当前类别的CAT1子系统应该突出显示。
希望这是有道理的。
我尝试过很多东西......但是在编码时我非常挑战......所以
这就是我累了..这给了我当前的类别和它的子猫但是当点击一只子猫时它都会折腾......任何帮助和建议都会被认可......我有点儿当谈到magento时会受到挑战......
<p><a href="<?php $currentCategory = Mage::registry('current_category');
//Display current category url
echo $this->getCurrentCategory()->getUrl();?>" class="ctActiveTitle">
<?php
$currentCategory = Mage::registry('current_category');
//Display current category
echo $this->getCurrentCategory()->getName();?></a>
<!--SHOWING SUB CATEGORIES OF CURRENT CATEGORY-->
<?php
$obj = new Mage_Catalog_Block_Navigation();// create obj
$cat = Mage::getModel('catalog/category')->load($obj->getCurrentCategory()- >getId()); //get current cat
$subcats = $cat->getChildren(); // find them kids
// loop on it
foreach(explode(',',$subcats) as $subCatid){ // split up the mage data for use
$_category = Mage::getModel('catalog/category')->load($subCatid);
$caturl = $_category->getURL();
$catname = $_category->getName();
// echo a link
echo '<a href="'.$caturl.'" class="ctBrownLink"> '.$catname.'</a>';
}?> </p> <p>Tnaks Moody</p>
答案 0 :(得分:1)
您真的不需要为此编写自定义代码。块Mage_Catalog_Block_Navigation
已包含所有这些逻辑,并将解决您的大部分问题。至少你所描述的问题被选为子子类别。有关详细信息,请参阅renderCategoriesMenuHtml()
。
/**
* Render categories menu in HTML
*
* @param int Level number for list item class to start from
* @param string Extra class of outermost list items
* @param string If specified wraps children list in div with this class
* @return string
*/
public function renderCategoriesMenuHtml($level = 0, $outermostItemClass = '', $childrenWrapClass = '')
{
$activeCategories = array();
foreach ($this->getStoreCategories() 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;
}
此外,此方法还会自动处理在非平面和平面类别之间交换时遇到的差异,以及考虑是否应显示类别的事项。
关于导航顺序的一点点。从可用性的角度来看,您可能希望在选择类别后保持订单不变。人们可能期望在特定的地方导航或部分导航。杂耍它们并不是最佳的,你会让人们搜索东西,因为预期的位置会有所不同。