zoukankan      html  css  js  c++  java
  • How to Programmatically Add/Delete Custom Options in Magento?

    In this tutorial, I would like to help out Magento developers and clients with how to programmatically add/delete custom options in Magento. At the end of this post you’d be able to add/delete custom option on your Magento website with absolute ease. Here, we are with the set of codes to add custom options in Magento, followed subsequently by deleting custom options.

    Programmatically add custom option in Magento:

    This will be useful for everyone who want to know how custom option works and how to add/delete the custom option programmatically in front-end or automatically when product save. Only thing you have to do it is that you’ve to place the code in the right place. There are two methods to add the custom options. Let’s discuss them one-by-one in the sections below.

    Method 1:

    Load the product details using the product Id. For e.g., the product ID is 1

    $product_id = 1;

    $product = Mage::getModel(“catalog/product”)->load($product_id);

    $product->getOptions() This code is used to check whether the product already has the custom options. If not then we will add the custom option array into product using the function called addOption() and saveOption().To give an array as input to the addOption(), we are using a function called, createCustomOption()

    $custom_title = “Red,Green,Blue”;

    $customoptions_price = “51,23,54”;

    $prod_sku = “redsku,greensku,bluesku”;

    $customoption_main_title = “Color”;

    $option_type = “drop_down”;

    $optionData[ ] = $this-> createCustomOption($custom_title, $customoptions_price, $prod_sku , $customoption_main_title,$option_type);

    if(count($product->getOptions()) == 0){

    foreach ($optionData as $options) {

    foreach ($options as $option) {

    $opt = Mage::getModel(‘catalog/product_option’);

    $opt->setProduct($product);

    $opt->addOption($option);

    $opt->saveOptions();

    }

    }

    $product->setHasOptions(1)->save();

    }

    //This function will just create and return array

    function createCustomOption($value,$customoptions_price, $sku , $title, $type, $noOption = false)

    {

    $custom_options = array();

    if ($type && $value != “” && $value) {

    $values = explode(‘,’, $value);

    $skus = explode(‘,’, $sku);

    $customoptions_prices = explode(‘,’, $customoptions_price);

    if (count($values)) {

    /**If the custom option has options*/

    if (! $noOption) {

    $is_required = 0;

    $sort_order = 0;

    $custom_options[ ] = array(

    ‘is_delete’ => 0 ,

    ‘title’ => $title ,

    ‘previous_group’ => ” ,

    ‘previous_type’ => ” ,

    ‘type’ => $type ,

    ‘is_require’ => $is_required ,

    ‘sort_order’ => $sort_order ,

    ‘values’ => array()

    );

    for($i = 0; $i < (count($values)) ; $i++)

    {

    switch ($type) {

    case ‘drop_down’:

    case ‘radio’:

    case ‘checkbox’:

    case ‘multiple’:

    default:

    $custom_options[count($custom_options) - 1]['values'][ ] = array(

    ‘is_delete’ => 0 , ‘title’ => $values[$i] , ‘option_type_id’ => – 1 , ‘price_type’ => ‘fixed’ , ‘price’ => $customoptions_prices[$i] , ‘sku’ => $skus[$i] , ‘sort_order’ => ”

    );

    break;

    }

    }

    return $custom_options;

    }

    /**If the custom option doesn’t have options | Case: area and field*/

    else {

    $is_required = 0;

    $sort_order = ”;

    $custom_options[ ] = array(

    “is_delete” => 0 , “title” => $title , “previous_group” => “text” , “price_type” => ‘fixed’ , “price” => ” , “type” => $type , “is_required” => $is_required

    );

    return $custom_options;

    }

    }

    }

    return false;

    }

    $optionData[ ] = $this-> createCustomOption($custom_title, $customoptions_price, $prod_sku , $customoption_main_title,$option_type);

    The createCustomOption() function, when called will return an array similar to below:

    Array

    (

    [0] => Array

    (

    [0] => Array

    (

    [is_delete] => 0

    [title] => Color

    [previous_group] => ‘’

    [previous_type] => ‘’

    [type] => drop_down

    [is_require] => 0

    [sort_order] => 0

    [values] => Array

    (

    [0] => Array

    (

    [is_delete] => 0

    [title] => Red

    [option_type_id] => 1

    [price_type] => fixed

    [price] => 51

    [sku] => redsku

    [sort_order] => 0

    )

    [1] => Array

    (

    [is_delete] => 0

    [title] => Green

    [option_type_id] => 1

    [price_type] => fixed

    [price] => 23

    [sku] => greensku

    [sort_order] => 1

    )

    [2] => Array

    (

    [is_delete] => 0

    [title] => Blue

    [option_type_id] => 1

    [price_type] => fixed

    [price] => 54

    [sku] => bluesku

    [sort_order] => 2

    )

    )

    )

    )

    )

     

    Method 2:

    In other way you can add Custom option in this manner also:

    $productCollection = Mage::getModel(“catalog/product”)->load(1);

    $product_id = $productCollection ->getId();

    $ex_cop = array();

    foreach ($product->getOptions() as $value) {

    $ex_cop[ ] = $value->getTitle();

    }

    $custome_option = array();

    $optionsfield = array(

    ‘type’ => ‘radio’,//select

    ‘is_require’ => 1,

    ‘sort_order’ => ’0′

    );

    $valuesfield = array(

    array(

    ‘title’ => ‘Option Value 1′,

    ‘price’ => 0.00,

    ‘price_type’ => ‘fixed’,

    ‘sku’ => ”,

    ‘ sort_order’ => ’1′

    ),

    array(

    ‘title’ => ‘Option Value 1′,

    ‘price’ => 0.00,

    ‘price_type’ => ‘fixed’,

    ‘sku’ => ”,

    ‘sort_order’ => ’1′

    )

    );

    $valuesfield = array();

    $custome_option[ ] = array(‘title’=>’Start Date’,'options’=>$optionsfield,’values’=>$valuesfield);

    foreach($custome_option as $cp){

    if(!in_array($cp['title'],$ex_cop)){

    Mage::helper(‘module_name’)->setCustomOption($product_id, $cp['title'], $cp['options'], $cp['values']);

    }

    }

    In module_name/helper/data.php add function

    public function setCustomOption($productId, $title, array $optionData, array $values = array())

    {

    $product = Mage::getModel(‘catalog/product’)->load($productId);

    //$product->getAttributeSetId();

    $data = array_merge( $optionData, array(

    ‘product_id’ => (int)$productId,

    ‘title’ => $title,

    ‘values’ => $values,

    ));

    $product->setHasOptions(1)->save();

    $option = Mage::getModel(‘catalog/product_option’)->setData($data)->setProduct($product)->save();

    return $option;

    }

    To delete the custom option:
    if
    ($product->getOptions() != ”){
    foreach ($product->getOptions() as $opt)
    {
    $opt->delete();
    }
    $product->setHasOptions(0)->save();
    }

    I hope this post was beneficial and helped you learn how to programmatically add/delete custom options in Magento.

    - See more at: http://apptha.com/blog/how-to-programmatically-adddelete-custom-options-in-magento/#sthash.j72efsMV.dpuf



    ref http://apptha.com/blog/how-to-programmatically-adddelete-custom-options-in-magento/

  • 相关阅读:
    安装ffmpeg视频软件 Linux
    Linux 计划任务
    分享一个大牛的博客地址
    yii验证码Captcha使用以及为什么验证码不刷新问题
    YII缓存之数据缓存
    YII用户注册和用户登录(二)之登录和注册在视图通过表单使用YII小物件并分析
    YIIMVC之用户注册和用户登录
    yii 总结
    yii linux 自动执行脚本
    yii downlist
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3327330.html
Copyright © 2011-2022 走看看