2012-09-09 138 views
2

在Magento結帳/購物車中,我想檢查是否將來自六個特定屬性集的產品添加到Magento購物車。檢查Magento購物車是否有特定AttributeSetName產品

我已經創建了下面的函數來檢查這些attributesetnames(s)的productview頁面,但是如何在checkout/cart中對物品進行同樣的檢查?

$attribute_set = Mage::getModel('eav/entity_attribute_set')->load($_product->getAttributeSetId()); 
$attributeset_name = $attribute_set->getAttributeSetName(); 
if ($attributeset_name =="Sko" or $attributeset_name =="beklaedning" or $attributeset_name =="Banz_solhat" or $attributeset_name =="Soltoj" or $attributeset_name =="solhat" or $attributeset_name =="fodtoj") { 
    echo "<b>Fragt</b>: <span style='color:red'>Fri Fragt p&aring; varen samt resten af ordren</span><br>"; 
} 

此致 的Jesper

回答

3
$attributeSetNames = array('Sko', 'beklaedning', 'Banz_solhat', 'Soltoj', 'solhat', 'fodtoj'); 

$quote = Mage::getSingleton('checkout/session')->getQuote(); 
$itemCollection = Mage::getModel('sales/quote_item')->getCollection(); 
$itemCollection->getSelect() 
    ->joinLeft( 
     array('cp' => Mage::getSingleton('core/resource')->getTableName('catalog/product')), 
     'cp.entity_id = main_table.product_id', 
     array('cp.attribute_set_id')) 
    ->joinLeft( 
     array('eas' => Mage::getSingleton('core/resource')->getTableName('eav/attribute_set')), 
     'cp.attribute_set_id = eas.attribute_set_id', 
     array('eas.attribute_set_name')) 
; 
$itemCollection->setQuote($quote); 

foreach($itemCollection as $item) { 
    if (in_array($item->getData('attribute_set_name'), $attributeSetNames)) { 
     //... Match 
    } 
} 

備選地&hellip;

使用屬性設置ID而不是名稱。這樣可以避免措辭上的任何潛在問題,並且還可以清理代碼。

$attributeSetIds = array(1, 2, 3, 4, 5, 6); 

$quote = Mage::getSingleton('checkout/session')->getQuote(); 
$itemCollection = Mage::getModel('sales/quote_item')->getCollection(); 
$itemCollection->getSelect() 
    ->joinLeft( 
     array('cp' => Mage::getSingleton('core/resource')->getTableName('catalog/product')), 
     'cp.entity_id = main_table.product_id', 
     array('cp.attribute_set_id')) 
; 
$itemCollection->setQuote($quote); 

foreach($itemCollection as $item) { 
    if (in_array($item->getData('attribute_set_id'), $attributeSetIds)) { 
     //... Match 
    } 
} 
+0

嗨德魯,非常感謝您的回覆:-)你能否也請幫我用代碼片段來檢查某個購物車規則ID是否符合訂單(如果符合,然後回顯。 ..) – user1601545

相關問題