Dec*_*cor 1 magento configurable-product stock
我想知道是否有可能在可配置产品中获得所选项目的库存(即在下拉列表中).
例如,如果你有一件衬衫,有多个代表尺码的简单.当你选择小的时候,我想得到小衬衫的库存.如果您随后将选择更改为中等,我想获得中号衬衫的库存.
请注意,没有页面刷新.
小智 5
我做了类似的事情,我扩展了Mage_Catalog_Block_Product_View_Type_Configurable,特别是getJsonConfig()方法,因为它提供了可配置产品下拉列表的数据.
像这样的东西:
class Graphicalliance_Stockvalues_Block_Catalog_Product_View_Type_Configurable extends Mage_Catalog_Block_Product_View_Type_Configurable {
public function getJsonConfig()
{
$config = parent::getJsonConfig();
$config = Mage::helper('core')->jsonDecode($config);
foreach ($config['attributes'] as $attid=>$attinfo) {
foreach ($attinfo['options'] as $key=>$attoption) {
// get stock value per product
$stocks = array();
foreach ($attoption['products'] as $prod) {
$_product = Mage::getModel('catalog/product')->load($prod);
$_qty = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty();
$stocks[$prod] = (int) $_qty;
}
$config['attributes'][$attid]['options'][$key]['stock'] = $stocks;
}
}
return Mage::helper('core')->jsonEncode($config);
}
}
Run Code Online (Sandbox Code Playgroud)
这样可以确保您获得每个变体的前端库存值,因此您无需刷新页面.然后,您需要修改javascript处理程序,以便在选择大小/颜色时更新库存显示.
在js/varien.configurable.js中为Product prototpye对象添加一个函数,如下所示:
reloadStock: function(){
for(var i=this.settings.length-1;i>=0;i--){
var selected = this.settings[i].options[this.settings[i].selectedIndex];
if(selected.config){
var allowedProducts = selected.config.allowedProducts;
if (allowedProducts.length==1 && selected.config.stock) {
var productStock = parseInt(selected.config.stock[allowedProducts[0]]);
if (productStock==0) {
$('product-stock').innerHTML = 'out of stock';
} else if (productStock<=1) {
$('product-stock').innerHTML = productStock + ' in stock';
} else {
$('product-stock').innerHTML = '';
}
}
}
}
},
Run Code Online (Sandbox Code Playgroud)
请注意,您需要一个ID为'product-stock'的元素,其中显示了库存显示文本.
然后,您可以在必要时调用此函数,例如将其添加到同一文件中的configureElement函数中,如果我记得正确,则在页面加载时运行:
this.reloadStock();
Run Code Online (Sandbox Code Playgroud)
查看调用reloadPrice()的位置,它应该在它下面.
对这些代码示例进行了一些编辑,以删除与您的问题无关的位,因此希望它们在语法上仍然正确.
汉斯,很高兴进一步提供帮助
归档时间: |
|
查看次数: |
2073 次 |
最近记录: |