ホームページ  >  記事  >  バックエンド開発  >  Magento で見積もりや注文にカスタム属性を追加するにはどうすればよいですか?

Magento で見積もりや注文にカスタム属性を追加するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 18:01:10728ブラウズ

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. オブザーバー メソッドで、見積からAdditional_options をコピーします。

属性の表示

  1. 関連するテンプレート (catalog/product/view/ など) の getItemOptions メソッドを変更します。 type/default.phtml) を使用してカスタム属性行を追加します。
  2. 必要に応じて、quote_item_load_after または order_item_load_after イベント オブザーバーで変換ロジックを作成して、翻訳を処理します。

追加の考慮事項

  • 再注文を可能にするには、checkout_cart_product_add_after イベントにオブザーバーを追加して、Additional_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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。