Categories

Новые шаблоны

Magento. Отображение списка под-категорий

Norman Fisher Февраль 12, 2013
Rating: 3.4/5. From 7 votes.
Please wait...

Этот урок покажет как отображать под-категорий на страницах Вашего Magento магазина.
Чтобы отобразить миниатюры под-категорий и их имена, необходимо сделать следующее:

  1. В панели управления Magento перейдите к меню CMS -> Static Blocks (Статичные Блоки);
  2. Нажмите кнопку “Add New Block” (Добавить Новый Блок) в правом верхнем углу;
  3. Создайте новый статический блок следующим образом:
  4. Block Title (Заголовок блока): Sub Category Listing
    Identifier (Идентификатор): subcategory_listing
    Status (Статус): Enabled
    Content (Содержание):

    {{block type="catalog/navigation" template="catalog/navigation/subcategory_listing.phtml"}} 

  5. Нажмите кнопку “Save Block” (Сохранить Блок) в правом верхнем углу;
  6. Перейдите к меню Catalog (Каталог) –> Manage Categories (Управление Категориями);
  7. Выберите категорию, которая включает в себя под-категории и на вкладке “Display Settings” укажите следующие настройки:
  8. Display mode: Static Block only
    CMS Block: Sub Category Listing
    Is Anchor: No.

  9. Нажмите на кнопку “Save category” (Сохранить категорию) в правом верхнем углу;
  10. На Вашем компьютере создайте новый файл с именем “subcategory_listing.phtml” со следующим содержимым:
  11. <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>
    
  12. Посредством FTP, войдите на Ваш сервер и загрузите ранее созданный файл в директорию:
  13. app/design/frontend/default/MY-TEMPLATE-DIR/template/catalog/navigation/
    (если указанные выше папки отсутствуют на сервере, необходимо создать их вручную)

  14. Используя любой FTP-клиент или файловый менеджер, перейдите к директории app\code\core\Mage\Catalog\Block\.
  15. Загрузите файл Navigation.php на Ваш компьютер.
  16. В файле “Navigation.php” найдите следующую часть кода:
  17. 
    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;
        } 
    
    
  18. Замените её кодом, представленным ниже:
  19. 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\local\Mage\Catalog\Block\ и загрузите файл Navigation.php в эту директорию (если указанные выше папки отсутствуют на сервере, необходимо создать их вручную).

     

  20. На Вашем сайте откройте категорию с добавленными ранее под-категориями. Теперь под-категории будут корректно отображаться в каталоге Вашего сайта.
  21. Если Вы не видите изменений, попробуйте очистить кэш Magento и кэш Вашего браузера. В случае, если Ваши подкатегории не отображают эскизы, убедитесь, что Вы загрузили изображения для под-категорий.

Пожалуйста, ознакомьтесь с детальным, обучающим видео ниже:

Magento. Отображение списка под-категорий

Шаблоны Magento
Эта запись была размещена в Magento туториалы и помечена как categories, display, Magento, on, pages, sub-categories. Добавьте в закладки постоянную ссылку.

Submit a ticket

Если вы не смогли найти подходящее решение проблемы, пожалуйста воспользуйтесь следующей ссылкой, чтобы отправить запрос команде технической поддержки.
Отправить запросВы получите ответ в течение 24 часов