Magento:在类别中显示新产品

Magento:在类别中显示新产品,magento,categories,product,Magento,Categories,Product,我找不到解决问题的方法: 我有一个由我创建的带有layout.phtml的类别。 在这个类别中,我只想显示这个类别的新产品(由new from date和new to date字段设置)。 我不明白怎么做(不管是xml还是php)。 有人能帮我吗?请尝试此操作,以按类别ID筛选所有新产品- public function getProductCollection($catIds) { $productIds = $this->getProductIdsByCategories($catId

我找不到解决问题的方法: 我有一个由我创建的带有layout.phtml的类别。 在这个类别中,我只想显示这个类别的新产品(由new from date和new to date字段设置)。 我不明白怎么做(不管是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;
}
希望这会有帮助


谢谢

请尝试此操作以按类别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);
    
        $visualizzo="";
    
            $diff = array_diff($all_child_categories, $_product->getCategoryIds());
            if(count($diff)==count($all_child_categories)){
                $visualizzo="display:none;";
            }
    
  • 第三,在foreach($\u products->getItems()作为$\u product)之后添加以下内容:

            $currentCategory = Mage::registry('current_category');
            $category_model = Mage::getModel('catalog/category');
            $all_child_categories = $category_model->getResource()->getAllChildren($currentCategory);
    
        $visualizzo="";
    
            $diff = array_diff($all_child_categories, $_product->getCategoryIds());
            if(count($diff)==count($all_child_categories)){
                $visualizzo="display:none;";
            }
    
  • 最后,在li class=“item”中有一个样式,将其放入:


不起作用,但我已经解决了这个问题(希望它能帮助别人):

  • 首先,转到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);
    
        $visualizzo="";
    
            $diff = array_diff($all_child_categories, $_product->getCategoryIds());
            if(count($diff)==count($all_child_categories)){
                $visualizzo="display:none;";
            }
    
  • 第三,在foreach($\u products->getItems()作为$\u product)之后添加以下内容:

            $currentCategory = Mage::registry('current_category');
            $category_model = Mage::getModel('catalog/category');
            $all_child_categories = $category_model->getResource()->getAllChildren($currentCategory);
    
        $visualizzo="";
    
            $diff = array_diff($all_child_categories, $_product->getCategoryIds());
            if(count($diff)==count($all_child_categories)){
                $visualizzo="display:none;";
            }
    
  • 最后,在li class=“item”中有一个样式,将其放入: