我正在以编程方式将产品添加到购物车的操作中。是否可以在此步骤中设置一个固定数量,用户以后不能更改?
2 回答
您无法设置用户无法以某种方式操作的固定数量,但是您可以将其从用户视图中屏蔽。
有两种方法可以实现这一点,第一个选项是围绕它的非编码方式,但不会像第二个那样用户友好:
第一个选项:
转到产品后端-> 库存并将“购物车中允许的最大数量”设置为固定数量。您可以使用上面的答案来设置固定数量。
第二种选择:
如果没有,那么您可以修改 default.phtml(购物车项目渲染)以防止渲染数量调整字段。您可以在这里使用任何东西来定义产品,您可以附加一些自定义选项来识别产品。
您正在寻找以下内容:
<input name="cart[<?php echo $_item->getId() ?>][qty]" value="<?php echo $this->getQty() ?>" size="4" title="<?php echo $this->__('Qty') ?>" class="input-text qty" maxlength="12" />
将其包装在 if else 语句中,以区分您以编程方式添加的产品(例如,您可以使用 Sku、产品 ID 或自定义选项)。而不是渲染输入字段,只渲染一个静态 1 而不是修改数量的选项。
您还可以向报价项添加一个选项,然后通过 getOptionByCode() 拉取以进行区分。
做这两个选项将是您问题的完整解决方案。
Yes.
public function addAction()
{
if (!$this->_validateFormKey()) {
$this->_goBack();
return;
}
$cart = $this->_getCart();
$params = $this->getRequest()->getParams();
try {
if (isset($params['qty'])) {
$filter = new Zend_Filter_LocalizedToNormalized(
array('locale' => Mage::app()->getLocale()->getLocaleCode())
);
$params['qty'] = $filter->filter($params['qty']);
}
As you can see, in your CartController you have add action. The code above shows that this controller expects a param called "qty", that you can use.
I'm using magento1.8