Magento doesn’t offer the ability to add custom prices when adding items to your cart. This is a solution I’ve used on occasion.
You can use an observer class to listen to checkout_cart_product_add_after
, and use a product’s “Super Mode” to set custom prices against the quote item.
In your /app/code/local/{namespace}/{yourmodule}/etc/config.xml:
<config> ... <frontend> ... <events> <checkout_cart_product_add_after> <observers> <unique_event_name> <class>{{modulename}}/observer</class> <method>modifyPrice</method> </unique_event_name> </observers> </checkout_cart_product_add_after> </events> ... </frontend> ... </config>
And then create an Observer class at /app/code/local/{namespace}/{yourmodule}/Model/Observer.php
<?php class <namespace>_<modulename>_Model_Observer { public function modifyPrice(Varien_Event_Observer $obs) { // Get the quote item $item = $obs->getQuoteItem(); // Ensure we have the parent item, if it has one $item = ( $item->getParentItem() ? $item->getParentItem() : $item ); // Load the custom price $price = $this->_getPriceByItem($item); // Set the custom price $item->setCustomPrice($price); $item->setOriginalCustomPrice($price); // Enable super mode on the product. $item->getProduct()->setIsSuperMode(true); } protected function _getPriceByItem(Mage_Sales_Model_Quote_Item $item) { $price; //use $item to determine your custom price. return $price; } }