Magento按类别介绍产品
我正在尝试调整一个模块,以提供特定类别的特色产品。我想差不多了,但还没有雪茄。显然,我不能在这里使用getSingleton(“目录/层”)来获取当前类别ID。目前,模块会输出特色产品,但它们与您所在的特定类别没有关联 这里有获取当前类别的提示吗?您将看到我在下面的/*中尝试的内容,这是我添加的*/注释,用于按当前类别提取产品Magento按类别介绍产品,magento,Magento,我正在尝试调整一个模块,以提供特定类别的特色产品。我想差不多了,但还没有雪茄。显然,我不能在这里使用getSingleton(“目录/层”)来获取当前类别ID。目前,模块会输出特色产品,但它们与您所在的特定类别没有关联 这里有获取当前类别的提示吗?您将看到我在下面的/*中尝试的内容,这是我添加的*/注释,用于按当前类别提取产品 class Adodis_Featuredproducts_Block_Product_Featured extends Mage_Catalog_Block_Produ
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的一部分乐趣是学习如何以及在哪里找到答案。保持如此接近…这个社区是伟大的回答各种问题!德国劳埃德船级社!