2012-03-16 3 views
0

Magentoのカスタムオプション機能を拡張したいと考えています。私はスキューやタイトルのような既存のものを使うことはできません。私はまったく新しいものを必要とし、それは「道」と呼ばれています。それを追加する手順は何ですか?それはcatalog_product_optionに行を追加しているようですが、それ以上のことはないと思いますか?カスタムオプションに新しい値を追加するにはどうすればいいですか?

答えて

0

私は過去にあなたが有用であるかどうかわかりにくい何かをやった。私たちの状況は、新しいテキストオプションのAuto Completeフィールドの必要性でした。だから、デザインの\ adminhtmlの\デフォルト\デフォルト\テンプレート\カタログ\製品\編集\オプションで\型の\ text.phtml、これはOptionTemplateTextのための新しいJavaScriptのVARです:

OptionTemplateText = '<table class="border" cellpadding="0" cellspacing="0">'+ 
    '<tr class="headings">'+ 
     '<th class="type-price"><?php echo Mage::helper('catalog')->__('Price') ?></th>'+ 
     '<th class="type-type"><?php echo Mage::helper('catalog')->__('Price Type') ?></th>'+ 
     '<th class="type-sku"><?php echo Mage::helper('catalog')->__('SKU') ?></th>'+ 
     '<th class="type-last last"><?php echo Mage::helper('catalog')->__('Max Characters') ?> </th>'+ 
     '<th class="type-last last"><?php echo Mage::helper('catalog')->__('Auto Complete') ?> </th>'+ 
    '</tr>'+ 
    '<tr>'+ 
     '<td><input type="text" class="input-text validate-number product-option-price" id="product_option_{{option_id}}_price" name="product[options][{{option_id}}][price]" value="{{price}}"></td>'+ 
     '<td><?php echo $this->getPriceTypeSelectHtml() ?>{{checkboxScopePrice}}</td>'+ 
     '<td><input type="text" class="input-text" name="product[options][{{option_id}}][sku]" value="{{sku}}"></td>'+ 
     '<td class="type-last last"><input type="text" class="input-text validate-zero-or-greater" name="product[options][{{option_id}}][max_characters]" value="{{max_characters}}"></td>'+ 
     '<td class="type-last last"><input type="text" class="input-text" name="product[options][{{option_id}}][auto_complete]" value="{{auto_complete}}"> * service URL</td>'+ 
    '</tr>'+ 
'</table>'; 

その後、我々は我々のでMage_Adminhtml_Block_Catalog_Product_Edit_Tab_Options_Optionを上書き

<global> 
    <blocks> 
     <adminhtml> 
      <rewrite> 
       <catalog_product_edit_tab_options_option>MyNameSpace_Adminhtml_Block_Catalog_Product_Edit_Tab_Options_Option</catalog_product_edit_tab_options_option> 
      </rewrite> 
     </adminhtml> 
    </blocks> 
</global> 

ここではクラス全体です。

ALTER TABLE `catalog_product_option` ADD COLUMN `auto_complete` VARCHAR(255) NULL DEFAULT NULL AFTER `max_caharacters`; 

class MyNameSpace_Adminhtml_Block_Catalog_Product_Edit_Tab_Options_Option extends Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Options_Option { 
public function __construct() { 
    parent::__construct(); 
    $this->setTemplate('catalog/product/edit/options/option.phtml'); 
} 

public function getOptionValues() { 
    $optionsArr = array_reverse($this->getProduct()->getOptions(), true); 

    if (!$this->_values) { 
     $values = array(); 
     $scope = (int) Mage::app()->getStore()->getConfig(Mage_Core_Model_Store::XML_PATH_PRICE_SCOPE); 
     foreach ($optionsArr as $option) { 
      /* @var $option Mage_Catalog_Model_Product_Option */ 

      $this->setItemCount($option->getOptionId()); 

      $value = array(); 

      $value['id'] = $option->getOptionId(); 
      $value['item_count'] = $this->getItemCount(); 
      $value['option_id'] = $option->getOptionId(); 
      $value['title'] = $this->htmlEscape($option->getTitle()); 
      $value['type'] = $option->getType(); 
      $value['is_require'] = $option->getIsRequire(); 
      $value['sort_order'] = $option->getSortOrder(); 

      if ($this->getProduct()->getStoreId() != '0') { 
       $value['checkboxScopeTitle'] = $this->getCheckboxScopeHtml($option->getOptionId(), 'title', is_null($option->getStoreTitle())); 
       $value['scopeTitleDisabled'] = is_null($option->getStoreTitle())?'disabled':null; 
      } 

      if ($option->getGroupByType() == Mage_Catalog_Model_Product_Option::OPTION_GROUP_SELECT) { 

       $i = 0; 
       $itemCount = 0; 
       foreach ($option->getValues() as $_value) { 
        /* @var $_value Mage_Catalog_Model_Product_Option_Value */ 
        $value['optionValues'][$i] = array(
         'item_count' => max($itemCount, $_value->getOptionTypeId()), 
         'option_id' => $_value->getOptionId(), 
         'option_type_id' => $_value->getOptionTypeId(), 
         'title' => $this->htmlEscape($_value->getTitle()), 
         'price' => $this->getPriceValue($_value->getPrice(), $_value->getPriceType()), 
         'price_type' => $_value->getPriceType(), 
         'sku' => $this->htmlEscape($_value->getSku()), 
         'sort_order' => $_value->getSortOrder(), 
        ); 

        if ($this->getProduct()->getStoreId() != '0') { 
         $value['optionValues'][$i]['checkboxScopeTitle'] = $this->getCheckboxScopeHtml($_value->getOptionId(), 'title', is_null($_value->getStoreTitle()), $_value->getOptionTypeId()); 
         $value['optionValues'][$i]['scopeTitleDisabled'] = is_null($_value->getStoreTitle())?'disabled':null; 
         if ($scope == Mage_Core_Model_Store::PRICE_SCOPE_WEBSITE) { 
          $value['optionValues'][$i]['checkboxScopePrice'] = $this->getCheckboxScopeHtml($_value->getOptionId(), 'price', is_null($_value->getstorePrice()), $_value->getOptionTypeId()); 
          $value['optionValues'][$i]['scopePriceDisabled'] = is_null($_value->getStorePrice())?'disabled':null; 
         } 
        } 
        $i++; 
       } 
      } else { 
       $value['price'] = $this->getPriceValue($option->getPrice(), $option->getPriceType()); 
       $value['price_type'] = $option->getPriceType(); 
       $value['sku'] = $this->htmlEscape($option->getSku()); 
       $value['max_characters'] = $option->getMaxCharacters(); 
       $value['auto_complete'] = $option->getAutoComplete(); 
       $value['file_extension'] = $option->getFileExtension(); 
       $value['image_size_x'] = $option->getImageSizeX(); 
       $value['image_size_y'] = $option->getImageSizeY(); 
       if ($this->getProduct()->getStoreId() != '0' && $scope == Mage_Core_Model_Store::PRICE_SCOPE_WEBSITE) { 
        $value['checkboxScopePrice'] = $this->getCheckboxScopeHtml($option->getOptionId(), 'price', is_null($option->getStorePrice())); 
        $value['scopePriceDisabled'] = is_null($option->getStorePrice())?'disabled':null; 
       } 
      } 
      $values[] = new Varien_Object($value); 
     } 
     $this->_values = $values; 
    } 

    return $this->_values; 
} 
} 

このパズルの最後のピースは、このちっちゃいSQL文でした