Categories

Plantillas Destacadas

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

Norman Fisher febrero 12, 2013
Rating: 3.4/5. From 7 votes.
Please wait...

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

Magento Templates
Esta entrada fue publicada el Tutoriales de Magento y etiquetada categories, display, Magento, on, pages, sub-categories. Agregar enlace permanente a marcadores.

Submit a ticket

Si Usted todavía no puede encontrar un tutorial suficiente para arreglar su problema, por favor use el siguiente enlace para enviar un ticket a nuestro equipo de soporte técnico. Nosotros enviaremos nuestra respuesta dentro de próximas 24 horas: Enviar un ticket