[php] Программно добавить товар в корзину с изменением цены


Answers

Magento изменил способ расчета цен в корзине, что делает это очень трудным для этого в версии 1.4. Если вы установите цену с помощью Observer или другого устройства, то почти наверняка будет перезаписано обратно по каталогу.

Чтобы реализовать это, вам необходимо использовать правила корзины покупок.

Question

Я хочу добавить продукт в корзину программно. Кроме того, я хочу изменить цену продукта при добавлении в корзину.

Предположим, цена моего продукта составляет 100 долларов. Я хотел изменить его до 90 долларов, когда его добавили в корзину.

Я добавил товар в корзину. Однако, я не могу изменить цену продукта.

Является ли это возможным?

Вот код для добавления товара в корзину: -

$cart = Mage::getSingleton('checkout/cart');

try {   
    $cart->addProduct($product, array('qty' => 1));
    $cart->save();
}
catch (Exception $ex) {
    echo $ex->getMessage();
}



У меня была такая же проблема, и я не разработчик. Что я сделал, был добавлен новый атрибут цены в magento backend, называемый «цена сайта». На странице продукта это показало более высокую цену в 100 долларов. фактическая цена товара составила 90 долларов США. поэтому, когда покупатель добавляет его в корзину, он увидит фактическую цену товара, но на странице продукта они видят цену пользовательского атрибута в размере 100 долларов США

если все ваши цены на странице продукта установлены на% выше, чем реальная цена, просто умножьте свою цену на 1%. Так что если вы хотите добавить 10% ко всем вашим ценам, то цена * 1.1. Это покажет вашу цену как 10% выше, но когда покупатель добавит в корзину, они увидят реальную цену.




Ответ Джонатана, вероятно, лучший для большинства ситуаций. Но некоторым клиентам может не понравиться, как скидки корзины отображаются в корзине. Недавно я сделал проект (с Magento 1.3.3), когда клиенту не нравилось, как каждая позиция все еще показывала полную цену, а также промежуточный итог, со скидкой ниже подытожки - он хотел увидеть цену каждый предмет со скидкой, а промежуточный итог также показывает скидку. Ему действительно не понравилось, что линия «Скидка» после линии «Итого».

В любом случае, если вы окажетесь в одной лодке, один из подходов - переопределить методы getCalculationPrice () и getBaseCalculationPrice () в Mage_Sales_Model_Quote_Address_Item и Mage_Sales_Model_Quote_Item. Я знаю, что не всегда красиво переопределять, гораздо лучше использовать события, но в этом случае я не мог заставить события работать без проблем как на интерфейсе, так и на бэкэнд. Не уверен, что этот подход будет работать в Magento 1.4+.




Related



Tags

php php   magento