【问题标题】:display category on left side bar in magento在 magento 的左侧栏中显示类别
【发布时间】:2014-02-05 15:07:28
【问题描述】:

我只想在左侧栏显示类别和子类别,我有一个根据我的需要工作的代码,但是此代码仅显示类别的名称,它没有获取特定类别名称的 url。 代码:-

<?php 
$_categories = Mage::getBlockSingleton('catalog/navigation'); 
foreach ($_categories->getStoreCategories() as $_category) { 
$category = Mage::getModel('catalog/category'); 
$category->load($_category->getId()); 
$subcategories = explode(',', $category->getChildren()); 
?> 

    <?php 
    foreach ($subcategories as $subcategoryId) { 
    $category->load($subcategoryId); 
    echo '<li><a href="' . $category->getURL() . '">' . $category->getName() . '</a></li>'; 
    } 
    ?> 

<?php
}  
?>

它只显示每个子类别的名称,但不能将其与每个子类别的特定 url 正确链接。建议我在哪里做错了。

【问题讨论】:

    标签: magento


    【解决方案1】:

    您需要再次加载子类别,而不是使用类别对象:

    <?php 
    foreach ($subcategories as $subcategoryId) { 
    //$category->load($subcategoryId); instead
    $subcategory = Mage::getModel("catalog/category")->load($subcategoryId);
    echo '<li><a href="' . $subcategory->getURL() . '">' . $subcategory->getName() . '</a></li>'; 
    } 
    ?>
    

    第二种好方法如下:

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

    请注意,您可能需要调整上面的一些代码。

    希望这会有所帮助。

    【讨论】: