0

我正在以编程方式将产品添加到购物车的操作中。是否可以在此步骤中设置一个固定数量,用户以后不能更改?

4

2 回答 2

1

您无法设置用户无法以某种方式操作的固定数量,但是您可以将其从用户视图中屏蔽。

有两种方法可以实现这一点,第一个选项是围绕它的非编码方式,但不会像第二个那样用户友好:

第一个选项:

转到产品后端-> 库存并将“购物车中允许的最大数量”设置为固定数量。您可以使用上面的答案来设置固定数量。

第二种选择:

如果没有,那么您可以修改 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() 拉取以进行区分。

做这两个选项将是您问题的完整解决方案。

于 2013-11-04T12:58:19.510 回答
0

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

于 2013-11-04T12:50:12.983 回答