0

モジュールを調整して、特定のカテゴリ別に注目の製品を提供しようとしています。近いと思いますが、葉巻はまだありません。どうやら、ここで getSingleton("catalog/layer") を使用して現在のカテゴリ ID を取得することはできません。現在、モジュールは注目の製品を吐き出しますが、それらはあなたがいる特定のカテゴリに関連付けられていません.

ここで現在のカテゴリを取得するためのヒントはありますか? 以下の /* THIS IS MY ADDITION */ コメントで、現在のカテゴリで製品をプルするために試したことを確認できます。

class Adodis_Featuredproducts_Block_Product_Featured extends Mage_Catalog_Block_Product_Abstract
{

        protected $_priceBlockDefaultTemplate = 'catalog/product/price_fix.phtml';


        public $totproduct,$opt;
        public function __construct()
        {
            $totproduct=Mage::getStoreConfig("adodis_featuredproducts/adodis_block/adodis_featuredproduct_block_product_number");
            $opt=Mage::getStoreConfig('adodis_featuredproducts/adodis_general/adodis_featuredproducts_display_type');
            parent::__construct();

            /* THIS IS MY ADDITION */ 
        $layer = Mage::getSingleton(‘catalog/layer’);
            var_dump($layer);
            $_category = $layer->getCurrentCategory();
            /* END MY ADDITION */ 

            $currentCategoryId= $_category->getId();
            $storeId    = Mage::app()->getStore()->getId();
            $product    = Mage::getModel('catalog/product');
            /* @var $product Mage_Catalog_Model_Product */
            $todayDate  = $product->getResource()->formatDate(time());
            $products   = $product->setStoreId($storeId)->getCollection()
                ->addAttributeToSelect('status')
                ->addAttributeToFilter('featured_products', array('Yes'=>true))

                /* THIS IS MY ADDITION */ 
                ->addAttributeToFilter('category_id', array('in' => $currentCategoryId))
                /* END MY ADDITION */ 

                ->addAttributeToSelect(array('name', 'price', 'small_image'), 'inner')
                ->addAttributeToSelect(array('special_price', 'special_from_date', 'special_to_date'), 'left');
           /* @var $products Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection */
            Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
            Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
          if($opt=='block'){
          $products->setOrder('hot_deals')->setPageSize($totproduct)->setCurPage(1);
          }
          else{
            $products->setOrder('hot_deals')->setPageSize(4)->setCurPage(1);
          }
            $this->setProductCollection($products);
        }

    }
4

1 に答える 1

0

ここにソリューションを投稿する:

        /* THIS IS MY ADDITION */ 
        $_category = Mage::registry('current_category');
        /* END MY ADDITION */ 

        $currentCategoryId= $_category->getId();
        $storeId    = Mage::app()->getStore()->getId();
        $product    = Mage::getModel('catalog/product');
        /* @var $product Mage_Catalog_Model_Product */
        $todayDate  = $product->getResource()->formatDate(time());
        $products   = $product->setStoreId($storeId)->getCollection()
            ->addAttributeToSelect('status')
            ->addAttributeToFilter('featured_products', array('Yes'=>true))
            /* THIS IS MY ADDITION */ 
            ->addCategoryFilter($_category)
            /* END MY ADDITION */ 
于 2012-05-17T19:15:04.757 に答える