目前,如果某个类别中包含产品,则会显示产品列表,这很棒。但是,如果某个类别包含一组产品&其中的子类别,它只显示子类别而不是产品。
如果某个类别中包含产品和子类别,我希望magento将产品列入用户而不是主要查看空间中的子类别,因为它已在侧栏上显示子类别列表。
这是我目前的list.phtml:https://bpaste.net/show/66110a7264bc
我需要对list.phtml做些什么才能让它优先显示产品?假设我有一个包含5个产品和5个子类别的类别。子类别已经显示在侧面,所以我希望它显示该类别中的产品列表。
我正在考虑第一行,
<?php if (count($subCatIds) > 1) { ?>
如果产品是&lt; 1,显示子类别列表。所以我说了
<?php if (count($productCollection) < 1) { ?>
我的思维过程是,如果产品的数量是0,那么显示子类别,但它不是那样的。
我错过了什么?
答案 0 :(得分:0)
我会通过这种方式解决问题(如果您确切知道在哪里只显示子类别,产品或两者):
1. Magento管理面板中的类别编辑页面包含选项卡&#39;显示设置&#39;和字段&#39;显示模式&#39;和&#39; CMS Block&#39;。 如果您选择仅限产品&#39;模式,唯一的产品将显示在类别页面上。 如果您选择“仅限静态阻止”模式,则只能选择“CMS阻止”模式。字段静态块将显示在类别页面上。 如果您选择&#39;静态块和产品&#39; Magento将展示:静态块将是第一个,产品列表 - 第二个。
您可以在catalog / category / view.phtml中找到逻辑
<?php if($this->isContentMode()): ?>
<?php echo $this->getCmsBlockHtml() ?>
<?php elseif($this->isMixedMode()): ?>
<?php echo $this->getCmsBlockHtml() ?>
<?php echo $this->getProductListHtml() ?>
<?php else: ?>
<?php echo $this->getProductListHtml() ?>
<?php endif; ?>
2.您可以使用当前类别的子类别创建CMS块,将其设置为“CMS块”&#39;字段并选择显示模式&#39;你需要当前的类别。
或者
1.您可以尝试将条件添加到catalog / category / view.phtml中的逻辑 - 如果当前类别包含产品:
$products = Mage::getModel('catalog/product')
->getCollection()
->addCategoryFilter($category)
或者
1.将elseif添加到list.phtml的条件:
<?php if ($_categoryCollection) : ?>
...
<?php elseif (!$_productCollection->count()): ?>
...
<?php else: ?>
...
<?php endif; ?>
2. $_categoryCollection
是:
$currentCategory = Mage::registry('current_category');
$collection = Mage::getResourceModel('catalog/category_collection')
->setStore(Mage::app()->getStore())
->addAttributeToSelect('name')
->addAttributeToSort('name','ASC')
->addAttributeToSelect('url_key')
->addAttributeToSelect('image')
->addFieldToFilter('parent_id', $currentCategory->getEntityId())
->addFieldToFilter('is_active', 1)
->load();
如果解决方案不合适,请显示list.phtml的代码(您的链接返回404),catalog / category / view.phtml以及显示子类别的方式。