Question

Je construis un magasin Magento et je veux pouvoir afficher une liste de catégories et faire en sorte que chaque catégorie soit liée à sa propre page.

J'ai une catégorie "Marques" avec un identifiant de 42 et je souhaite afficher une liste des sous-catégories et veiller à ce que chacune d'entre elles soit liée à la clé URL désignée dans le CMS.

Quelqu'un at-il déjà fait cela avec Magento?

Était-ce utile?

La solution

Si vous êtes en mesure de modifier votre thème, cet extrait de code vous apportera une liste de toutes les sous-catégories de la catégorie actuelle (à partir de la session, cela devrait donc fonctionner n'importe où dans votre thème). J'utilise généralement ceci dans app / design / frontend / default / nom_thème /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>

Autres conseils

Si vous souhaitez afficher les catégories et les sous-catégories de niveau supérieur, vous pouvez le faire comme ceci.

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

Pour afficher les catégories de niveau supérieur et les sous-catégories de catégories actuelles, vous pouvez procéder comme ....

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

Cette question nécessite une réponse longue. Je vous indiquerai les bons endroits.

1) La meilleure solution consiste à utiliser l'extension gratuite. Je ne l'ai pas essayé, mais cela conviendra. Vous aurez besoin de faire quelques CSS pour obtenir la bonne apparence.

http://www.magentocommerce.com/extension/1562 / magento-easy-catalog-images Démo: http://extension01.templates-master.com/gb/electronics.html

2) Je ne fais pas confiance aux modules car il pourrait devenir difficile de mettre à niveau si le fournisseur décidait de ne plus le prendre en charge. J'ai utilisé les informations du fil de discussion suivant pour créer un vew sites. Jetez un coup d'œil ... Ce n'est peut-être pas simple Vous devrez peut-être créer des copies des fichiers core dans le répertoire local.

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

J'espère que cela vous aidera:)

J'ai réalisé cette petite vidéo sur la façon dont je crée des blocs de liste de catégories personnalisés avec Magento. Je suis sûr qu'il existe de meilleurs moyens de réaliser ceci ou même quelque chose que j'aurais pu mieux faire, mais c'est & # 8217; juste ma méthode. Je ne l'ai créé que dans l'espoir que cela aide à expliquer certaines choses à certaines personnes.

Bloc de liste de catégories personnalisées Magento

Merci!

Après avoir examiné toutes les solutions du site magento, j’ai trouvé que la solution ci-dessus de wookiehangover fonctionnait et prenait environ 8 secondes pour être mise en œuvre.

crée une UL que vous pouvez styler. Merci.

Après avoir créé un bloc statique, vous pouvez obtenir n'importe quelle liste des sous-catégories à l'aide de ce 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>";
?>

Pourquoi ne lister que les catégories appartenant à l’élément en cours? Pas toutes les catégories sur la page.

Mais dans une arborescence semblable à une vue.

CATÉGORIE - sous-chat 1 CATÉGORIE 2 - sous-chat 1 - sous-sous-chat 1

BR Cveto

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top