Pergunta

Estou construindo uma loja de Magento e quero ser capaz de exibir uma lista de categorias e ter cada link categoria para sua própria página.

Eu tenho uma categoria 'Marcas' com um ID de 42 e eu quero exibir uma lista das sub-categorias e garantir que cada um links para a chave URL designado no CMS.

Alguém já teve experiência de fazer isso com Magento?

Foi útil?

Solução

Se você está confortável edição de seu tema, este trecho de código vai trazer-lhe uma lista de todas as sub-categorias da categoria atual (a partir da sessão, então isso deve funcionar em qualquer lugar em seu tema). Eu normalmente usar isso em 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>

Outras dicas

Se você deseja exibir categorias de nível superior e subcategorias U pode fazer como este ..

<?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 exibir categorias de nível superior e categorias atuais subcategorias que você pode fazer como ....

<?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 questão exige uma resposta longa. I irá apontar para os lugares certos.

1) A melhor solução é usar a extensão livre. Eu não tentei, mas ele vai atender a finalidade. Você vai ter que fazer algum CSS para conseguir o olhar direito e sentir.

http://www.magentocommerce.com/extension/1562 / magento-fáceis de catálogo de imagens Demonstração: http://extension01.templates-master.com/gb/electronics.html

2) Eu não confio em módulos como ele pode se tornar difícil de atualizar, se o fornecedor decidiu parar de apoiá-lo. Eu tenho usado as informações a partir do seguinte tópico do fórum para criar uma série de sites vew. Dê uma olhada ... Pode não ser para a frente. Você pode ter que fazer algumas cópias de arquivos principais para o diretório local.

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

Esperamos que este será de ajuda para você:)

Eu fiz este pequeno vídeo sobre como criar categoria personalizada listando blocos com Magento. Estou certo há melhores maneiras de conseguir isso ou até mesmo algo que eu poderia ter feito melhor, mas é apenas o meu método. Eu só criou isso na esperança de que isso ajuda a explicar algumas coisas para algumas pessoas lá fora.

Categoria Magento personalizado Listing Bloco

Obrigado!

depois de olhar para todas as soluções no site magento, eu encontrei solução que do wookiehangover acima funcionou e levou cerca de 8 segundos para implementar.

cria um UL que você pode estilo. obrigado.

Depois de criar bloco estático você pode obter qualquer lista das subcategorias por 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>";
?>

Como sobre listando apenas as categorias pertencentes ao item atual. Nem todas as categorias na página.

Mas em uma árvore como vista.

CATEGORIE - sub cat 1 CATEGORIE 2 - sub cat 1 - sub sub cat 1

BR Cveto

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top