Php 如何显示Magento中特定类别的每行新产品?

Php 如何显示Magento中特定类别的每行新产品?,php,database,magento,e-commerce,categories,Php,Database,Magento,E Commerce,Categories,正如标题所示,我喜欢显示从主页中以行分隔的特定类别中调用的新产品 第1行->类别1的新产品 第2行->类别2的新产品 第3行->类别3的新产品 …等等 在my Magento Admin CMS中,在主页下,它们将作为单独的块调用: <block type="catalog/product_new" name="home.catalog.product.new_category_1" alias="product_new_category_

正如标题所示,我喜欢显示从主页中以行分隔的特定类别中调用的新产品

第1行->类别1的新产品

第2行->类别2的新产品

第3行->类别3的新产品

…等等

在my Magento Admin CMS中,在主页下,它们将作为单独的块调用:

<block type="catalog/product_new" name="home.catalog.product.new_category_1" alias="product_new_category_1" template="catalog/product/new_category_1.phtml">

<block type="catalog/product_new" name="home.catalog.product.new_category_2" alias="product_new_category_2" template="catalog/product/new_category_2.phtml">

<block type="catalog/product_new" name="home.catalog.product.new_category_3" alias="product_new_category_3" template="catalog/product/new_category_3.phtml">

...etc

感谢您的任何想法。

以下收集查询将为您提供您想要的

$todayDate  = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);            
$products = $category->
getProductCollection()->
addCategoryFilter($category)->
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')->            
addAttributeToSelect('*');
产品的“新鲜度”由两个属性决定,即news\u from\u date和news\u to\u date,因此您需要向过滤器添加两个附加属性。上面执行此操作的特定方法调用是

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')->            
它们直接从位于的新产品区获取

/app/code/core/Mage/Catalog/Block/Product/New.php

下面的集合查询应该可以得到您想要的

$todayDate  = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);            
$products = $category->
getProductCollection()->
addCategoryFilter($category)->
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')->            
addAttributeToSelect('*');
产品的“新鲜度”由两个属性决定,即news\u from\u date和news\u to\u date,因此您需要向过滤器添加两个附加属性。上面执行此操作的特定方法调用是

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')->            
它们直接从位于的新产品区获取

/app/code/core/Mage/Catalog/Block/Product/New.php

万分感谢艾伦。您的代码仍然列出了指定类别中的所有产品,但有一个小的更改将其修复。这是给可能感兴趣的人的最终代码

$_products = $category->
getProductCollection()->
addCategoryFilter($category)->
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')->            
addAttributeToSelect('*');

if (($this->getProductCollection()) && $_products->getSize()): ?> 

有没有办法不复制new.php中的代码,并且仍然能够应用过滤器?我本身不是一个编码员,但我假设一个中间文件会处理这个问题。

万分感谢艾伦。您的代码仍然列出了指定类别中的所有产品,但有一个小的更改将其修复。这是给可能感兴趣的人的最终代码

$_products = $category->
getProductCollection()->
addCategoryFilter($category)->
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')->            
addAttributeToSelect('*');

if (($this->getProductCollection()) && $_products->getSize()): ?> 

有没有办法不复制new.php中的代码,并且仍然能够应用过滤器?我本身不是一个编码员,但我假设一个中间文件会处理这个问题。

给投票否决我的人。请问我的问题出了什么问题?谢谢你的反馈。我没有投你反对票,但里面没有问题。你是在问“我该怎么做这个模糊的事情”。“我尝试了X,期望Y,但是Z发生了,什么给了?”这样的问题往往更容易被接受。@Alan我刚刚添加了我一直在使用的代码。希望你能帮忙。谢谢。感谢那个投票否决我的人。请问我的问题出了什么问题?谢谢你的反馈。我没有投你反对票,但里面没有问题。你是在问“我该怎么做这个模糊的事情”。“我尝试了X,期望Y,但是Z发生了,什么给了?”这样的问题往往更容易被接受。@Alan我刚刚添加了我一直在使用的代码。希望你能帮忙。谢谢