1

問題の解決策が見つかりません。自分で作成した layout.phtml を含むカテゴリがあります。このカテゴリでは、このカテゴリの新製品 (新しい開始日フィールドと新しい終了日フィールドによって設定されたもの) のみを表示したいと考えています。これを行う方法がわかりません(xmlまたはphpは関係ありません)。誰でも私を助けることができますか?

4

2 に答える 2

1

これを試して、カテゴリ 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;
}

役立つことを願っています。

ありがとう!

于 2012-08-21T09:43:21.977 に答える
0

うまくいきませんが、私はこの方法で解決しました(誰かの役に立てば幸いです):

  • まず、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);
    
  • 3番目に、 foreach ($_products->getItems() as $_product) の後に次を追加します:

        $visualizzo="";
    
            $diff = array_diff($all_child_categories, $_product->getCategoryIds());
            if(count($diff)==count($all_child_categories)){
                $visualizzo="display:none;";
            }
    
  • 最後に、li class="item" にはスタイルがあり、これを入れます:

于 2012-08-21T10:27:05.537 に答える