Frage

Ich habe das gebündelte Produkt programmatisch erfolgreich erstellt, und es wird im Administrator korrekt angezeigt, zeigt aber erst im Front-End, wenn ich im Administrator speichere. Ich versuche, eine große Anzahl von gebündelten Produkten zu erstellen, daher ist nicht akzeptabel, in den Administrator zu gehen und sie einzeln zu speichern.

Hier ist mein Code:

foreach($productRow as $product){

$data = array(

    'attribute_set_id' => 64, //MANUALLY SET

    'sku_type'                              => 0, //0 = dynamic, 1 = fixed
    'sku'                                   => $product['INVENTORY_PARTNUMBER']."B",
    'name'                                  => $product['INVENTORY_ITEMNAME'],
    'description'                           => $product['WEB_DESCRIPTION'],
    'short_description'                     => $product['WEB_DESCRIPTION'],
    'type_id'                               => 'bundle',
    'entity_type_id'                        => 4,
    'weight_type'                           => 0, //0 = dynamic, 1 = fixed
    'visibility'                            => 4,
    'price_type'                            => 0, //0 = dynamic, 1 = fixed
    'price_view'                            => 1, //0 = as low as, 1 = price range <---- DOES NOT SEEM TO HAVE ANY EFFECT
    'status'                                => 1,
    'created_at'                            => strtotime('now'),
    'category_ids'                          => $cats,
    'store_id'                              => $storeID,
    'website_ids'                           => $websiteIDs,
    'freightquote_height'                   => '36',
    'freightquote_width'                    => '36',
    'freightquote_length'                   => '36',

    'freightquote_nmfc'                     => 0,
    'freightquote_commodity'                => 'GeneralMerchandise',
    'freightquote_content'                  => 'NewCommercialGoods',
    'freightquote_hzmt'                     => 0,
    'freightquote_enable'                   => 0,
);

$productCheck = Mage::getModel('catalog/product');

    $productCheck->setData($data);
    Mage::register('product', $productCheck);
    Mage::register('current_product', $product);

    $productCheck->setStockData(array(
        'is_in_stock' => 1,
        'qty' => 1
    ));
    $productCheck->setPriceView(1);

    $optionRawData = array();
    $selectionRawData = array();

    $i = 0;

    /**
     * Turning the SKU into an "option" so that
     * it can be added to the bundle
     */
    $product['INVENTORY_PARTNUMBER'] = $product['INVENTORY_PARTNUMBER'].", the sku";

    foreach ($options as $option => $name){

        if(isset($product[$option])){
            $optionRawData[$i] = array(
                'required' => 0,
                'option_id' => '',
                'position' => $i,
                'type' => 'radio',
                'title' => $name,
                'default_title' => $name,
                'delete' => '',
            );

            $partsArray = explode ("|", $product[$option]);


            foreach ($partsArray as $pn){

                    $product_id = Mage::getModel("catalog/product")->getIdBySku($pn);

                        $selectionRawData[$i][] = array(
                            'product_id' => $product_id,
                            'selection_qty' => 1,
                            'selection_can_change_qty' => 0,
                            'position' => $i2,
                            'is_default' => 0,
                            'selection_id' => '',
                            'selection_price_type' => 0,
                            'selection_price_value' => 0.0,
                            'option_id' => '',
                            'delete' => ''
                        );

                    $i2++;
            }
            $i++;
        }

    }

    $productCheck->setCanSaveConfigurableAttributes(false);
    $productCheck->setCanSaveCustomOptions(false);

    // Set the Bundle Options & Selection Data
    $productCheck->setBundleOptionsData($optionRawData);
    $productCheck->setBundleSelectionsData($selectionRawData);
    $productCheck->setCanSaveBundleSelections(true);
    $productCheck->setAffectBundleProductSelections(true);

    try {
        $productCheck->save();
    }
    catch(exception $e) {
        echo "<pre>";
        print_r($e);
        echo "</pre>";
    }

Alles, was ich finden kann, zeigt, dass ich das gebündelte Produkt korrekt erstellt und gespeichert habe, aber es wird nicht im vorderen Ende angezeigt, bis ich es vom hinteren Ende speichere. Die Indexierung tut nichts und das Caching ist aus.

War es hilfreich?

Lösung

Die Antwort war ziemlich einfach: Die Website -ID war Null und muss 1 sein

Bearbeiten: wollte zu meiner Antwort hinzufügen, da es fehlt, Informationen zur Automatisierung von gebündelten Produkten zu finden, und es ist die einzige Funktion, die noch nicht vollständig in Magmi gelangt ist.

Wenn Sie Probleme haben mit $product->save(); Versuchen $product->getResource()->save($product);

Programmatisch ein gebündeltes Produkt aktualisieren, überprüfen dieser Beitrag So korrekt die gebündelten Produktdaten laden. Anschließend können Sie überprüfen, ob ein gebündeltes Produkt existiert. Von dort aus müssen Sie nur Ihre Optionstitel mit dem vorhandenen Produkt anpassen und diese Options -ID mit erhalten $option->getOptionId() Damit Sie keine doppelte Option erstellen.

Das Aktualisieren eines anderen Attributs Ihres gebündelten Produkts (mit Ausnahme des schwer fassbaren Attributs "Schiffbündelelemente") kann einem assoziativen Array wie ein Attribut für jedes andere Produkt hinzugefügt und verwendet werden und verwenden $product->addData($data) So aktualisieren Sie Ihre Produktattribute.

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