Frage

Wie kann ich die SKU eines Produkts auf der Produktseite dynamisch aktualisieren, wenn Benutzer seine benutzerdefinierten Optionen auswählen? Wie könnte es dann in die Wagenseite übergeben werden?

Beispiel: Ein Produkt mit SKU XXX verfügt über zwei benutzerdefinierte Optionen y und z, die die Optionen von Y1, Y2 und Z1, Z2 haben. Wenn ein Benutzer Y1 und Z2 auswählt, möchte ich die SKU auf der Seite in XXX-Y1-Z2 ändern und diese SKU an den Wagen übergeben.

Vielen Dank.

War es hilfreich?

Lösung

Wenn Sie einem Produkt, das Sie hinzufügen können, eine benutzerdefinierte Optionen hinzufügen, beispielsweise für Dropdown -Optionen ein Produkt -SKU -Suffix wie unten gezeigt.

enter image description here

Bei der Auswahl einer Option beim Hinzufügen des Produkts zum Karren und beim Abrufen des SKU im Karren var_dump($_item->getSku()); Sie können sehen, dass die Produkte SKU geändert wurden

enter image description here

Jetzt, um die SKU auf der Produktseite dynamisch zu aktualisieren. Dazu müssen wir die Optionwerte abrufen, die SKUs in der Datei erfolgen können app/design/frontend/[package]/[template]/template/catalog/product/view/options.phtml zum Beispiel. In diesem Fall um Zeile 190 nach dem JavaScript fügen/ersetzen wir einen Code, wie unten gezeigt. Auf diese Weise erhalten Sie ein JavaScript -Array, das Sie verwenden können, wenn eine benutzerdefinierte Option ausgewählt wird, um die Option -ID dem SKU -Suffix zuzuordnen und das angezeigte Produkt -SKU auf der Produktseite zu ändern.

<dl>
    <?php $options_to_sku = array();?>

    <?php foreach($_options as $_option): ?>
        <?php echo $this->getOptionHtml($_option) ?>
<?php
if ($_option->getType() == 'drop_down')
{
    $options_to_sku["{$_option->getId()}"] = array();
    foreach ($_option->getValues() as $k => $v) 
    {
        $options_to_sku["{$_option->getId()}"]["{$v->getData('option_type_id')}"] = $v->getData('sku');
    }
}
?>
    <?php endforeach; ?>
    </dl>
    <script type="text/javascript">
        var options_to_sku = <?php echo json_encode($options_to_sku);?>;

        $$('.product-custom-option').each(function(elm) {
            $(elm).observe('change', function() {
                var sku_suffix = '';
                $$('.product-custom-option').each(function(opt) {
                    if ($(opt).value.length==0) // no value selected
                        return;

                    var opt_id = $(opt).readAttribute('id').replace('select_','');

                    if (!!!options_to_sku[opt_id]) // no option values array found
                        return;

                    if (!!!options_to_sku[opt_id][$(opt).value]) // no sku found matching value id
                        return;

                    sku_suffix += '-' + options_to_sku[opt_id][$(opt).value]; // add to suffix
                });

                /**
                 * add here the code that adds the suffix to your SKU
                 */
                console.log(sku_suffix);
            });
        });
    </script>

Andere Tipps

Produktseite

Fügen Sie die SKU zur Produktseite hinzu, fügen Sie ein paar Zeilen von JS hinzu, hören Sie weiter change auf der <select> und ändern Sie die SKU.

Wagen

Einen Beobachter implementieren, hören Sie sich an checkout_cart_product_add_after Nehmen Sie das Produkt, überprüfen Sie die benutzerdefinierten Optionen und ändern Sie die SKU der quote_item. Das quote_item wird danach gespeichert, so dass es nicht im Controller speichern muss.

$quoteItem->setSku();

Fertig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top