Heim  >  Artikel  >  Backend-Entwicklung  >  Wie füge ich benutzerdefinierte Attribute zu Angeboten und Bestellungen in Magento hinzu?

Wie füge ich benutzerdefinierte Attribute zu Angeboten und Bestellungen in Magento hinzu?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 18:01:10728Durchsuche

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

Magento – Hinzufügen benutzerdefinierter Produktattribute zu Angeboten und Bestellungen

Einführung

Magento bietet eine anpassbare Plattform, die es Benutzern ermöglicht, ihre Funktionalität mit benutzerdefinierten Attributen zu erweitern. In dieser Anleitung wird gezeigt, wie Sie ein Produktattribut erstellen, das speziell für Angebots- und Bestellartikel entwickelt wurde, sodass Benutzer dieses Attribut während des Bestellvorgangs konfigurieren und erfassen können.

Erstellen und Hinzufügen des Attributs

  1. Fügen Sie einen Ereignisbeobachter zum Ereignis „catalog_product_load_after“ hinzu.
  2. Rufen Sie in der Beobachtermethode die ausgewählten Optionen aus dem Anforderungsparameter ab und speichern Sie sie als „additional_options“ im Produktmodell.

Beibehalten des Attributs in Bestellungen

  1. Fügen Sie einen Ereignisbeobachter zum Ereignis „sales_convert_quote_item_to_order_item“ hinzu.
  2. Kopieren Sie in der Beobachtermethode die „additional_options“ aus dem Angebot Artikel zum Bestellartikel hinzufügen.

Anzeige des Attributs

  1. Ändern Sie die getItemOptions-Methode in den relevanten Vorlagen (z. B. Katalog/Produkt/Ansicht/ type/default.phtml), um eine benutzerdefinierte Attributzeile hinzuzufügen.
  2. Erstellen Sie bei Bedarf eine Übersetzungslogik in einem quote_item_load_after- oder order_item_load_after-Ereignisbeobachter, um Übersetzungen zu verarbeiten.

Zusätzliche Überlegungen

  • Um Nachbestellungen zu ermöglichen, fügen Sie einen Beobachter zum checkout_cart_product_add_after-Ereignis hinzu, um die „additional_options“ in den neuen Angebotsartikel zu kopieren.
  • Auf diese Weise hinzugefügte benutzerdefinierte Attribute sind im Produkt nicht sichtbar Attribute oder Attributsätze.

Beispielcode

Catalog Product Load After Event Observer

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

Verkäufe konvertieren Angebotsartikel in Auftragsartikel-Ereignisbeobachter

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

Benutzerdefinierte Attributanzeige in Vorlage

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

Das obige ist der detaillierte Inhalt vonWie füge ich benutzerdefinierte Attribute zu Angeboten und Bestellungen in Magento hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn