Step 1: change the app/design/adminhtml/default/default/template/page/head.phtml with the attached head.phtml
Step 2: app/design/adminhtml/default/default/template/catalog/product/edit/options.phtml
before:
<div class="entry-edit-head">
insert:
<div id="coSamples" style="margin-bottom:15px;"></div>
and
after:
<script type="text/javascript">
initOptionsSamples();
Step 3: app/design/adminhtml/default/default/template/catalog/product/edit/options/type/select.phtml
find:
OptionTemplateSelectRow = ...
replace with:
OptionTemplateSelectRow = '<tr id="product_option_{{id}}_select_{{select_id}}">'+ '<td>'+ '<input type="hidden" name="product[options][{{id}}][values][{{select_id}}][option_type_id]" value="{{option_type_id}}">'+ '<input type="hidden" id="product_option_{{id}}_select_{{select_id}}_is_delete" name="product[options][{{id}}][values][{{select_id}}][is_delete]" value="">'+ '<input type="text" class="required-entry input-text select-type-title" id="product_option_{{id}}_select_{{select_id}}_title" name="product[options][{{id}}][values][{{select_id}}][title]" value="{{title}}">{{checkboxScopeTitle}}</td>'+ '<td><input type="text" class="input-text validate-number product-option-price" id="product_option_{{id}}_select_{{select_id}}_price" name="product[options][{{id}}][values][{{select_id}}][price]" value="{{price}}"></td>'+ '<td><?php echo $this->getPriceTypeSelectHtml() ?>{{checkboxScopePrice}}</td>'+ '<td><input type="text" class="input-text sku" name="product[options][{{id}}][values][{{select_id}}][sku]" value="{{sku}}"></td>'+ '<td><input type="text" class="validate-zero-or-greater input-text sort-order" name="product[options][{{id}}][values][{{select_id}}][sort_order]" value="{{sort_order}}"></td>'+ '<td class="last"><span title="Delete row"><?php echo $this->getDeleteButtonHtml() ?></span></td>'+ '</tr>';
in the head.phtml, you can find the customOptionsSamples variable where you can set up your own custom options templates
Image Attachments
Click thumbnail to see full-size image
File Attachments

方法二
function setCustomOption($productId, $title, array $optionData, array $values = array()) { Mage::app()->getStore()->setId(Mage_Core_Model_App::ADMIN_STORE_ID); if (!$product = Mage::getModel('catalog/product')->load($productId)) { throw new Exception('Can not find product: ' . $productId); } $defaultData = array( 'type' => 'field', 'is_require' => 0, 'price' => 0, 'price_type' => 'fixed', ); $data = array_merge($defaultData, $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; } $productop = Mage::registry('current_product'); $_product = Mage::getModel('catalog/product')->load($productop->getId()); $optionexist=count($_product->getOptions()); $casetemplate=$_product->getResource()->getAttribute('pattern_template')->getFrontend()->getValue($_product); if($optionexist==0){ if($casetemplate=='Small'){ $sku=$_product->getResource()->getAttribute('sku')->getFrontend()->getValue($_product); $options = array('type' => 'drop_down', 'is_require' => 1, 'price' => 0, 'price_type' => 'fixed'); $values = array( array( 'title' => 'Black', 'price' =>0.00, 'price_type' => 'fixed', 'sku' => $sku, 'sort_order' => 1 ), array( 'title' => 'Brown', 'price' => 0.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 2 ), array( 'title' => 'Red', 'price' => 0.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 3 ), array( 'title' => 'Petal Pink', 'price' => 0.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 4 ), array( 'title' => 'White', 'price' => 0.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 5 ), array( 'title' => 'Aqua', 'price' => 0.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 6 ), array( 'title' => 'Purple', 'price' => 0.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 7 ), array( 'title' => 'Black/Red Stitch', 'price' => 2.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 8 ), array( 'title' => 'Black/Orange Stitch', 'price' => 2.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 9 ), array( 'title' => 'Black/Green Stitch', 'price' => 2.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 10 ), array( 'title' => 'Black/Purple Stitch', 'price' => 2.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 11 ) ); setCustomOption($productop->getId(), 'Pattern', $options, $values); echo "Generate Small Case Successful"; }else if($casetemplate=='Big'){ $sku=$_product->getResource()->getAttribute('sku')->getFrontend()->getValue($_product); $options = array('type' => 'drop_down', 'is_require' => 1, 'price' => 0, 'price_type' => 'fixed'); $values = array( array( 'title' => 'Black', 'price' =>0.00, 'price_type' => 'fixed', 'sku' => $sku, 'sort_order' => 1 ), array( 'title' => 'Brown', 'price' => 0.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 2 ), array( 'title' => 'Red', 'price' => 0.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 3 ), array( 'title' => 'Purple', 'price' => 0.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 4 ), array( 'title' => 'Black/Red Stitch', 'price' => 2.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 5 ), array( 'title' => 'Black/Orange Stitch', 'price' => 2.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' =>6 ), array( 'title' => 'Black/Green Stitch', 'price' => 2.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 7 ), array( 'title' => 'Black/Purple Stitch', 'price' => 2.00, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 8 ) ); setCustomOption($productop->getId(), 'Pattern', $options, $values); echo "Generate Big Case Successful"; }else{ echo "Pattern is Empty, Nothing to do"; } }else{ if($casetemplate!='Big' || $casetemplate!='Small'){ foreach ($productop->getOptions() as $opt) { $opt->delete(); } $productop->setHasOptions(0)->save(); echo "Delete options"; }else{ echo "Nothing to do"; } }