php - pricing - magento tutorial
¿Cómo agregar programáticamente un producto con opciones personalizadas al carro en Magento? (3)
He hecho el código a continuación para obtener una opción personalizada. Puede ser que lo ayude a establecer una opción personalizada:
<?php
$productSku = "330471";
$product = Mage::getModel(''catalog/product'');
$productId = $product->getIdBySku( $productSku );
$product->load($productId);
if ($product->getId()) {
if ($product->hasCustomOptions()) {
foreach ($product->getOptions() as $o) {
$optionType = $o->getType();
Mage::log("Option Type = $optionType;");
if ($optionType == ''drop_down'') {
$values = $o->getValues();
Mage::log("List of Drop down Custom Options:-");
foreach ($values as $k => $v) {
Mage::log("Array Key = $k;");
Mage::log("Array Values:-");
Mage::log($v);
}
}
else {
Mage::log("List of General Custom Options:-");
Mage::log($o);
}
}
}
}
else {
Mage::log(''This Product does not exist.'');
}
$product = Mage::getModel("catalog/product")->load(939); //product id 1
$i = 1;
echo "<pre>";
foreach ($product->getOptions() as $o) {
echo "<strong>Custom Option:" . $i . "</strong><br/>";
echo "Custom Option TITLE: " . $o->getTitle() . "<br/>"; //Colors
echo "Custom Option TYPE: " . $o->getType() . "<br/>"; //drop_down
echo "Custom Option Values: <br/>";
$values = $o->getValues();
foreach ($values as $v) {
print_r($v->getData());
}
$i++;
echo "<br/>";
}
?>
Se requerirán opciones personalizadas y es un tipo desplegable: el título es el precio de la donación es un tipo de precio fijo
En este momento, está agregando ese producto al carro pero sin opciones personalizadas. Aquí hay una captura de pantalla de opciones personalizadas.
$id = ''67''; // Replace id with your product id
$qty = ''1''; // Replace qty with your qty
$_product = Mage::getModel(''catalog/product'')->load($id);
$cart = Mage::getModel(''checkout/cart'');
$cart->init();
$params = array(
''product''=>$id,
''qty'' => $qty,
''options'' => array (
183 => array(
array(
''price''=> 1.00,
''title''=>''$1.00 Donation'',
''price_type'' => ''fixed'',
''sku'' => '''',
''sort_order'' => 10
)
)
)
);
$request = new Varien_Object();
$request->setData($params);
$cart->addProduct($_product, $request );
$cart->save();
Mage::getSingleton(''checkout/session'')->setCartWasUpdated(true);
Qué hay en ese volcado variable de producto
[_resourceName:protected] => catalog/product_option_value
[_resource:protected] =>
[_resourceCollectionName:protected] => catalog/product_option_value_collection
[_cacheTag:protected] =>
[_dataSaveAllowed:protected] => 1
[_isObjectNew:protected] =>
[_data:protected] => Array
(
[option_type_id] => 641
[option_id] => 183
[sku] =>
[sort_order] => 10
[default_title] => $1.00 Donation
[store_title] =>
[title] => $1.00 Donation
[default_price] => 1.0000
[default_price_type] => fixed
[store_price] =>
[store_price_type] =>
[price] => 1.0000
[price_type] => fixed
prueba el siguiente código con tu código
$params = array(
''product'' => 164,
''related_product'' => null,
''bundle_option'' => array(
21 => 58,
20 => 55,
11 => 28,
12 => array(
0 => 31,
),
13 => array(
0 => 32,
1 => 35,
),
),
''options'' => array(
3 => ''olaaaaaaaa'',
),
''qty'' => 2,
);
$cart = Mage::getSingleton(''checkout/cart'');
$product = new Mage_Catalog_Model_Product();
$product->load(164);
$cart->addProduct($product, $params);
$cart->save();
Mage::getSingleton(''checkout/session'')->setCartWasUpdated(true);
$message = $this->__(''Custom message: %s was successfully added to your shopping cart.'', $product->getName());
Mage::getSingleton(''checkout/session'')->addSuccess($message);
$params = array(
''product'' => 164,
''qty'' => 2,
);
$cart = Mage::getSingleton(''checkout/cart'');
$product = new Mage_Catalog_Model_Product();
$product->load(164);
$cart->addProduct($product, $params);
$cart->save();
Mage::getSingleton(''checkout/session'')->setCartWasUpdated(true);
$message = $this->__(''Custom message: %s was successfully added to your shopping cart.'', $product->getName());
Mage::getSingleton(''checkout/session'')->addSuccess($message);
Avísame si tienes alguna consulta
Si ya tiene una identificación de cotización, entonces la usó
abajo..
Para obtener la identificación de la opción y el valor de la opción, consulte este enlace: Magento - Obtenga opciones de productos de $ item
Aquí debe buscar el valor de la opción desplegable del producto. Si necesita crear una nueva cotización, utilice la opción Agregar a continuación.
$QuoteId= Mage::getModel(''checkout/cart_api'')->create(''default'');
Aquí el default
es store code
. SI ya tiene una identificación de cotización, entonces no necesita agregar el código superior
$arrProducts = array(
array(
"product_id" => $productId,
"qty" => 5,
"options" => array(
$optionId => $optinValueId
)
)
);
Mage::getModel(''checkout/cart_product_api'')->add($QuoteId,$arrProducts,$storeId);