繁体   English   中英

Magento:显示类别中的新产品

[英]Magento: show new products in category

我找不到我的问题的解决方案:我有一个由我创建的具有layout.phtml的类别。 在此类别中,我只想显示此类别的新产品(由“新的自日期”和“新的至日期”字段设置)。 我不明白该怎么做(无论是xml还是php)。 有人可以帮助我吗?

请尝试此操作以按ID类别过滤所有新产品-

public function getProductCollection($catIds) {
$productIds = $this->getProductIdsByCategories($catIds);
$todayDate  = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
    $storeId    = Mage::app()->getStore()->getId();
    $collection = Mage::getResourceModel('catalog/product_collection')
                        ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
                        ->setStoreId($storeId)
                        ->addStoreFilter($storeId)
                        ->addMinimalPrice()
                        ->addTaxPercents()
                        ;
    Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
    Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);

    $collection
        ->addAttributeToFilter('news_from_date', array('date' => true, 'to' => $todayDate))
        ->addAttributeToFilter('news_to_date', array('or'=> array(
            0 => array('date' => true, 'from' => $todayDate),
            1 => array('is' => new Zend_Db_Expr('null')))
        ), 'left')
        // ->addAttributeToSort('news_from_date', 'desc')

        ;

    if(count($productIds)) {
        $collection->addFieldToFilter('entity_id', array('in'=>$productIds));
    }

    return $collection;
}

希望对您有所帮助。

谢谢!

不起作用,但是我已经以这种方式解决(希望它可以帮助某人):

  • 首先,转到CMS-> WIDGETS,然后创建Catalog New Products List的小部件。 在内部,使用以下内容进行新的布局更新:在锚点类别,主要内容,产品网格上显示。

  • 其次,转到template / catalog / product / widget / new / content / new_grid.phtml,然后添加以下内容:

      $currentCategory = Mage::registry('current_category'); $category_model = Mage::getModel('catalog/category'); $all_child_categories = $category_model->getResource()->getAllChildren($currentCategory); 
  • 第三,在foreach($ _ products-> getItems()作为$ _product)之后添加以下代码:

      $visualizzo=""; $diff = array_diff($all_child_categories, $_product->getCategoryIds()); if(count($diff)==count($all_child_categories)){ $visualizzo="display:none;"; } 
  • 最后,在li class =“ item”中有一个样式,将其放入:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM