函数 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);