#magento #configuration #magento-1.8
#magento #конфигурация #magento-1.8
Вопрос:
Я пытаюсь создать заказ программно.
Существуют настраиваемые продукты, имеющие один базовый атрибут, т.Е. Размер. и некоторые из настраиваемых продуктов имеют несколько (более одного) связанных продуктов с одинаковым значением размера.
Теперь, пытаясь добавить такой настраиваемый продукт с определенным размером. Но magento назначает родственный / дочерний / связанный продукт, который будет обнаружен первым! и, следовательно, для создания заказа был удален соответствующий SKU / sibling.
Я следовал коду из приведенных ниже ссылок:
http://www.blog.plazathemes.com/archives/2149
http://pravams.com/2011/11/11/magento-create-order-programmatically/
Есть ли какой-либо способ добавить продукт конфигурации с определенным артикулом? (что-то вроде приемлемых параметров в методе «addProduct» и т. Д.).
Ответ №1:
Я сталкиваюсь с аналогичной проблемой при добавлении настраиваемого продукта для создания заказа / предложения программно. При добавлении продукта необходимо указать super_attribute
в массиве параметров. Значение должно содержать атрибут, который различает связанные продукты (например, цвет, размер). Итак, это будет что-то вроде этого:
$buyOptions = array(
'qty' => 1,
'super_attribute' => array($attributeId => $attributeValue) //ex: array(131 => 53)
);
$quote->addProduct($product, new Varien_Object($buyOptions));
Я не знаю, как, если вы хотите выбрать связанный продукт по их артикулу, но приведенный выше код будет работать, если вы просто хотите выбрать конкретный связанный продукт из настраиваемого. Я считаю, что по сути это то же самое.
ps: Я отвечаю на это здесь, потому что в magento stackexchange он помечен как дубликат (я думаю, ошибочно).
Ответ №2:
Если у вас есть артикул дочернего элемента, вы можете сделать :
$_product = Mage::getModel('catalog/product')->loadByAttribute('sku', 'mysku-123');
Если у вас есть размер :
$childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null,$product);
foreach ($childProducts as $child) {
if ($child->getSize()==$size){
//add the product to the order
}
}
а затем вы вводите дочерние элементы, чтобы найти размер.
Комментарии:
1. Спасибо за ответ, но, к сожалению, то, что вы рассмотрели, не является решением, которое я ищу. : ( Подробнее см.: magento.stackexchange.com/questions/24593 /…