완전히 동적 인 경우 제품 세부 정보 페이지에서 양식을 만들 수 있습니다. 항목 추가 및 제거에서 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);
}
}
}
희망이 도움말!
감사합니다 ... "장바구니에 담기"를 클릭하면 관찰자가 발화하지 않습니다 – user3243180
끝으로 작업하고 있습니다. 관찰자 이름을 확인하십시오. 오류보고 사용. –
실제로 "장바구니에 추가 버튼"전에 제품 세부 정보 페이지의 addtocart.phtml에 일부 텍스트 필드를 만들었지 만 작동하지 않습니다. 오류보고가 켜져 있지만 행운이 없음 – user3243180