Magento网格视图数量框显示最小数量

时间:2013-02-13 00:32:10

标签: php magento

我想在网格类别视图中的添加到购物车按钮旁边有一个QTY框,其中包含产品最小数量。我已经尝试使用下面的代码,它的工作原理除了字段总是显示'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; ?>

1 个答案:

答案 0 :(得分: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。 在此数量文件夹下,创建以下两个文件夹,然后创建阻止。 (注意等等是小写的)

第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-&gt; getProductDefaultQty($ product)。您需要将验证产品传递给函数,或者您可以传入产品ID,然后在函数中加载产品

$product = Mage::getModel('catalog/product')->load($productId);