我想在Magento创建一组客户,例如。第1组,第2组。现在假设我们在目录中有10个产品,我想只为特定的客户群分配某些产品。现在,当客户说从第1组登录时,他应该只能看到那些被归属于第1组而不是所有产品的产品。
答案 0 :(得分:2)
您可以使用与可用客户组对应的选项创建类型为multiselect
的产品属性。然后,为每个产品选择可用的组。之后,您可以覆盖Mage_Catalog_Model_Category::getProductCollection
并检查客户是否已登录,如果是,请检查其客户组。之后,您可以过滤此客户组的产品集合。你的代码应该是这样的:
class Namespace_Module_Model_Rewrite_Catalog_Category extends Mage_Catalog_Model_Category {
public function getProductCollection()
{
if(Mage::getSingleton('customer/session')->isLoggedIn()){
// Get group id
$group_id = Mage::getSingleton('customer/session')->getCustomerGroupId();
// Get customer group code
$group = Mage::getModel('customer/group')->load($group_id);
$group_code = $group->getCode();
// Get multiselect attribute options
$attributeOptionArray = array();
$attrribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'customer_group_attribute_code');
foreach ($attrribute->getSource()->getAllOptions(true, true) as $option) {
$attributeOptionArray[$option['value']] = $option['label'];
}
$collection = Mage::getResourceModel('catalog/product_collection')
->setStoreId($this->getStoreId())
->addAttributeToFilter('customer_group_attribute_code', array('finset' => array_search($group_code, $attributeOptionArray)));
} else {
$collection = Mage::getResourceModel('catalog/product_collection')
->setStoreId($this->getStoreId())
->addCategoryFilter($this);
}
return $collection;
}
}