我遇到了从磁盘中删除自定义选项的问题。我想客户不应该被要求输入升级选项。 我在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;
}
}
答案 0 :(得分:1)
布拉尔, 需要更改is_required = 0才能生成非必需字段
'is_require' => 0
答案 1 :(得分:0)
修复此问题在csv中设置属性required =“0”并使用上面的脚本上传它。