>  기사  >  백엔드 개발  >  Magento에서 견적 및 주문에 사용자 정의 속성을 추가하는 방법은 무엇입니까?

Magento에서 견적 및 주문에 사용자 정의 속성을 추가하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 18:01:10688검색

How to add custom attributes to quotes and orders in Magento?

Magento - 견적 및 주문에 사용자 정의 제품 속성 추가

소개

Magento 사용자가 사용자 정의 속성을 사용하여 기능을 확장할 수 있는 사용자 정의 가능한 플랫폼을 제공합니다. 이 가이드에서는 견적 및 주문 품목용으로 특별히 설계된 제품 속성을 생성하여 사용자가 결제 프로세스 중에 이 속성을 구성하고 캡처할 수 있도록 하는 방법을 보여줍니다.

속성 생성 및 추가

  1. catalog_product_load_after 이벤트에 이벤트 옵저버를 추가합니다.
  2. 옵저버 메소드에서는 요청 매개변수에서 선택한 옵션을 검색하여 제품 모델에 추가_옵션으로 저장합니다.

주문에서 속성 유지

  1. sales_convert_quote_item_to_order_item 이벤트에 이벤트 옵저버를 추가합니다.
  2. 옵저버 메서드에서 견적에서 추가_옵션을 복사합니다. 항목을 주문 항목에 추가합니다.

속성 표시

  1. 관련 템플릿(예: 카탈로그/제품/보기/)에서 getItemOptions 메소드를 수정합니다. type/default.phtml)을 사용하여 사용자 정의 속성 행을 추가합니다.
  2. 필요한 경우 quote_item_load_after 또는 order_item_load_after 이벤트 관찰자에서 번역 논리를 생성하여 번역을 처리합니다.

추가 고려 사항

  • 재주문을 허용하려면 checkout_cart_product_add_after 이벤트에 관찰자를 추가하여 extra_options를 새 견적 항목에 복사하세요.
  • 이런 방식으로 추가된 사용자 정의 속성은 제품에 표시되지 않습니다. 속성 또는 속성 세트.

예제 코드

이벤트 관찰자 후 카탈로그 제품 로드

<code class="php">public function catalogProductLoadAfter(Varien_Event_Observer $observer)
{
    // Get the product
    $product = $observer->getProduct();

    // Get the extra options
    $options = $action->getRequest()->getParam('extra_options');

    // Add the extra options to the product
    $additionalOptions = array();
    if ($additionalOption = $product->getCustomOption('additional_options')) {
        $additionalOptions = (array) unserialize($additionalOption->getValue());
    }
    foreach ($options as $key => $value) {
        $additionalOptions[] = array(
            'label' => $key,
            'value' => $value,
        );
    }
    $product->addCustomOption('additional_options', serialize($additionalOptions));
}</code>

판매 견적 항목을 주문 항목 이벤트 관찰자로 변환

<code class="php">public function salesConvertQuoteItemToOrderItem(Varien_Event_Observer $observer)
{
    // Get the quote item and order item
    $quoteItem = $observer->getItem();
    $orderItem = $observer->getOrderItem();

    // Get the additional options from the quote item
    $additionalOptions = $quoteItem->getOptionByCode('additional_options');

    // Set the additional options on the order item
    $options = $orderItem->getProductOptions();
    $options['additional_options'] = unserialize($additionalOptions->getValue());
    $orderItem->setProductOptions($options);
}</code>

템플릿의 사용자 정의 속성 표시

<code class="php">// Get the product options
$options = $_item->getOptions();

// Check if additional_options is set
if (isset($options['additional_options'])) {
    // Get the additional options
    $additionalOptions = $options['additional_options'];

    // Add a placeholder row for the custom attribute
    echo '<tr>
        <td class="options label" title=""><span>' . $this->__('Custom Attribute') . '</span></td>
        <td class="options value" title="">
            <span>' . $additionalOptions[0]['value'] . '</span>
        </td>
    </tr>';
}</code>

위 내용은 Magento에서 견적 및 주문에 사용자 정의 속성을 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.