如何从magento中的自定义选项中删除require

时间:2014-03-27 04:17:48

标签: magento

我遇到了从磁盘中删除自定义选项的问题。我想客户不应该被要求输入升级选项。 我在select.phtml中有一个代码

<?php /* @var $this Mage_Catalog_Block_Product_View_Options_Type_Select */ ?>
<?php $_option = $this->getOption() ?>
<dt><label<?php if ($_option->getIsRequire()) echo ' class="required"' ?>><?php if ($_option->getIsRequire()) echo '<em>*</em>' ?><?php echo  $this->htmlEscape($_option->getTitle()) ?></label></dt>
<dd<?php if ($_option->decoratedIsLast){?> class="last"<?php }?>>
    <div class="input-box">
        <?php echo $this->getValuesHtml() ?>
        <?php if ($_option->getIsRequire()): ?>
            <?php if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_RADIO || $_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_CHECKBOX): ?>
                <span id="options-<?php echo $_option->getId() ?>-container"></span>
            <?php endif; ?>
        <?php endif;?>
    </div>
</dd>

请帮助我们做些什么来删除所需的选项。

我使用此脚本添加自定义选项csv: -

<?php
// Report all PHP errors (see changelog)
error_reporting(E_ALL);
ini_set("display_errors", 1);
// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

// Include Magento application
require_once ( "../app/Mage.php" );
umask(0);

// Initialize Magento
Mage::app("default");
$start = 0;
$totalno = 100000;
$row = 0;
$sku = 0;
$baseRowoption = array();
$myarrayoption = array();
if (($handle = fopen("custom_option-final.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle,",")) !== FALSE) {
        $num = count($data);
        for ($c=0; $c < $num; $c++) {
            if($row == 0){
                $baseRowoption[$c]=$data[$c];
            }else{
                if($c==0){
                    $sku=$data[$c];
                }
                $myarrayoption[$sku][$row][$baseRowoption[$c]]=$data[$c];
            }
        }
        $row++;
        if($row > $totalno){
            break;
        }
    }
    fclose($handle);
}

$myarrayoptionfinal = array();
foreach($myarrayoption as $key=>$myarrayoption1){
    //if($key != "smartek-rx3044"){ break; }
    foreach($myarrayoption1 as $myarrayoption11){
        $myarrayoptionfinal[$key][$myarrayoption11['option_title']]['input_type'] = $myarrayoption11['input_type'];
        $myarrayoptionfinal[$key][$myarrayoption11['option_title']]['required'] = $myarrayoption11['required'];
        $myarrayoptionfinal[$key][$myarrayoption11['option_title']]['sort_order'] = $myarrayoption11['sort_order'];
        $myarrayoptionfinal[$key][$myarrayoption11['option_title']]['row_title'][] = $myarrayoption11['row_title'];
        $myarrayoptionfinal[$key][$myarrayoption11['option_title']]['row_price'][] = $myarrayoption11['row_price'];
        $myarrayoptionfinal[$key][$myarrayoption11['option_title']]['row_price_type'][] = $myarrayoption11['row_price_type'];
        $myarrayoptionfinal[$key][$myarrayoption11['option_title']]['row_sku'][] = $myarrayoption11['row_sku'];
        $myarrayoptionfinal[$key][$myarrayoption11['option_title']]['row_sort_order'][] = $myarrayoption11['row_sort_order'];
    }

}

echo "<pre>";
echo "total No : ".count($myarrayoptionfinal);
echo "<br />";
//print_r($myarrayoptionfinal);
$i=0;
foreach($myarrayoptionfinal as $keys=>$myarrayoptionfinal1){
    if($i<$start){
        $i++;       continue;   
    }
    echo "<br />".$i."--->";
    $i++;
    echo $keys."--->";

    $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$keys);
    if($product){
     foreach ($product->getProductOptionsCollection() as $option)
    {   
         $optionsData = $option->getData();
         $optionsData['is_delete'] = 1;
         $product->setProductOptions(array($option->getId() => $optionsData));
         $product->setCanSaveCustomOptions(true);
         $product->save();
    }}else{
        continue;
    }
    $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$keys); 
    print_r($product->getData("entity_id")); 
    foreach($myarrayoptionfinal1 as $keysub=>$myarrayoptionfinal11){
        $subarray = array();
        foreach($myarrayoptionfinal11['row_title'] as $keysub1=>$myarrayoptionfinal111){
            $subarray[]=array(
                        'is_delete'     => 0,
                        'title'         => $myarrayoptionfinal111,
                        'price_type'    => $myarrayoptionfinal11['row_price_type'][$keysub1],
                        'price'         => $myarrayoptionfinal11['row_price'][$keysub1],
                        'sku'           =>  $keys.'_'.$myarrayoptionfinal11['row_sku'][$keysub1],
                        'sort_order'    => $myarrayoptionfinal11['row_sort_order'][$keysub1],
                        'option_type_id'=> -1,
                    );
        }

        $required = false;
        if($myarrayoptionfinal11["required"] == 1) $required = true;
        $opt = array(
            'is_delete'         => 0,
            'is_require'        => $required,
            'previous_group'    => '',
            'title'             => $keysub,
            'type'              => $myarrayoptionfinal11["input_type"],
            'price_type'        => '',
            'price'             => '',
            'sort_order'        => $myarrayoptionfinal11["sort_order"],
            /** array of values for this option **/
            'values'            => $subarray,
            );
    }
    try {
            //print_r($opt);
            $option = Mage::getModel('catalog/product_option')
                ->setProduct($product)
                ->addOption($opt)
                ->saveOptions();
            $product->setHasOptions(1);
            $product->save();
        }
    catch (Exception $e) {
            echo 'Caught exception 2: '.$e->getMessage()."\n";
            continue;
        } 
}

2 个答案:

答案 0 :(得分:1)

布拉尔, 需要更改is_required = 0才能生成非必需字段

'is_require'        => 0

答案 1 :(得分:0)

修复此问题在csv中设置属性required =“0”并使用上面的脚本上传它。