首先:我得到了 magento 的 mvc 和 php,但我并不完全了解它的“内置功能”可以做什么。
当用户选择我的 BOOK 可配置产品之一作为 epub 或 pdf 版本时,我正在研究一种将 QTY 限制为 1 的方法。如果选择不是“物理”,我正准备开始在主题中使用一些 jQuery voodoo 来隐藏 QTY 选项。我希望有人可能知道这样做的方法或以前有这样做的经验。
随意回答“在管理员中执行此操作”或“编写类似的代码”
谢谢
您可以通过编辑特定商品并转到“库存”选项卡来限制购物车中允许的商品数量。有两种设置:“购物车允许的最小数量”和“购物车允许的最大数量”。取消选中“允许的最大数量”的“使用配置设置”并将其设置为一个。
默认情况下,这两个都是“使用配置”,这意味着它也可以在系统 -> 配置 -> 库存选项卡中进行编辑。
下面是我如何在导入系统中实现它以遵循您的答案。所有未来的产品都将具有您所说的配置,而当前的产品将通过 jQuery 处理
catalogInventoryStockItemUpdateEntity stock;
if (this.deliveryType != DeliveryTypes.Simple)
{
stock = new catalogInventoryStockItemUpdateEntity
{
use_config_manage_stockSpecified = true,
use_config_manage_stock = 0,
manage_stockSpecified = true,
manage_stock = 0,
backorders = 0,
is_in_stockSpecified = true,
is_in_stock = 1,
use_config_max_sale_qtySpecified = true,
use_config_max_sale_qty = 0,
max_sale_qtySpecified = true,
max_sale_qty = 1
};
}
else
{
stock = new catalogInventoryStockItemUpdateEntity
{
manage_stockSpecified = true,
is_qty_decimal = 1,
is_qty_decimalSpecified = true,
qty = this.InventoryQuantity.ToString(CultureInfo.InvariantCulture),
backorders = 0,
is_in_stockSpecified = true,
is_in_stock = 1,
manage_stock = 1
};
}
return stock;
下面是我如何让前端看起来更好一点。我添加了一个小的淡入淡出效果,并且数量发生了变化并解释了它为什么会发生变化。我将以下内容插入到我的主题 /var/www/app/design/frontend/NKI/default/template/catalog/product/view.phtml
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('#attribute501').change(function() {
var x = jQuery(this).val();
// If its not a physical book
var qtyInput = jQuery('#theQty').find('#qty');
jQuery(qtyInput).val(1);
var qtyExplain = jQuery('#qtyExplain');
if (x) {
if (x != 3) {
jQuery(qtyExplain).fadeIn('slow');
jQuery(qtyInput).attr("disabled",true);
} else {
jQuery(qtyExplain).fadeOut('slow');
jQuery(qtyInput).attr("disabled",false);
}
} else {
jQuery(qtyExplain).fadeOut('slow');
jQuery(qtyInput).attr("disabled",false);
}
});
});
</script>
同样在 /var/www/app/design/frontend/NKI/default/template/catalog/product/view/addtocart.phtml 我把它改成了这个
<?php $_product = $this->getProduct() ?>
<?php if($_product->isSaleable()): ?>
<div class="add-to-cart" style="width: 365px">
<?php if(!$_product->isGrouped()): ?>
<div id="qtyExplain" style="display:none">
<p>Downloads are unlimited. Quantity is limited to one item.</p>
</div>
<div id="theQty" style="display: inline" >
<label for="qty"><?php echo $this->__('Qty:') ?></label>
<input type="text" name="qty" id="qty" maxlength="12" value="<?php echo $this->getMinimalQty($_product) ?>" title="<?php echo $this->__('Qty') ?>" class="input-text qty" />
</div>
<?php endif; ?>
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="productAddToCartForm.submit()"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
<?php echo $this->getChildHtml('', true, true) ?>
</div>
<?php endif; ?>
另外,对于购物车,我在第 154 行 /var/www/app/design/frontend/NKI/default/template/checkout/cart/item/default.phtml 附近的以下文件中添加了以下代码
<?php
if ($_item->getIsVirtual()): ?>
<span><?php echo $_item->getQty();?></span>
<?php else: ?>
<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" />
<?php endif; ?>