Magento 使用特定配送方式时对选定产品的自定义促销

Magento 使用特定配送方式时对选定产品的自定义促销,magento,magento-1.7,Magento,Magento 1.7,我正在尝试在Magento中创建一个模块,允许管理员在使用特定配送方式时选择有资格享受配送折扣的产品和类别 首先,我在System->Config中创建了一个自定义部分,并使用System.xml文件分别为每个产品添加了一个启用/禁用选项。当计算配送方法的费率时,我会扫描购物车中的项目,如果在管理中启用了一个,则会应用折扣 我的问题是,这种方法只适用于有少量产品的商店。我怀疑在Magento中有更好的方法来解决这个问题,但到目前为止,我还没有找到关于这个主题的任何信息。是否有更好的方法来完成此任

我正在尝试在Magento中创建一个模块,允许管理员在使用特定配送方式时选择有资格享受配送折扣的产品和类别

首先,我在System->Config中创建了一个自定义部分,并使用System.xml文件分别为每个产品添加了一个启用/禁用选项。当计算配送方法的费率时,我会扫描购物车中的项目,如果在管理中启用了一个,则会应用折扣

我的问题是,这种方法只适用于有少量产品的商店。我怀疑在Magento中有更好的方法来解决这个问题,但到目前为止,我还没有找到关于这个主题的任何信息。是否有更好的方法来完成此任务?

1使用选项Yes/No创建一个属性“合格折扣”

2创建一个具有产品id的CSV文件,并将值为“是/否”(即1或0)的属性“合格的折扣”分配给您希望应用折扣的任何产品

3从Magento Admin导入CSV文件


4在购物车页面上,您可以检查产品是否包含“合格折扣”的属性值,如果是,则应用折扣。

虽然另一个答案很好地作为指导,但有几件事给了我一些麻烦,我想尝试澄清一下。我决定使用安装脚本创建产品属性。我在mysql4-install-0.1.0.php文件中放置了以下代码:

$entity = $this->getEntityTypeId('catalog_product');

$this->addAttribute($entity, 'reduced_shipping', array(
    'type'      => 'varchar',
    'input'     => 'boolean',
    'label'     => 'Product Qualified For Free Shipping',
    'visible'   => true,
    'default'   => '0',
    'required'  => true,
    'used_in_forms' => array(
        'adminhtml_checkout',
        'adminhtml_customer',
        'admin_html_customer_address',
        'checkout_register',
        'customer_account_create',
        'customer_account_edit',
        'customer_address_edit',
        'customer_register_address',
    )
));
虽然布尔值在创建属性时是一种有效的输入形式,但它似乎不能用于存储属性类型。这可以通过使用varchar来解决。运行安装脚本后,管理员可以转到Catalog->Manage Products,在那里他们可以为每个项目的免费配送属性选择Yes或No

最后,我在我创建的Carrier的collectRates方法中使用了以下内容,以循环浏览客户购物车中的项目,并查看管理员是否选择了免费送货

$quote = Mage::getModel('checkout/session')->getQuote();
$itemList = $quote->getAllVisibleItems();

foreach($itemList as $item)
{
    $product = Mage::getModel('catalog/product')->load($item->getProductId());
    if($product->getReducedShipping() == 1)
    {
         //update the price of shipping here
    } 
}

为了避免答案过长,我略过了一些内容,所以请告诉我是否有任何部分需要澄清。

谢谢Vikram,这就是我最终解决问题的原因。今天晚些时候我会发布另一个答案,更详细一些。我会在这里等着看你最新的准确答案。谢谢