从Magento产品视图中的可配置产品中获取所有简单产品

Den*_*nza 26 php magento

如何获得与可配置产品相​​关的所有简单产品?我发现如何做相反的事情(从简单的产品中获得可配置的产品),但这不是我需要的.

我想显示我所选产品的库存量(可配置属性).我最初的想法是打印所有数量的库存并使用jQuery控制显示.任何的想法?

小智 57

使用以下代码

用于获取完整产品信息的代码(其中3是可配置产品ID)

$product = Mage::getModel('catalog/product')->load(3); 
$childProducts = Mage::getModel('catalog/product_type_configurable')
                    ->getUsedProducts(null,$product);

foreach($childProducts as $child) {
    print_r($child->getName());  // You can use any of the magic get functions on this object to get the value
}
Run Code Online (Sandbox Code Playgroud)

另一个获得儿童产品ID的代码

$childProducts = Mage::getModel('catalog/product_type_configurable')
                    ->getChildrenIds(3);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!!


Abi*_*ain 18

可配置产品可以包含多个与之关联的其他产品.

以下是获取与可配置产品关联的所有子产品的代码.

这里是代码:)

/**
 * Load product by product id
 */
$product = Mage::getModel('catalog/product')->load(YOUR_PRODUCT_ID);

/**
 * Get child products id and such (only ids)
 */
$childIds = Mage::getModel('catalog/product_type_configurable')->getChildrenIds($product->getId());

/**
 * Get children products (all associated children products data)
 */
$childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null,$product);
Run Code Online (Sandbox Code Playgroud)

资料来源:http://blog.chapagain.com.np/magento-how-to-get-all-associated-children-product-of-a-configurable-product/

  • 请注意,您可以简单地执行此操作,而不是手动加载`product_type_configurable`模型:`$ product-> getTypeInstance() - > getChildrenIds()`或`$ product-> getTypeInstance() - > getUsedProducts()`. (4认同)

Har*_*dik 13

使用以下脚本

app/design/frontend/default/[your theme]/template/catalog/product/view/type/options/configurable.phtml

在脚本内:

spConfig.getIdOfSelectedProduct = function () {
    var existingProducts = new Object();
    for (var i = this.settings.length - 1; i >= 0; i--) {
        var selected = this.settings[i].options[this.settings[i].selectedIndex];
        if (selected.config) {
            for (var iproducts = 0; iproducts < selected.config.products.length; iproducts++) {
                var usedAsKey = selected.config.products[iproducts] + "";
                if (existingProducts[usedAsKey] == undefined) {
                    existingProducts[usedAsKey] = 1;
                } else {
                    existingProducts[usedAsKey] = existingProducts[usedAsKey] + 1;
                }
            }
        }
    }
    for (var keyValue in existingProducts) {
        for (var keyValueInner in existingProducts) {
            if (Number(existingProducts[keyValueInner]) < Number(existingProducts[keyValue])) {
                delete existingProducts[keyValueInner];
            }
        }
    }
    var sizeOfExistingProducts = 0;
    var currentSimpleProductId = "";
    for (var keyValue in existingProducts) {
        currentSimpleProductId = keyValue;
        sizeOfExistingProducts = sizeOfExistingProducts + 1
    }
    if (sizeOfExistingProducts == 1) {
        alert("Selected product is: " + currentSimpleProductId)
    }
}
Run Code Online (Sandbox Code Playgroud)

现在onchange,在同一页面的下拉列表中添加事件:

onchange = "spConfig.getIdOfSelectedProduct()"
Run Code Online (Sandbox Code Playgroud)

详细描述

  • 这不是PHP. (5认同)

Den*_*nza 5

我知道了.谢谢你的回复.

<?php if($_product->getTypeId() == "configurable"): ?>
    <?php $_configurable = $_product->getTypeInstance()->getUsedProductIds(); ?>
    <?php foreach ($_configurable as $_config): ?>
        <?php $_simpleproduct = Mage::getModel('catalog/product')->load($_config); ?>
        <?php //Magic php with a $_simpleproduct. ?>
    <?php endforeach; ?>
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)

  • 你不应该在循环中`load()` (12认同)