0

我想在网格类别视图中添加到购物车按钮旁边有一个数量框,其中包含产品最小数量。我尝试使用下面的代码,它可以工作,只是该字段始终显示“0”。

我怎样才能使该字段显示产品的最小数量而不仅仅是“0”。

这是我用来修改 list.phtml 文件的:

                        <?php if(!$_product->isGrouped()): ?>

                        <label for="qty"><?php echo $this->__('Qty:') ?></label>                                 
                                <input name="qty" type="text" class="input-text qty" id="qty" maxlength="12" value="<?php echo $this->getProductDefaultQty() * 1 ?>" title="<?php echo $this->__('Qty') ?>" class="input-text qty" />

                        <?php endif; ?>
4

1 回答 1

2

函数 getProductDefaultQty 仅在视图块上可用,在列表中不可用:(

您可以使用客户模块重写 Mage_Catalog_Block_Product_List 类,并将此函数包含在模块的类中。

为了这个答案,我将调用您的模块 Nat_Quantity (如果您愿意,可以更改它)

第 1 步:创建一个模块 xml

在 /app/etc/modules/ 下创建文件 Nat_Quantity.xml。它应该看起来像(注意 codePool 有一个大写的 P)。

<?xml version="1.0"?>
<config>
    <modules>
        <Nat_Quantity>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Catalog />
            </depends>
        </Nat_Quantity>
    </modules>
</config>

第 2 步:创建模块文件夹结构

在 /app/code/local/ 下创建文件夹 Nat,然后在其中创建文件夹 Quantity。在此 Quantity 文件夹下创建以下两个文件夹,etc 和 Block。(注意等是小写)

第 3 步:创建您的 config.xml

在 /app/code/local/Nat/Quantity/etc 下创建一个 config.xml 文件,该文件如下所示:

<?xml version="1.0"?>
<config>
    <modules>
        <Nat_Quantity>
            <version>1.0.0</version>
        </Nat_Quantity>
    </modules>
    <global>
        <blocks>
            <catalog>
                <rewrite>
                    <product_list>Nat_Quantity_Block_Product_List</product_list>
                </rewrite>
            </catalog>
        </blocks>
    </global>
</config>

第 3 步:创建您的区块

在 /app/code/local/Nat/Quantity/Block/Product 下创建一个 List.php,它看起来如下:

<?php
class Nat_Quantity_Block_Product_List extends Mage_Catalog_Block_Product_List {
    /**
     * Get default qty - either as preconfigured, or as 1.
     * Also restricts it by minimal qty.
     *
     * @param null|Mage_Catalog_Model_Product
     *
     * @return int|float
     */
    public function getProductDefaultQty($product)
    {
        $qty = $this->getMinimalQty($product);
        $config = $product->getPreconfiguredValues();
        $configQty = $config->getQty();
        if ($configQty > $qty) {
            $qty = $configQty;
        }

        return $qty;
    }
}

这应该允许您在列表模板中调用 $this->getProductDefaultQty($product)。您需要将验证产品传递给函数,或者您可以传递产品 ID,然后将产品加载到函数中

$product = Mage::getModel('catalog/product')->load($productId);
于 2013-02-13T08:13:09.917 回答