$ _menuに子供だけをレンダリングします
-
12-12-2019 - |
質問
すき。
次のカテゴリを持っています:メインカテゴリ(!= 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
.
(1つのメインにカテゴリをすべて入れる理由は、すべての製品のMySite.com/Shopにリンクできることです。そのため、メインカテゴリが/店舗です)
解決
ファイルapp/core/Mage/Catalog/Block/Navigation.php
アプリ/コード/ローカル/ yourcompany / catalog / etc / config.xml:
<?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>
.
アプリ/コード/ローカル/ yourcompany /カタログ/ブロック/ Navigation.php:
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;
}
}
.
アプリ/ etc / modules / yourcompany.xml:
<?xml version="1.0"?>
<config>
<modules>
<YourCompany_Catalog>
<active>true</active>
<codePool>local</codePool>
</YourCompany_Catalog>
</modules>
</config>
.
作成するファイルのグローバル概要: app コード 地元 あなたの会社 カタログ ブロック Navigation.php. 等 config.xml. 等 モジュール yourcompany_catalog.xml
所属していません magento.stackexchange