Pregunta

Estoy construyendo una tienda Magento y quiero poder mostrar una lista de categorías y que cada categoría enlace a su propia página.

Tengo una categoría de 'Marcas' con un ID de 42 y quiero mostrar una lista de las subcategorías y asegurarme de que cada una se vincule a la clave de URL designada en el CMS.

¿Alguien ha tenido experiencia haciendo esto con Magento?

¿Fue útil?

Solución

Si se siente cómodo editando su tema, este fragmento de código le traerá una lista de todas las subcategorías de la categoría actual (de la sesión, por lo que debería funcionar en cualquier parte de su tema). Normalmente uso esto en app / design / frontend / default / theme_name /template/catalog/category/view.phtml

<?php
$_category  = $this->getCurrentCategory(); 
$collection = Mage::getModel('catalog/category')->getCategories($_category->entity_id);
$helper     = Mage::helper('catalog/category');
?>

<ul>
    <?php foreach ($collection as $cat):?>
            <?php if($_category->getIsActive()):?>
                <?php 
                     $cur_category = Mage::getModel('catalog/category')->load($cat->getId());
                     $_img = $cur_category->getImageUrl();  
                ?>
                <li>
                    <a href="<?php echo $helper->getCategoryUrl($cat);?>">
                         <img src="<?php echo $_img?>" title="<?php echo $cat->getName();?>"/>
                         <cite><?php echo $cat->getName();?></cite>
                    </a>
                </li>
            <?php endif?>
    <?php endforeach;?>
</ul>

Otros consejos

Si desea mostrar categorías y subcategorías de nivel superior, U puede hacer así ...

<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php $currentCategory = Mage::registry('current_category') ?>
<?php if (count($_categories) > 0): ?>
<ul>
    <?php foreach($_categories as $_category): ?>
        <li>
            <a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
                <?php echo $_category->getName() ?>
            </a>
            <?php $_category = Mage::getModel('catalog/category')->load($_category->getId()) ?>
            <?php $_subcategories = $_category->getChildrenCategories() ?>
            <?php if (count($_subcategories) > 0): ?>
                <ul>
                    <?php foreach($_subcategories as $_subcategory): ?>
                        <li>
                            <a href="<?php echo $_helper->getCategoryUrl($_subcategory) ?>">
                                <?php echo $_subcategory->getName() ?>
                            </a>
                        </li>
                    <?php endforeach; ?>
                </ul>
            <?php endif; ?>
        </li>
    <?php endforeach; ?>
</ul>
<?php endif; ?>

Para visualizar las categorías de nivel superior y las subcategorías de categorías actuales, puede hacer me gusta ...

<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php $currentCategory = Mage::registry('current_category') ?>
<?php if (count($_categories) > 0): ?>
<ul>
    <?php foreach($_categories as $_category): ?>
        <li>
            <a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
                <?php echo $_category->getName() ?>
            </a>
            <?php if ($currentCategory && $currentCategory->getId() == $_category->getId()): ?>
                <?php $_category = Mage::getModel('catalog/category')->load($_category->getId()) ?>
                <?php $_subcategories = $_category->getChildrenCategories() ?>
                <?php if (count($_subcategories) > 0): ?>
                    <ul>
                        <?php foreach($_subcategories as $_subcategory): ?>
                            <li>
                                <a href="<?php echo $_helper->getCategoryUrl($_subcategory) ?>">
                                    <?php echo $_subcategory->getName() ?>
                                </a>
                            </li>
                        <?php endforeach; ?>
                    </ul>
                <?php endif; ?>
            <?php endif; ?>
        </li>
    <?php endforeach; ?>
</ul>
<?php endif; ?>

Esta pregunta requiere una respuesta larga. Te señalaré los lugares correctos.

1) La mejor solución es usar la extensión gratuita. No lo he probado, pero se adaptará al propósito. Tendrá que hacer un poco de CSS para lograr la apariencia correcta.

http://www.magentocommerce.com/extension/1562 / magento-easy-catalog-images Demostración: http://extension01.templates-master.com/gb/electronics.html

2) No confío en los módulos, ya que podría ser difícil actualizar si el proveedor decidiera dejar de admitirlo. He usado la información del siguiente hilo del foro para crear sitios web. Echa un vistazo ... Puede que no sea sencillo. Puede que tenga que hacer algunas copias de los archivos principales en el directorio local.

http://www.magentocommerce.com/boards/viewthread/3770/ P30 /

Espero que esto sea de ayuda para usted :)

Hice este pequeño video sobre cómo creo bloques de listado de categorías personalizados con Magento. Estoy seguro de que hay mejores formas de lograr esto o incluso algo que podría haber hecho mejor, pero & # 8217; es solo mi método. Solo lo creé con la esperanza de que ayude a explicar algunas cosas a algunas personas por ahí.

Magento Custom Category Listing Block

¡Gracias!

después de mirar todas las soluciones en el sitio de magento, descubrí que la solución anterior de wookiehangover funcionó y tardó aproximadamente 8 segundos en implementarse.

crea una UL que puedes diseñar. Gracias.

Después de crear un bloque estático, puede obtener cualquier lista de subcategorías mediante este script:     

        $_helper = Mage::helper('catalog/category');
        $_category = Mage::getModel('catalog/category')->load(5);
        $_subcategories = $_category->getChildrenCategories();

        if (count($_subcategories) <= 0) { return; }

        $count = 0;

        foreach($_subcategories as $_category) {     
                                                      $category = Mage::getModel('catalog/category')->load($_category->getId());

                                                      $ret->{"object_".$count} ->url  = $_helper->getCategoryUrl($_category);
                                                      $ret->{"object_".$count} ->name = $_category->getName();
                                                      $ret->{"object_".$count} ->id =  $_category->getId(); 
                                                      $ret->{"object_".$count} ->image =   $category->getImageUrl();
                                                      $count++;
                                                   } 

        return $ret;                                          

        } 


$list = list_subcategories(5);

echo "<pre>"; print_r($list); echo "</pre>";
?>

¿Qué tal enumerar solo las categorías que pertenecen al elemento actual? No todas las categorías de la página.

Pero en un árbol como vista.

CATEGORÍA - sub gato 1 CATEGORIE 2 - sub cat 1 - sub sub cat 1

BR Cveto

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top