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

Ваше имя

Ваш e-mail

Ваше сообщение (обязательно)

captcha

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

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

Этот урок покажет как отображать под-категорий на страницах Вашего 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. Отображение списка под-категорий

  • HughGKnutts

    Alex, thanks for the tutorial on this! Instructions were clear and it works perfectly.

    No votes yet.
    Please wait...
  • Steve Lomax

    In case anyone is having trouble with this code for using the category thumbnails instead of category images, here are the updated codes.

    Navigation.php:

    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(‘thumbnail’)

    ->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;

    }

    And for the subcategory_listing.phtml:

    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 «>

    <a href="getURL() ?>» title=»htmlEscape($_category->getName()) ?>»><img src="load($_category->getId())->getThumbnail() ?>» width=»100″ alt=»htmlEscape($_category->getName()) ?>» />

    <a href="getURL() ?>» title=»htmlEscape($_category->getName()) ?>»>htmlEscape($_category->getName()) ?>

    <?php

    endif;

    if($categorycount == 3){

    $categorycount = 0;

    echo "nn»;

    }

    else{

    $categorycount++;

    }

    endforeach;

    endif;

    ?>

    No votes yet.
    Please wait...
    • brad

      Steve,

      Looks like your code pasted got messed up. I tried to go line by line to see the changes but couldnt get it to work. Any way to get a link to download the file?

      No votes yet.
      Please wait...
  • faisal

    its great tutorial

    No votes yet.
    Please wait...
  • saurabh patel

    Realy very helpful code……….very nice….

    No votes yet.
    Please wait...
  • Remco van Grinsven

    I would suggest placing «Navigation.php» in » appcodelocalMageCatalogBlock » instead! This is safer than editing core files when updating to a newer version of magento. You might need to create this folder but it should have the same effect as editing the core files.

    No votes yet.
    Please wait...
  • Ross Callaghan

    Looks like the first half (the navigation code) is grand but the second one seems to have messed up upon entry. If you replace the image tag in your subcategory-listing.phtml file with this line it should do the trick:

    <img alt="htmlEscape($_category->getName()) ?>» src=»load($_category->getId())->getThumbnail() ?>» width=»100″ />

    No votes yet.
    Please wait...
  • nice1

    super

    No votes yet.
    Please wait...
  • Shiney

    Its just awsssmmm :) :)

    No votes yet.
    Please wait...
  • Ash

    What a fab piece of work… thanks a lot

    No votes yet.
    Please wait...
  • mjwouda

    Excellent! Followed the tutorial step by step: works! Thanks for this excellent post.

    No votes yet.
    Please wait...
  • ernie davis

    thank you — first shot it worked!

    No votes yet.
    Please wait...
  • pooja

    Works fine.. Thanks

    No votes yet.
    Please wait...
  • Jenny Potgieter

    Thank you SO much for this! It was an answer to prayer for me!!!

    No votes yet.
    Please wait...
 
Чат
We help you to choose the right product.
Начать чат