我在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’)
,但它无效。
答案 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定义特定属性。