2012-03-16 3 views
0

Magento의 사용자 지정 옵션 기능을 확장하고 싶습니다. 나는 sku 또는 title과 같은 기존의 것을 사용하지 않습니다. "경로"라고하는 완전히 새로운 것이 필요합니다. 그것을 추가하는 단계는 무엇입니까? 그것은 catalog_product_option에 행을 추가하는 것 같지만, 할 일이 더 많다고 생각합니까?사용자 지정 옵션에 새 값을 추가하는 방법?

답변

0

나는 과거에 당신이 유용하거나 유용하지 않을 수도있는 아주 간단한 것을 만들었습니다. 우리의 상황은 새로운 텍스트 옵션에서 자동 완성 필드의 필요성이었습니다. 그래서 디자인 \ adminhtml \ 기본 \ 기본 템플릿 \ 카탈로그 \ 제품 \의 편집 \ 타입 \의 text.phtml, 이것은 OptionTemplateText에 대한 자바 스크립트 var에 새로운 옵션입니다 \ \ : 우리가 함께 Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Options_Option을 덮어 그런

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>'; 

우리 이 재 작성을 사용하여 자신의 빠른 수업 :

<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 문이었다

관련 문제