magento 1.9 list.phtml类别视图文件:即使子类别存在,查看产品?

时间:2017-11-18 22:21:04

标签: php magento product

目前,如果某个类别中包含产品,则会显示产品列表,这很棒。但是,如果某个类别包含一组产品&其中的子类别,它只显示子类别而不是产品。

如果某个类别中包含产品和子类别,我希望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,那么显示子类别,但它不是那样的。

我错过了什么?

1 个答案:

答案 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以及显示子类别的方式。