Magento: Добавить "поддельный" продукт в корзину / цитату - PullRequest
5 голосов
/ 28 октября 2010

Я понимаю, как программно создать продукт, а также добавить в корзину. Я знаю, что это может звучать глупо, но возможно ли создать продукт на лету и добавить его в корзину / цитату, но никогда не сохранять в базе данных.

Мы хотим создать интерфейс на заказ, и я подумал, что в итоге он может добавить пакетный продукт со всеми вариантами, но этот пакетный продукт на самом деле не существует в бэкэнде.

Я подумал, что пока вы можете быть уверены, что в предложении и заказе есть то, что ему нужно с точки зрения продукта, все будет в порядке, но, очевидно, есть много вещей, которые связаны с поиском в базе данных по конкретному Sku или ID. Я знаю, что если вы удалите продукт, а затем посмотрите на порядок в админке, который вызывает проблемы, по крайней мере, он сделал это для одного сценария, с которым я имел дело.

Я думал о создании гигантского продукта в комплекте, который имел бы около 6 различных элементов пакета, и каждый элемент мог потенциально иметь около 500 продуктов, и затем на основе того, что выбрал пользователь, я программно добавляю пакет в корзину. Но тогда я не был уверен, будет ли негативное влияние иметь такой гигантский пакетный продукт.

UPDATE: Я не думаю, что это сработает, очевидно, в базе данных содержится много информации, связанной с продуктом, и мы настраиваем тест, и сразу же получаем ошибку для $ item-> getProduct (). Мы движемся вперед, создавая гигантский пакетный продукт, а также универсальный продукт с добавлением пользовательских параметров на лету, о чем Анда указала ниже. Будем весьма благодарны за любые другие предложения.

Ответы [ 4 ]

3 голосов
/ 29 октября 2010

Я не уверен, что подход часовщика сработает. При каждой загрузке страницы Magento загружает товары из корзины, чтобы убедиться, что они остаются действительными (на складе, цены корректны и т. Д.), И вносит изменения в корзину, чтобы отразить эти значения. Мое понимание системы в прошлом было то, что продукт в корзине должен иметь соответствующее значение базы данных, чтобы пережить этот процесс.

Подход "гигантский пакетный продукт" - это боль, но в прошлом это был лучший подход, который я нашел. Попытки изменить значения продукта (например, цену или атрибуты) будут отвергнуты проверками корзины, поэтому вам нужен продукт с максимальной гибкостью, например, чрезмерно настроенный пакетный продукт или настраиваемый продукт.

Надеюсь, это поможет!

Спасибо, Джо

3 голосов
/ 29 октября 2010

Почему бы не создать общий продукт в БД, а затем установить настройку продукта в качестве пользовательских параметров (дополнительные_опции) на лету в зависимости от выбора пользователя.Вы можете добавить пользовательские параметры к продукту (фактически к элементу цитаты), не сохраняя их в базе данных.Я сделал это один раз для сайта, который продает очки по рецепту.Рецепт был добавлен в качестве опции.

2 голосов
/ 29 октября 2010

Вы можете программно создать Mage_Sales_Model_Quote_Item с и добавить их в корзину. Вы заметили, что ему нужен продукт, соответствующий его идентификатору, но он не должен быть полезным. Это может быть пустой отключенный продукт, также созданный в коде. Все, что нужно, это заглушка.
Необходимые вещи для корзины хранятся в позиции цитаты - поля, такие как имя, стоимость и количество. Эти поля затем копируются непосредственно в заказ без использования продукта.

0 голосов
/ 02 сентября 2013
Mage::getModel('catalog/product') 

создает новый продукт.Вы можете добавить его в корзину, выполнив что-то вроде этого:

$cart = Mage::getSingleton('checkout/cart');
$product = Mage::getModel('catalog/product')
               ->setStoreId($storeid)
               ->setTypeId($type_id)
               ->setQty($quantyty)
               ->setWhatAttributYouWant($attribute);
$cart->addProduct($product);

атрибуты товара, которые вы можете найти в БД в таблицах, которые начинаются как catalog_product _... или взять уже созданный товар, и посмотреть, чтоатрибуты, которые он имеет в массиве _data (с отладчиком или просто print_r ($ product-> getData))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...