//首先取得产品所有option,通过title检索出指定optionID
$test = $_item->getProduct()->getProductOptionsCollection();
foreach($test as $t){
if($t->getTitle() == 'Special Requirement'){
$sr_optionid = $t->getOptionId();
}
}
//form $sr_value在循环输出option时赋值
<?php if(!empty($sr_optionid)):?>
<div style="clear:both;">Special Requirement: <textarea name="cart[<?php echo $_item->getId();?>][sr_content]" cols="50"><?php echo $sr_value;?></textarea>
<input type="hidden" name="cart[<?php echo $_item->getId();?>][sr_id]" value="<?php echo $sr_optionid;?>"/>
</div>
<?php endif;?>
//app/code/core/Mage/Checkout/Model/Cart.php
public function updateItems($data)
{
...
if(isset($itemInfo['sr_content']) && !empty($itemInfo['sr_content']) && isset($itemInfo['sr_id'])){
$itemInQuote->addOption(array(
'code' => 'option_'.$itemInfo['sr_id'],
'value' => $itemInfo['sr_content']
));
$old_ids = $itemInQuote->getOptionByCode('option_ids');
if($old_ids){//已经有的option
$old_ids_v = $old_ids->getValue();
if(stripos($old_ids_v,$itemInfo['sr_id'])===false){
$itemInQuote->addOption(array(
'code' => 'option_ids',
'value' => $old_ids_v.','.$itemInfo['sr_id']//!!!合并处理
));
}
}else{
$itemInQuote->addOption(array(
'code' => 'option_ids',
'value' => $itemInfo['sr_id']
));
}
}
...
}