在新产品小部件中更改addAttributeToFilter(Magento 1.9.0)

时间:2015-02-23 17:52:07

标签: php magento magento-1.9

我正在尝试编辑此代码

->addAttributeToFilter('news_from_date', array('or'=> array(
            0 => array('date' => true, 'to' => $todayEndOfDayDate),
            1 => array('is' => new Zend_Db_Expr('null')))
        ), 'left')
        ->addAttributeToFilter('news_to_date', array('or'=> array(
            0 => array('date' => true, 'from' => $todayStartOfDayDate),
            1 => array('is' => new Zend_Db_Expr('null')))
        ), 'left')
        ->addAttributeToFilter(
            array(
                array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')),
                array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null'))
                )
          )

替换为

->addAttributeToFilter('featured', array('is' => 1))

in

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

CMS -> PAGE自然而然地我的小部件

{{widget type="catalog/product_widget_new" display_type="new_products" products_count="16" template="catalog/product/widget/new/content/new_grid.phtml"}}

现在我不明白为什么如果我在主页中更改New.php中的任何内容,我会得到相同的结果。此过滤器无法正常工作。哪里错了?

3 个答案:

答案 0 :(得分:0)

可能是过滤器无效,因为您使用的是扁平产品系列,并且您的featured属性未启用“在产品列表中使用”。

请改为尝试:

$collection->addFieldToFilter(array(array('attribute' => 'featured', 'eq' => 1)));

答案 1 :(得分:0)

**

解决!!!解决方案非常简单!

**

  

不要编辑 新产品小部件 或更改magento的文件,但是   最好创建新的cms静态块。如果你这样做,请按照这   想要创造你的特色产品。

第1步

属性中创建新属性 - >管理属性

  • 属性代码:精选
  • 范围:商店视图
  • 用于产品清单:

管理标签/选项

  • 管理员:特色产品
  • 默认商店视图:特色商品

不要忘记管理属性集

第2步

复制list.phtml
  

app / design / frontend / base / default / template / catalog / product / list.phtml

  

应用\设计\前端\默认\ yourtemplate \模板\目录\产品\ list.phtml

  

应用\设计\前端\默认\ yourtemplate \模板\目录\产品\ listFeatured.phtml

打开listFeatured.phtml并找到它:

$_productCollection=$this->getLoadedProductCollection();

更改为:

$_product = Mage::getModel('catalog/product');
$attribute = $_product->getResource()->getAttribute("featured");

// Check the attribute from a select or multiselect
if($attribute->usesSource()):

    $options = $attribute->getSource()->getAllOptions(false);
    $idValue = 0;

    //Save the option's Id  if the label is "Yes"
    foreach ($options as $option):          
        if ($option['label'] == "Yes"):
            $idValue = $option['value'];
        endif;
    endforeach;

endif;

$_productCollection = $_product->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('featured', $idValue) // Filter the collection   
->setPage(1,16); //show max 1 page for 16 rows
$_productCollection->getSelect()->order('rand()');

第3步

创建 CMS静态阻止

  • Block Title:精选
  • 标识符: featuredprod
  • 状态:已启用
  • 内容: {{block type="catalog/product_list" template="catalog/product/listFeatured.phtml"}}

第4步

插入 CMS - >页面您的 CMS静态阻止

第5步

转到管理产品并修改产品,更改特色属性。

第6步

重新索引索引。

答案 2 :(得分:0)

只需替换

->addAttributeToFilter('featured', array('is' => 1))

->addAttributeToFilter('featured', array('eq' => 1))