Получить простую цену продукта для настраиваемого продукта
-
16-10-2019 - |
Вопрос
У нас есть настраиваемый продукт, вызванный SKU Test, а под ним-простые продукты (например) Red-Ven1, Red-Ven2, Blue-Ven3 и т. Д. Сам настраиваемый продукт не имеет цены, но каждый простой продукт. Мне нужно получить цену для простого продукта на основе выбранных атрибутов. Так что мне нужна цена на красный продукт с поставщиком 2. Как мне получить эту конкретную цену? В настоящее время я пытаюсь динамически отобразить цену рядом с атрибутом поставщика (поэтому атрибут поставщика не выбран). Придется ли мне «невидимо» выбрать значение атрибута поставщика, чтобы получить цену? Пожалуйста, порекомендуйте.
В настоящее время пытается:
<?php $_product = $this->getProduct(); ?>
<?php $_price = $_taxHelper->getPrice($_product, $_product->getPrice()) ?>
<script>
var price = <?=$_price ?>;
/...lots of non-applicable code
for(var i=0; i < IDs.length; i++)//traversing the vendor detail nodes
{
//Invisibly make selection of vendor so as to gather correct price
var optionToSelect = $j('option', '#attribute136').filter(function() {
return $j(this).text().indexOf(data[i].vendor_id) != -1;
}).val();
var vals = $j('#attribute136').val() || [];
vals.push(optionToSelect);
$j('#attribute136').val(vals);
$j('.details'+data[i].vendor_id).append('<li class="priceBlock">$'+price+'</li>');
}
});
</script>
Решение
Есть два расширения, которые делают это для вас:
Простые настраиваемые продукты
http://www.magentocommerce.com/magento-connect/simple-configerawing-products.html
BCP - лучшие настраиваемые продукты
http://www.magentocommerce.com/magento-connect/better-configeraility-products.html
Другие советы
Проверьте следующую ссылку. Это помогает вам. В этом посте может получить идентификатор продукта выбранного простого продукта настраиваемого продукта. И используя этот простой идентификатор продукта, вы можете получить цену, QTY, SKU и т. Д.
Я сделал это в list.phtml
Анкет Это взлом, но он работает (и это бесплатно!)
<?php
foreach ($_productCollection as $_product):
$_modifiedProduct = $_product;
?>
<?php
if ($_product->isConfigurable()) {
$conf = Mage::getModel('catalog/product_type_configurable')->setProduct($_product);
$simple_collection = $conf->getUsedProductCollection()->addAttributeToSelect('*')->addFilterByRequiredOptions();
$appliedFilters = Mage::getSingleton('catalog/layer')->getState()->getFilters();
$itemArr = array();
foreach ($appliedFilters as $item) {
$itemArr[] = $item->getLabel();
}
$attributesToFilter = array();
foreach ($simple_collection as $simple_product) {
$productModel = Mage::getModel('catalog/product')->setProduct($simple_product);
$sizeAttr = $productModel->getResource()->getAttribute("size");
$qualityAttr = $productModel->getResource()->getAttribute("quality");
$attributesToFilter[] = $sizeAttrName = $sizeAttr->getSource()->getOptionText($simple_product->getSize());
$attributesToFilter[] = $qualityAttrName = $qualityAttr->getSource()->getOptionText($simple_product->getQuality());
sort($attributesToFilter);
sort($itemArr);
if ($attributesToFilter == $itemArr) {
$_modifiedProduct = $simple_product;
break(1);
}
unset($attributesToFilter);
}
}
// continue in foreach.
endforeach;
?>
Теперь вы можете показать цену как это:
<?php echo $this->getPriceHtml($_modifiedProduct, true) ?>