在类别视图页面上,我得到了所有子类别的ID。 我可以使用类别ID显示该类别的所有产品。我已使用以下链接成功获得所有产品列表。 但我想首先使用子类别的产品。 浏览图片以获得更好的理解。
这里是化妆品类别的视图页面。遮瑕膏和粉底是chils类别。 我想要第一个最新的儿童类产品。
这是视图页面的代码。
<?php
$_helper = $this->helper('catalog/output');
$_category = $this->getCurrentCategory();
$_imgHtml = '';
if ($_imgUrl = $_category->getImageUrl()) {
$_imgHtml = '<p class="category-image"><img src="'.$_imgUrl.'" alt="'.$this->htmlEscape($_category->getName()).'" title="'.$this->htmlEscape($_category->getName()).'" /></p>';
$_imgHtml = $_helper->categoryAttribute($_category, $_imgHtml, 'image');
}
?>
<div class="grid_24">
<?php if($this->IsRssCatalogEnable() && $this->IsTopCategory()): ?>
<a href="<?php echo $this->getRssLink() ?>" class="link-rss"><?php echo $this->__('Subscribe to RSS Feed') ?></a>
<?php endif; ?>
<h1 class="main-title"><?php echo $_helper->categoryAttribute($_category, $_category->getName(), 'name') ?></h1>
</div>
<?php foreach ($this->getCurrentCategory()->getChildrenCategories() as $_subcat){
foreach($_subcat->getChildrenCategories() as $child){
$cat_id=$child->getId();
?>
<div class="grid_12">
<div class="category-wrapper">
<div class="ribbon">
<h2><?php echo Mage::helper('catalog/output')->categoryAttribute($child, $child->getName(), 'name') ?></h2>
</div>
</div>
</div>
<?php
$category = new Mage_Catalog_Model_Category();
$category->load($cat_id);
$collection = $category->getProductCollection();
$collection->addAttributeToSelect('*');
foreach ($collection as $_product) { ?>
<a href="<?php echo $_product->getProductUrl() ?>"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(200); ?>" width="200" height="200" alt="" /></a> <a href="<?php echo $_product->getProductUrl(); ?>"><?php echo $_product->getName(); ?></a>
<?php } ?>
<a href="<?php echo $child->getUrl() ?>" id="<?php echo $cat_id;?>"><?php echo Mage::helper('catalog/output')->categoryAttribute($child, $child->getName(), 'name') ?></a>
<?php }}?>
答案 0 :(得分:0)
您需要更改产品集合声明,以便它能够满足您的需求。通过添加限制,它只会为该类别带出一个产品(因为您正在加载一个产品而不是所有产品,因此也会提高性能)。然后,您可以使用订单声明来提取该类别的最新产品。
$collection = $category->getProductCollection();
$collection->getSelect()->order('catalog_product_entity.entity_id DESC')->limit(1);
基本上使用magento集合,如果您没有通过调用load方法实际加载集合或开始循环它,您可以更改sql以使其为您提供所需的内容。我们在几年前做了类似的事情,但是通过拉出该类别中销量最大的产品。如果您拥有类别或产品的大型数据库,可能希望在块和模板中添加块缓存。
有时候做的便宜事是;
var_dump($collection->getSelect()->__toString()); die();
这将输出将要执行的生成的sql,您可以通过这种方式调试复杂的SQL查询。