Magento按类别介绍产品

Magento按类别介绍产品,magento,Magento,我正在尝试调整一个模块,以提供特定类别的特色产品。我想差不多了,但还没有雪茄。显然,我不能在这里使用getSingleton(“目录/层”)来获取当前类别ID。目前,模块会输出特色产品,但它们与您所在的特定类别没有关联 这里有获取当前类别的提示吗?您将看到我在下面的/*中尝试的内容,这是我添加的*/注释,用于按当前类别提取产品 class Adodis_Featuredproducts_Block_Product_Featured extends Mage_Catalog_Block_Produ

我正在尝试调整一个模块,以提供特定类别的特色产品。我想差不多了,但还没有雪茄。显然,我不能在这里使用getSingleton(“目录/层”)来获取当前类别ID。目前,模块会输出特色产品,但它们与您所在的特定类别没有关联

这里有获取当前类别的提示吗?您将看到我在下面的/*中尝试的内容,这是我添加的*/注释,用于按当前类别提取产品

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);
        }

    }

在此处发布解决方案:

        /* 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 */ 

当您只需要匹配一个值时,为什么要使用IN?不确定,还没有达到这个程度,但主要问题是$\u category=$layer->getCurrentCategory();为NULL,因此由于某些原因,当前类别无法正确检索您是否尝试过
Mage::registry('current_category')
?当你浏览网站时,这个值是由Magento自动设置的。这很有帮助,感谢@BrianVPS,我还必须更改过滤器,如下所示。因为我找不到任何关于这些东西的合法文件,所以我一直在用黑客破解。是的,Magento的一部分乐趣是学习如何以及在哪里找到答案。保持如此接近…这个社区是伟大的回答各种问题!德国劳埃德船级社!