簡體   English   中英

Magento:顯示子類別列表

[英]Magento: Display sub-category list

我正在建立一個Magento商店,希望能夠顯示一個類別列表,並讓每個類別鏈接到自己的頁面。

我有一個ID為42的'品牌'類別,我想顯示子類別列表,並確保每個子類別鏈接到CMS中指定的URL密鑰。

有沒有人有與Magento這樣做的經驗?

如果您對編輯主題感到滿意,此代碼段將為您提供當前類別的所有子類別的列表(來自會話,因此這應該適用於您主題中的任何位置)。 我通常在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>

如果你想顯示頂級類別和子類別你可以做這樣的..

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

對於顯示頂級類別和當前類別子類別,您可以像....

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

這個問題需要很長的答案。 我會指出你到正確的地方。

1)最佳解決方案是使用免費擴展。 我沒有嘗試過,但它符合目的。 你將不得不做一些CSS來實現正確的外觀和感覺。

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

2)我不信任模塊,因為如果供應商決定停止支持它可能會變得難以升級。 我使用了以下論壇帖子中的信息來創建一個vew網站。 看看......可能不會直截了當。 您可能必須將核心文件的一些副本復制到本地目錄。

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

希望這會對你有所幫助:)

創建靜態塊后,您可以通過此腳本獲取子類別的任何列表:

        $_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>";
?>

我制作了一個關於如何使用Magento創建自定義類別列表塊的小視頻。 我相信有更好的方法可以實現這一點,甚至可以做得更好,但這只是我的方法。 我只創造了它,希望它能幫助向某些人解釋一些事情。

Magento自定義類別列表塊

謝謝!

在查看magento網站上的所有解決方案后,我發現上面的wookiehangover解決方案有效,大約需要8秒鍾才能實現。

創建一個可以設計風格的UL。 謝謝。

如何僅列出屬於當前項目的類別。 並非頁面上的所有類別。

但在樹上看起來像。

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

BR Cveto

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM