Этот урок покажет как отображать под-категорий на страницах Вашего Magento магазина.
Чтобы отобразить миниатюры под-категорий и их имена, необходимо сделать следующее:
- В панели управления Magento перейдите к меню CMS -> Static Blocks (Статичные Блоки);
- Нажмите кнопку “Add New Block” (Добавить Новый Блок) в правом верхнем углу;
- Создайте новый статический блок следующим образом:
- Нажмите кнопку “Save Block” (Сохранить Блок) в правом верхнем углу;
- Перейдите к меню Catalog (Каталог) –> Manage Categories (Управление Категориями);
- Выберите категорию, которая включает в себя под-категории и на вкладке “Display Settings” укажите следующие настройки:
- Нажмите на кнопку “Save category” (Сохранить категорию) в правом верхнем углу;
- На Вашем компьютере создайте новый файл с именем “subcategory_listing.phtml” со следующим содержимым:
- Посредством FTP, войдите на Ваш сервер и загрузите ранее созданный файл в директорию:
- Используя любой FTP-клиент или файловый менеджер, перейдите к директории app\code\core\Mage\Catalog\Block\.
- Загрузите файл Navigation.php на Ваш компьютер.
- В файле “Navigation.php” найдите следующую часть кода:
- Замените её кодом, представленным ниже:
- На Вашем сайте откройте категорию с добавленными ранее под-категориями. Теперь под-категории будут корректно отображаться в каталоге Вашего сайта.
- Если Вы не видите изменений, попробуйте очистить кэш Magento и кэш Вашего браузера. В случае, если Ваши подкатегории не отображают эскизы, убедитесь, что Вы загрузили изображения для под-категорий.
Block Title (Заголовок блока): Sub Category Listing
Identifier (Идентификатор): subcategory_listing
Status (Статус): Enabled
Content (Содержание):
{{block type="catalog/navigation" template="catalog/navigation/subcategory_listing.phtml"}}
Display mode: Static Block only
CMS Block: Sub Category Listing
Is Anchor: No.
<div class="category-products">
<ul class="products-grid">
<?php
$_categories=$this->getCurrentChildCategories();
if($_categories->count()):
$categorycount = 0;
foreach ($_categories as $_category):
if($_category->getIsActive()):
$cur_category=Mage::getModel('catalog/category')->load($_category->getId());
$layer = Mage::getSingleton('catalog/layer');
$layer->setCurrentCategory($cur_category);
$catName = $this->getCurrentCategory()->getName();
if ($categorycount == 0){
$class = "first";
}
elseif ($categorycount == 3){
$class = "last";
}
else{
$class = "";
}
?>
<li class="item <?=$class?>">
<a href="<?php echo $_category->getURL() ?>" title="<?php echo $this->htmlEscape($_category->getName()) ?>"><img src="<?php echo $_category->getImageUrl() ?>" width="100" alt="<?php echo $this->htmlEscape($_category->getName()) ?>" /></a>
<h2><a href="<?php echo $_category->getURL() ?>" title="<?php echo $this->htmlEscape($_category->getName()) ?>"><?php echo $this->htmlEscape($_category->getName()) ?></a></h2>
</li>
<?php
endif;
if($categorycount == 3){
$categorycount = 0;
echo "</ul>\n\n<ul class=\"products-grid\">";
}
else{
$categorycount++;
}
endforeach;
endif;
?>
</ul>
</div>
app/design/frontend/default/MY-TEMPLATE-DIR/template/catalog/navigation/
(если указанные выше папки отсутствуют на сервере, необходимо создать их вручную)
public function getCurrentChildCategories()
{
$layer = Mage::getSingleton('catalog/layer');
$category = $layer->getCurrentCategory();
/* @var $category Mage_Catalog_Model_Category */
$categories = $category->getChildrenCategories();
$productCollection = Mage::getResourceModel('catalog/product_collection');
$layer->prepareProductCollection($productCollection);
$productCollection->addCountToCategories($categories);
return $categories;
}
public function getCurrentChildCategories()
{
$layer = Mage::getSingleton('catalog/layer');
$category = $layer->getCurrentCategory();
/* @var $category Mage_Catalog_Model_Category */
$collection = Mage::getModel('catalog/category')->getCollection();
/* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection */
$collection->addAttributeToSelect('url_key')
->addAttributeToSelect('name')
->addAttributeToSelect('is_anchor')
->addAttributeToSelect('image')
->addAttributeToFilter('is_active', 1)
->addIdFilter($category->getChildren())
->setOrder('position', 'ASC')
->joinUrlRewrite()
->load();
$productCollection = Mage::getResourceModel('catalog/product_collection');
$layer->prepareProductCollection($productCollection);
$productCollection->addCountToCategories($collection);
return $collection;
}
Посредством FTP, перейдите к директории app\code\core\Mage\Catalog\Block\ и загрузите файл Navigation.php в эту директорию (если указанные выше папки отсутствуют на сервере, необходимо создать их вручную).
Пожалуйста, ознакомьтесь с детальным, обучающим видео ниже: