Si este tutorial no es lo que necesita y Usted todavía tiene preguntas o sugerencias – póngase en contacto con nosotros. ¡Por favor, ayúdenos a servirle!

Su Nombre

Su Email

Su Mensaje (obligatorio)

captcha

Plantillas Destacadas

Magento. Lista de sub-categorías en la página de categoría

Este tutorial presentará una de varias formas de mostrar la lista de subcategorías en las páginas de categorías de su tienda Magento.

Para mostrar las miniaturas (thumbnails) de subcategorías y sus nombres en las páginas de categorías:

  1. En su panel de administración de Magento abra CMS -> Static Blocks (CMS -> Bloques estáticos)
  2. Haga clic en “Add New Block” (Agregar nuevo bloque) a la derecha.
  3. Cree un nuevo bloque estático de la siguiente manera:
  4. Block Title: (Título del bloque) Sub Category Listing
    Identifier: (Identificador) subcategory_listing
    Status: (Estado) Enabled (Activado)
    Content: (Contenido)

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

  5. Haga clic en “Save Block” (Guardar bloque) a la derecha.
  6. En el menú superior abra Catalog –> Manage Categories (Catálogo -> Administrar categorías).
  7. Encuentre una categoría que tiene sub-categorías y en “Display Settings Tab” (Mostrar Pestaña de Configuración) muestra la siguiente:
  8. Display mode: (Mostrar) Static Block only (Sólo Bloque estático)
    OnlyCMS Block: Sub Category Listing (Lista de sub-categoriás)
    Is Anchor: No.

  9. Haga clic en “Save category” (Guardar categoría) a la derecha.
  10. En su ordenador cree un nuevo fichero “subcategory_listing.phtml” con el siguiente contenido:
  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. Conéctese al directorio FTP que contiene los ficheros de su Magento por medio de Gestor de archivos y suba el fichero al siguiente directorio:
  13. app/design/frontend/default/MY-TEMPLATE-DIR/template/catalog/navigation/
    (si no se puede encontrar algún directorio de esta lista, hay que crearlo)

  14. Por medio de su FTP abra app\code\core\Mage\Catalog\Block\Navigation.php.
  15. Copie el fichero Navigation.php.
  16. Mediante FTP abra app\code\local\Mage\Catalog\Block\ y suba el fichero copiado Navigation.php a este directorio (si no se puede encontrar algún directorio de esta lista, hay que crearlo).

  17. En el fichero “Navigation.php” búsque:
  18. 
    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;
        } 
    
    
  19. Y reemplace esta parte por:
  20. 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;
        } 
    
    
  21. En front end de su sitio web abra la categoría con las sub-categorías agregadas.
  22. Si no se puede ver los cambios, trate de limpiar su caché de Magento/del navegador. Si sus sub-categorías no muestran imágenes en miniatura, por favor asegúrese de que las imágenes sean en realidad subidas a sus subcategorías.

Por favor, revise el tutorial:

Magento. Lista de sub-categorías en la página de categoría

  • 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...
 
Chat en Vivo
We help you to choose the right product.
Comenzar Chat