Оказывать только детей в $ _МЕНУ
-
12-12-2019 - |
Вопрос
I.e.
У меня есть следующая категория: главная категория (!= root)
Main category
|
|- sub category 1
|
|- sub category 2
|
|- sub category 3
.
Моя навигация,
<ul>
<?php echo $_menu ?>
</ul>
.
Теперь рендеры
Main category
.
Как я могу получить его для того, чтобы сделать это просто подпункты, такие как
Subcategory 1
Subcategory 2
Subcategory 3
.
(Причина, по которой я поставил все мои категории в один главный - это уметь ссылку на mysite.com/shop для всех продуктов. Основная категория, следовательно, это / магазин)
Решение
Вы, вероятно, можете сделать это, перезаписывая файл app/core/Mage/Catalog/Block/Navigation.php
<?xml version="1.0"?>
<config>
<modules>
<YourCompany_Catalog>
<version>1.0</version>
</YourCompany_Catalog>
</modules>
<global>
<blocks>
<catalog>
<rewrite>
<navigation>YourCompany_Catalog_Block_Navigation</navigation>
</rewrite>
</catalog>
</blocks>
</global>
</config>
.
class YourCompany_Catalog_Block_Navigation extends Mage_Catalog_Block_Navigation {
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) {
foreach ($category->getChildren() as $child) { // Added this loop to bypass the first top categories
$html .= $this->_renderCategoryMenuItemHtml(
$child,
$level,
($j == $activeCategoriesCount - 1),
($j == 0),
true,
$outermostItemClass,
$childrenWrapClass,
true
);
$j++;
}
}
return $html;
}
}
.
<?xml version="1.0"?>
<config>
<modules>
<YourCompany_Catalog>
<active>true</active>
<codePool>local</codePool>
</YourCompany_Catalog>
</modules>
</config>
.