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/

  • 相关阅读:
    numpy.argmax 用在求解混淆矩阵用
    1、VGG16 2、VGG19 3、ResNet50 4、Inception V3 5、Xception介绍——迁移学习
    Tensorflow深度学习之十二:基础图像处理之二
    tensorflow实现图像的翻转
    成都Uber优步司机奖励政策(1月13日)
    北京Uber优步司机奖励政策(1月13日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(1月13日)
    天津Uber优步司机奖励政策(1月11日~1月17日)
    苏州Uber优步司机奖励政策(1月11日~1月17日)
    南京Uber优步司机奖励政策(1月11日~1月17日)
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3327330.html
Copyright © 2011-2022 走看看