Comment ajouter des attributs personnalisés aux devis et commandes dans Magento ?

Patricia Arquette
Libérer: 2024-10-31 18:01:10
original
725 Les gens l'ont consulté

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

Magento - Ajout d'attributs de produit définis par l'utilisateur aux devis et aux commandes

Introduction

Magento propose une plate-forme personnalisable qui permet aux utilisateurs d'étendre ses fonctionnalités avec des attributs personnalisés. Ce guide montrera comment créer un attribut de produit spécialement conçu pour les articles de devis et de commande, permettant aux utilisateurs de configurer et de capturer cet attribut pendant le processus de paiement.

Création et ajout de l'attribut

  1. Ajoutez un observateur d'événement à l'événement catalog_product_load_after.
  2. Dans la méthode observateur, récupérez les options sélectionnées à partir du paramètre de requête et enregistrez-les en tant qu'options_additionnelles dans le modèle de produit.

Conserver l'attribut dans les commandes

  1. Ajouter un observateur d'événement à l'événement sales_convert_quote_item_to_order_item.
  2. Dans la méthode observateur, copiez les options supplémentaires du devis. article à l'article de commande.

Affichage de l'attribut

  1. Modifiez la méthode getItemOptions dans les modèles pertinents (par exemple, catalogue/produit/vue/ type/default.phtml) pour ajouter une ligne d'attribut personnalisée.
  2. Si nécessaire, créez une logique de traduction dans un observateur d'événement quote_item_load_after ou order_item_load_after pour gérer les traductions.

Considérations supplémentaires

  • Pour permettre les récommandes, ajoutez un observateur à l'événement checkout_cart_product_add_after pour copier les options supplémentaires dans le nouvel élément de devis.
  • Les attributs personnalisés ajoutés de cette manière ne sont pas visibles dans le produit. attributs ou ensembles d'attributs.

Exemple de code

Charge de produit du catalogue après observateur d'événement

<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>
Copier après la connexion

Ventes Convertir un article de devis en article de commande Observateur d'événement

<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>
Copier après la connexion

Affichage des attributs personnalisés dans le modèle

<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>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal