我想在网格类别视图中的添加到购物车按钮旁边有一个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; ?>
答案 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);