Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menambah atribut tersuai pada petikan dan pesanan dalam Magento?

Bagaimana untuk menambah atribut tersuai pada petikan dan pesanan dalam Magento?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 18:01:10682semak imbas

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

Magento - Menambah Atribut Produk Ditentukan Pengguna pada Petikan dan Pesanan

Pengenalan

Magento menawarkan platform yang boleh disesuaikan yang membolehkan pengguna memanjangkan fungsinya dengan atribut tersuai. Panduan ini akan menunjukkan cara membuat atribut produk yang direka khusus untuk item sebut harga dan pesanan, membolehkan pengguna mengkonfigurasi dan menangkap atribut ini semasa proses pembayaran.

Mencipta dan Menambah Atribut

  1. Tambahkan pemerhati peristiwa pada acara catalog_product_load_after.
  2. Dalam kaedah pemerhati, dapatkan semula pilihan yang dipilih daripada parameter permintaan dan simpannya sebagai tambahan_pilihan dalam model produk.

Mengekalkan Atribut dalam Pesanan

  1. Tambahkan pemerhati peristiwa pada acara sales_convert_quote_item_to_order_item.
  2. Dalam kaedah pemerhati, salin tambahan_pilihan daripada petikan item kepada item pesanan.

Memaparkan Atribut

  1. Ubah suai kaedah getItemOptions dalam templat yang berkaitan (cth., katalog/product/view/ type/default.phtml) untuk menambah baris atribut tersuai.
  2. Jika perlu, cipta logik terjemahan dalam petikan_item_load_selepas atau order_item_load_after pemerhati acara untuk mengendalikan terjemahan.

Pertimbangan Tambahan

  • Untuk membenarkan pesanan semula, tambahkan pemerhati pada acara checkout_cart_product_add_after untuk menyalin pilihan_tambahan kepada item sebut harga baharu.
  • Atribut tersuai yang ditambahkan dengan cara ini tidak kelihatan dalam produk atribut atau set atribut.

Kod Contoh

Katalog Muatan Produk Selepas Pemerhati Peristiwa

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

Jualan Menukar Item Sebut Harga kepada Item Pesanan Pemerhati Acara

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

Paparan Atribut Tersuai dalam Templat

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

Atas ialah kandungan terperinci Bagaimana untuk menambah atribut tersuai pada petikan dan pesanan dalam Magento?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn