2014-11-25 4 views
1

나는 magento에 초보자입니다. 이름, 주소, 전자 메일과 같은 백엔드에서 추가 한 제품에 대한 몇 가지 사용자 지정 옵션을 추가했습니다.동적으로 제품 사용자 정의 옵션을 추가하십시오 magento

그래서 지금은 다음과 같습니다

Item 1 

    Name : [textbox] 
    Email : [textbox] 
    Address : [textarea] 

이제 내가하고 싶은 것은 동적으로 사용자 정의 옵션을 추가하는 것입니다. 두 개의 버튼, "항목 추가"및 "항목 제거"가 있습니다.

그래서 내가 클릭 "항목 추가"할 때 그 결과는 다음과 같아야합니다 내가 클릭 "항목을 제거"할 때

Item 1 

    Name : [textbox] 
    Email : [textbox] 
    Address : [textarea] 

Item 2 

    Name : [textbox] 
    Email : [textbox] 
    Address : [textarea] 

이 항목을 제거해야합니다.

어떻게 구현할 수 있습니까? 감사합니다

답변

1

완전히 동적 인 경우 제품 세부 정보 페이지에서 양식을 만들 수 있습니다. 항목 추가 및 제거에서 jQuery를 사용하여 작성해야합니다.

이 데이터를 따옴표로 추가하면 순서대로 관리됩니다.

동적으로 생성 된 옵션을 추가하려면 모듈을 만들어야합니다.

난 당신이 제품 상세 페이지 양식에 avialable이 입력 상자가있는 경우 intials 사용자 정의 옵션을 추가 할 네임 스페이스 기술와 모듈 Personlization을 만들었습니다.

모듈을 만들기 전에 Product detail 페이지에 새 양식 요소를 추가하십시오. 이름은 intials입니다.

다음과 같이 코딩 할 필요가 파일 Tech/Personlization/etc/config.xml에서 :

<?xml version="1.0"?> 
<config> 
<modules> 
<Tech_Personlization> 
    <version>1.0.0</version> 
</Tech_Personlization> 
</modules> 
<global> 
    <models> 
    <personlization> 
    <class>Tech_Personlization_Model</class> 
    <resourceModel>personlization_mysql4</resourceModel> 
    </personlization> 
</models> 
<events>   
    <catalog_product_load_after> 
     <observers> 
      <personlization> 
       <type>model</type> 
       <class>personlization/observer</class> 
       <method>catalogProductLoadAfter</method> 
      </personlization> 
     </observers> 
    </catalog_product_load_after> 
    <sales_convert_quote_item_to_order_item> 
     <observers> 
      <personlization> 
       <type>model</type> 
       <class>personlization/observer</class> 
       <method>salesConvertQuoteItemToOrderItem</method> 
      </personlization> 
     </observers> 
    </sales_convert_quote_item_to_order_item> 
</events> 
</global> 
</config> 

은 또한 당신이 다음과 같은 코드로 Tech/Personlization/Model/Observer.php을 관찰 만들어야합니다

<?php 
class Tech_Personlization_Model_Observer { 
public function catalogProductLoadAfter(Varien_Event_Observer $observer) 
{ 
    $action = Mage::app()->getFrontController()->getAction(); 

    if ($action->getFullActionName() == 'checkout_cart_add' || $action->getFullActionName() == 'checkout_cart_updateItemOptions'){   
     $product = $observer->getProduct(); 
     $post = Mage::app()->getRequest()->getPost();     

       $array = array(); 
       $array['intials'] = $post['intials']; 

       if ($options = $array) 
       {      
        $additionalOptions = array(); 
        if ($additionalOption = $product->getCustomOption('additional_options')) 
         { 
          $additionalOptions = (array) unserialize($additionalOption->getValue()); 
         }       
        foreach ($options as $key => $value) 
         { 
          $additionalOptions[] = array(
           'label' => $key, 
           'value' => $value, 
          ); 
         } 

        $observer->getProduct()->addCustomOption('additional_options', serialize($additionalOptions)); 
       } 
    } 
} 

public function salesConvertQuoteItemToOrderItem(Varien_Event_Observer $observer) 
{ 
    $quoteItem = $observer->getItem(); 
    if ($additionalOptions = $quoteItem->getOptionByCode('additional_options')) 
    { 
     $orderItem = $observer->getOrderItem(); 
     $options = $orderItem->getProductOptions(); 
     $options['additional_options'] = unserialize($additionalOptions->getValue()); 
     $orderItem->setProductOptions($options); 
    }      
} 

} 

희망이 도움말!

+0

감사합니다 ... "장바구니에 담기"를 클릭하면 관찰자가 발화하지 않습니다 – user3243180

+0

끝으로 작업하고 있습니다. 관찰자 이름을 확인하십시오. 오류보고 사용. –

+0

실제로 "장바구니에 추가 버튼"전에 제품 세부 정보 페이지의 addtocart.phtml에 일부 텍스트 필드를 만들었지 만 작동하지 않습니다. 오류보고가 켜져 있지만 행운이 없음 – user3243180

관련 문제