Magento在类别list.phtml上显示子类别描述

时间:2011-08-26 07:36:39

标签: magento

我在Magento中有一个包含子类别列表的类别页面。该列表有一个图像和名称,但我也想显示这些子类别的描述。我只想添加

<strong><?php echo $this->htmlEscape($_category->getDescription()) ?></strong>

但它不起作用。

编辑:我以传统的方式获得子类别:

<?php if (!$_categoryCollection->count()): ?>
<p class="note-msg"><?php echo $this->__('There are no subcategories matching the selection.') ?></p>
<?php else: ?>
<div class="category-products">
    <?php $_collectionSize = $_categoryCollection->count() ?>
    <?php $_columnCount = $this->getColumnCount(); ?>
    <?php $i=0; foreach ($_categoryCollection as $_category): ?>
        <?php if ($i++%$_columnCount==0): ?>
        <ul class="products-grid">
        <?php endif ?>
            <li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif; ?>">
                <a href="<?php echo $_category->getUrl() ?>" class="product-image"><img class="photo" src="<?php echo $this->getCategoryImage($_category, 214, 184); ?>" width="214" height="184" alt="<?php echo $_category->getName() ?>" />
                <strong><?php echo $this->htmlEscape($_category->getName()) ?></strong>
                <strong><?php echo $_category->getDescription() ?></strong>
                </a>
            </li>
        <?php if ($i%$_columnCount==0 || $i==$_collectionSize): ?>
        </ul>
        <?php endif ?>
    <?php endforeach ?>
</div>

我尝试通过添加getChildrenCategories($category)来更新category.php文件中的公共功能->addAttributeToSelect(’description’),但它无效。

2 个答案:

答案 0 :(得分:3)

我无法确定你做错了究竟是什么,但也许我仍然可以提供帮助。我已经在list.phtml中成功显示了子类别描述,您可以根据自己的需要调整对我有用的内容。以下是适用于我的代码的精简版本:

<?php $children = explode( ",", $this->getCurrentCategory()->getChildren() ); ?>
<div class="category-products">
    <ul class="products-grid">
        <?php foreach( $children as $child ): ?>
            <?php $_child = Mage::getModel( 'catalog/category' )->load( $child ); ?>
            <li class="item"><?php echo $_child->getDescription(); ?></li>
        <?php endforeach; ?>
    </ul>
</div>

您正在执行的操作与上面的示例之间的最大区别在于,目录模型对象上的getChildren()方法返回类别ID的数组,然后我使用类别ID来加载相应的子类别模型实例。我的记忆在这里可能有误,但我似乎记得从Magento集合返回的项目不包含按id加载时获得的完整数据。

我不确定这是否会对性能产生重大影响(我认为加载一个集合比加载单个模型更快)但它有效,所以我不抱怨......

希望这有帮助。

干杯, 扎克

答案 1 :(得分:0)

我在我正在处理的网站上有相同的想法,我在网格视图中显示子类别。虽然我曾经使用通过id单独加载类别/产品信息的方法,但我有点爱上了使用“Mage :: getModel('') - &gt; getCollection()”方法。

这是我在子类别中使用的内容,我对此非常满意,因为它一次抓取所有信息:

<?php
    if(Mage::registry( 'current_category' )->getId()) {

        $_currentCategoryId = Mage::registry( 'current_category' )->getId();

    } else {    //Get Root Category Id if not in a category

        $_currentCategoryId = Mage::app()->getStore()->getRootCategoryId();
    }

    $_subCategories = Mage::getModel( 'catalog/category' )->getCollection()
                        ->addAttributeToSelect('*')
                        ->addFieldToFilter('parent_id',array('eq' => $_currentCategoryId))
                        ->addFieldToFilter('include_in_menu',array('eq' => '1'))
                        ->addFieldToFilter('is_active', array('eq' => '1'))
                        ->addAttributeToSort('position', 'asc');
?>
<?php if(count($_subCategories) > 0): ?>

<!--This is where the sub-category layout would go.-->

<?php else: ?>

<!--Do something else if there are no sub-categories.-->

<?php endif; ?>

如果您选择让模板显示在任何其他页面上,这将获取当前类别的所有可见子类别,或者获取商店的基本类别(来自根类别ID)。您可以进一步使用addAttributeToSelect定义特定属性。