Ich habe versucht, ein Produkt mithilfe der folgenden Codezeilen programmgesteuert in den Warenkorb zu legen. Es scheint zu funktionieren und das Produkt erfolgreich hinzuzufügen. Aus irgendeinem Grund wird der Preis für neu hinzugefügte Produkte immer auf Null gesetzt. Wie kann ich dies verhindern und das Produkt zulassen? tatsächlicher Preis des Produkts, das für den Warenkorb festgelegt werden soll?
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once("app/Mage.php");
umask(0);
Mage::app('default');
function mres($value)
{
$search = array("\\", "\x00", "\n", "\r", "'", '"', "\x1a");
$replace = array("\\\\","\\0","\\n", "\\r", "\'", '\"', "\\Z");
return str_replace($search, $replace, $value);
}
echo "testing";
print_r($_POST);
$fname = mres( $_POST['fname'] );
$lname = mres( $_POST['lname'] );
$email = mres( $_POST['email'] );
$day = mres( $_POST['day'] );
$month = mres( $_POST['month'] );
$year = mres( $_POST['year'] );
$phone = mres( $_POST['phone'] );
$mobile = mres( $_POST['mobile'] );
$city = mres( $_POST['city'] );
$address = mres( $_POST['address'] );
$discount = mres( $_POST['discount'] );
$quantity = mres( $_POST['quantity'] );
$comments = mres( $_POST['comments'] );
$url = mres( $_POST['url'] );
$store = mres( $_POST['store'] );
$store_id = mres( $_POST['store_id'] );
$web_id = mres( $_POST['web_id'] );
$product_id = mres( $_POST['product_id'] );
$sku = mres( $_POST['sku'] );
setcookie('fname', $fname);
setcookie('lname', $lname);
setcookie('email', $email);
//setcookie('age', $age);
setcookie('phone', $phone);
setcookie('mobile', $mobile);
setcookie('city', $city);
setcookie('address', $address);
$customer = Mage::getModel('customer/customer');
//$customer = new Mage_Customer_Model_Customer();
$password = substr(str_shuffle(md5(time())),0,8);;
$customer->setWebsiteId(Mage::app()->getWebsite()->getId());
$customer->loadByEmail($email);
//Zend_Debug::dump($customer->debug());
$isNew = 0;
if(!$customer->getId()) {
$customer->setEmail($email);
$customer->setFirstname($fname);
$customer->setLastname($lname);
$customer->setPassword($password);
$isNew = 1;
}
try {
$customer->save();
$customer->setConfirmation(null);
$customer->save();
if($isNew)
{
$customer->sendNewAccountEmail();
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, "//sameurl.php");
curl_setopt($ch,CURLOPT_POST, count($_POST));
curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
}
Mage::getSingleton('customer/session')->loginById($customer->getId());
}
catch (Exception $ex) {
//Zend_Debug::dump($ex->getMessage());
}
//Build billing and shipping address for customer, for checkout
$_custom_address = array (
'firstname' => $fname,
'lastname' => $lname,
'street' => array (
'0' => $address,
'1' => '',
),
'city' => $city,
'region_id' => '',
'region' => '',
'postcode' => '0000',
'country_id' => 'PK',
'telephone' => $phone . '-' . $mobile,
);
//$customAddress = Mage::getModel('customer/address')
$customAddress = new Mage_Customer_Model_Address();
$customAddress->setData($_custom_address)
->setCustomerId($customer->getId())
->setIsDefaultBilling('1')
->setIsDefaultShipping('1')
->setSaveInAddressBook('1');
try {
$customAddress->save();
Zend_Debug::dump($customAddress->debug());
}
catch (Exception $ex) {
Zend_Debug::dump($ex->getMessage());
}
//Mage::getSingleton('checkout/session')->getQuote()->setBillingAddress(Mage::getSingleton('sales/quote_address')->importCustomerAddress($customAddress));
Mage::getSingleton('checkout/session')->getQuote()
->setBillingAddress(Mage::getSingleton('sales/quote_address')->importCustomerAddress($customAddress)) ->setShippingAddress(Mage::getSingleton('sales/quote_address')->importCustomerAddress($customAddress));
/*
$product = Mage::getModel('catalog/product')->getCollection()
->addAttributeToFilter('sku', $sku)
->addAttributeToSelect('*')
->getFirstItem();
$product->load($product_id);
$cart = Mage::getSingleton('checkout/cart');
$productInstance = Mage::getModel('catalog/product')->load($product_id);
$cart->truncate();
$cart->save();
$cart->getItems()->clear()->save();
try {
//$cart->addProduct($product, array('options'=> array('some-custom-option-id-here' => 'Some value goes here');
//$cart->addProduct($product, array('price' => 5000));
//$cart->addProduct($productInstance, $param);
//$cart->save();
$cart->init();
$cart->addProduct($product, array('qty' => $qty));
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
}
catch (Exception $ex) {
echo $ex->getMessage();
}
unset($product);
*/
$product = Mage::getModel('catalog/product')->getCollection()
->addAttributeToFilter('sku', $sku)
->addAttributeToSelect('*')
->getFirstItem();
$product->load($product_id);
$quote = Mage::getSingleton('checkout/session');
$quote->addProduct($product, $qty);
$quote->collectTotals()->save();
$storeId = $store_id;
$checkout = Mage::getSingleton('checkout/type_onepage');
$checkout->initCheckout();
$checkout->saveCheckoutMethod('register');
$checkout->saveShippingMethod('flatrate_flatrate');
$checkout->savePayment(array('method'=>'free'));
try {
$checkout->saveOrder();
}
catch (Exception $ex) {
echo $ex->getMessage();
}
/* Clear the cart */
$cart->truncate();
$cart->save();
$cart->getItems()->clear()->save();
/* Logout the customer you created */
Mage::getSingleton('customer/session')->logout();
?>
magento-1.8
product
php
cart
ehmad11
quelle
quelle
$product
definiert?Antworten:
Hier sind viele Dinge falsch und ich fühle mich gezwungen, eine Codeüberprüfung mit Ihnen durchzuführen. Siehe das Ende für den richtigen Ansatz.
Code-Review:
Diese Zeile lädt ein Produkt mit einer undefinierten $ sku var:
Jetzt laden Sie die $ product-Variable mit einem undefinierten Wert neu, geben ein leeres Modell oder null zurück.
Erhalten des Wagenmodells (aber nicht unbedingt meines aus meiner Kundensitzung):
Warten Sie - jetzt laden wir eine weitere Instanz eines leeren Objekts:
Den brandneuen Wagen räumen:
Speichern unseres leeren Wagens:
Alle Artikel in unseren leeren Warenkorb legen, löschen und erneut speichern:
Der richtige Weg:
Alles in allem macht dieser Code keinen Sinn. Bei einigen Google-Suchvorgängen wird der richtige Weg gefunden, um ein Produkt mit dem richtigen Preis in den Warenkorb des aktuellen Benutzers zu legen:
Wobei
$product
und$qty
beide definiert sind und$product
eine Instanz vonMage_Catalog_Model_Product
und$qty
eine Ganzzahl sind.quelle
$quote->collectTotals()->save();
speichere meine einmonatigen ArbeitenHier legen wir das Produkt mit einem externen Skript in den Warenkorb
Hinweis : - Hier ist 52 die einfache Produkt-ID und 4 der Mengenwert, den Sie durch Ihre Menge ersetzen können.
quelle
Ich hatte dieses Problem schon einmal. Bei meiner Aufgabe musste ich ein Produkt zu einem bestimmten Angebot hinzufügen. Der folgende Code hat mir dabei geholfen:
Hoffe das hilft dir in diesem Fall.
quelle
Hier ist die einfache Möglichkeit, ein Produkt zum Warenkorb / Angebot hinzuzufügen:
quelle
Hier ist der Arbeitscode zum Hinzufügen eines Produkts zum Warenkorb:
quelle