本当にデザイン Root -> Apparels -> Shop By * を使用したい場合は、1 回のオーバーライドと変更でこれを行うことができます
config.xml - これは明らかに非常に単純化されたファイルです。ファイルのヘルパー リライトを提供する必要があります。
<?xml version="1.0"?>
<config>
<helpers>
<catalog>
<rewrite>
<category>Namespace_Module_Helper_Catalog_Category</category>
</rewrite>
</catalog>
</helpers>
</config>
Category.php これは、サイトのルート カテゴリの下にある最初の子カテゴリを使用することを前提としています。あなたの場合、それは「アパレル」になります。この変更では、フラットまたは非フラット カテゴリ テーブルの使用が考慮されます。ID を選択するための他のオプションがあります。1 つは、カテゴリ リストをソースとして使用するシステム構成で、ナビゲーションのルート カテゴリを直接選択できるようにします。
このファイルの核心は、親 ID を取得して、ナビゲーションの基にしたい「ルート カテゴリ」にすることです。繰り返しますが、あなたの場合、親 ID は「アパレル」カテゴリの ID に設定されます。
class Namespace_Module_Helper_Catalog_Category extends Mage_Catalog_Helper_Category {
public function getStoreCategories($sorted=false, $asCollection=false, $toLoad=true)
{
$parent = Mage::app()->getStore()->getRootCategoryId();
$cacheKey = sprintf('%d-%d-%d-%d', $parent, $sorted, $asCollection, $toLoad);
if (isset($this->_storeCategories[$cacheKey])) {
return $this->_storeCategories[$cacheKey];
}
/**
* Check if parent node of the store still exists
*/
$category = Mage::getModel('catalog/category');
/* @var $category Mage_Catalog_Model_Category */
if (!$category->checkId($parent)) {
if ($asCollection) {
return new Varien_Data_Collection();
}
return array();
}
/* Change ian on 1/4/13 at 11:16 AM - Description: Here we capture the id of first child for use as the 'root' */
$category->load($parent);
/** @var $collection Mage_Catalog_Model_Resource_Category_Collection */
$collection = $category->getChildrenCategories();
if (is_array($collection)) {
$category = array_shift($collection); //get the first category in the array. Unknown key.
$parent = $category->getId();
} else {
$parent = $collection->getFirstItem()->getId();
}
$recursionLevel = max(0, (int) Mage::app()->getStore()->getConfig('catalog/navigation/max_depth'));
$storeCategories = $category->getCategories($parent, $recursionLevel, $sorted, $asCollection, $toLoad);
$this->_storeCategories[$cacheKey] = $storeCategories;
return $storeCategories;
}
}