Pregunta

De hecho, he tenido éxito en la creación de programación el producto empaquetado, y eso se nota en la administración correctamente, pero no se muestra en el front-end hasta que guardo desde dentro de la administración. Estoy intentando crear un gran número de productos en paquete, así que tener que ir en el admin y guardarlos de forma individual no es aceptable.

Aquí está mi código:

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>";
    }

Todo lo que se puede encontrar espectáculos que he creado y guardado el producto empaquetado correctamente, pero no se mostrará en la parte delantera hasta que la salvo a ella desde el extremo posterior. La indexación no hace nada, y el almacenamiento en caché está apagado.

¿Fue útil?

Solución

La respuesta fue muy simple: Sitio Web identificación fue cero y necesidad de ser 1

EDIT: Quería añadir a mi respuesta ya que la búsqueda de información para la automatización de productos en paquete que falta, y su la función de uno que todavía tiene que encontrar su propia plenitud su camino en Magmi.

Si usted está teniendo problemas con $product->save(); intento $product->getResource()->save($product);

Para actualizar mediante programación un producto empaquetado , de verificación este post para cargar los datos de paquetes de productos correctamente. A continuación, se puede comprobar si existe un producto empaquetado; a partir de ahí sólo es necesario para que coincida con sus títulos de opción al producto existente, y conseguir que las opciones de identificación con $option->getOptionId() para que no se crea un duplicado opción.

Actualización de cualquier otro atributo de su producto empaquetado (a excepción de los esquivos "Nave de los artículos Bundle" atributo) se pueden añadir a una matriz asociativa como lo haría un atributo para cualquier otro producto, y el uso $product->addData($data) Para actualizar sus atributos del producto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top