仍在搜索?發現這個一個:
http://www.magentocommerce.com/boards/viewthread/9797
似乎在當前版本的工作,雖然我沒有測試它。如果你解決了它,至少將來的搜索者會知道在哪裏找到它!
/***編輯****/
好了,「不被認爲是一個貧窮的答案」,這個你應該如何實施解決方案。沒有任何代碼是我的工作,向Uni-Man,Nexus Rex和Magento論壇傢伙聲稱:)
該代碼已有詳細記錄。它在命名空間「Company」中創建一個名爲「Module」的完全Magento擴展。
首先,實現應用程序/代碼/本地/公司/模塊/幫手/ Data.php助手:
<?php
class Company_Module_Helper_Multiple extends Mage_Core_Helper_Url
{
/**
* Return url to add multiple items to the cart
* @return url
*/
public function getAddToCartUrl()
{
if ($currentCategory = Mage::registry('current_category')) {
$continueShoppingUrl = $currentCategory->getUrl();
} else {
$continueShoppingUrl = $this->_getUrl('*/*/*', array('_current'=>true));
}
$params = array(
Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED => Mage::helper('core')->urlEncode($continueShoppingUrl)
);
if ($this->_getRequest()->getModuleName() == 'checkout'
&& $this->_getRequest()->getControllerName() == 'cart') {
$params['in_cart'] = 1;
}
return $this->_getUrl('checkout/cart/addmultiple', $params);
}
}
接下來,你需要做一些模板變化。將文件app/design/base/default/templates/catalog/list.phtml複製到app/design/default/default/templates/catalog/list.phtml。這確保了,一旦不再需要擴展名,您/您的客戶端就可以返回到正常列表視圖而無需編碼。如下 修改新list.phtml文件:
後
<?php echo $this->getToolbarHtml(); ?>
添加
<form action="<?php echo $this->helper('Module/multiple')->getAddToCartUrl() ?>" method="post" id="product_addtocart_form">
<button class="form-button" onclick="productAddToCartForm.submit()"><span><?php echo $this->__('Add Items to Cart') ?></span></button>
(這將打開的形式,所有以下項目將增加輸入框的數量,所以你可以使用一個單獨的按鈕將所有物品放入購物車,這也放在這裏。)
向下滾動,你會發現這裏通常產生的「加入購物車」按鈕面積:
<?php if($_product->isSaleable()): ?>
更換,如果塊的與內容:
<fieldset class="add-to-cart-box">
<input type="hidden" name="products[]" value="<?php echo $_product->getId() ?>" />
<legend><?php echo $this->__('Add Items to Cart') ?></legend>
<span class="qty-box"><label for="qty<?php echo $_product->getId() ?>"><?php echo $this->__('Qty') ?>:</label>
<input name="qty<?php echo $_product->getId() ?>" type="text" class="input-text qty" id="qty<?php echo $_product->getId() ?>" maxlength="12" value="" /></span>
</fieldset>
這是數量的輸入字段。 要關閉 - 標籤,之後
<?php echo $this->getToolbarHtml() ?>
在底部插入:
<button class="form-button" onclick="productAddToCartForm.submit()"><span><?php echo $this->__('Add Items to Cart') ?></span></button>
</form>
你在這裏做什麼是: - 產生第二「加入購物車」 - 鍵,同樣用一個頂部 - 關閉表格
當一個項目被添加到購物車時,通常Magento會調用Checkout_CartController。我們必須修改這一個,以便不僅添加一個,而且所有物品都以適量的數量添加到購物車中。
因此,添加文件的應用程序/代碼/本地/公司/模塊/控制器/結帳/ CartController.php,並填寫在此:
> require_once 'Mage/Checkout/controllers/CartController.php';
>
> class Company_Module_Checkout_CartController extends
> Mage_Checkout_CartController {
> public function addmultipleAction()
> {
> $productIds = $this->getRequest()->getParam('products');
> if (!is_array($productIds)) {
> $this->_goBack();
> return;
> }
>
> foreach($productIds as $productId) {
> try {
> $qty = $this->getRequest()->getParam('qty' . $productId, 0);
> if ($qty <= 0) continue; // nothing to add
>
> $cart = $this->_getCart();
> $product = Mage::getModel('catalog/product')
> ->setStoreId(Mage::app()->getStore()->getId())
> ->load($productId)
> ->setConfiguredAttributes($this->getRequest()->getParam('super_attribute'))
> ->setGroupedProducts($this->getRequest()->getParam('super_group', array()));
> $eventArgs = array(
> 'product' => $product,
> 'qty' => $qty,
> 'additional_ids' => array(),
> 'request' => $this->getRequest(),
> 'response' => $this->getResponse(),
> );
>
> Mage::dispatchEvent('checkout_cart_before_add', $eventArgs);
>
> $cart->addProduct($product, $qty);
>
> Mage::dispatchEvent('checkout_cart_after_add', $eventArgs);
>
> $cart->save();
>
> Mage::dispatchEvent('checkout_cart_add_product', array('product'=>$product));
>
> $message = $this->__('%s was successfully added to your shopping cart.', $product->getName());
> Mage::getSingleton('checkout/session')->addSuccess($message);
> }
> catch (Mage_Core_Exception $e) {
> if (Mage::getSingleton('checkout/session')->getUseNotice(true)) {
> Mage::getSingleton('checkout/session')->addNotice($product->getName() . ': ' . $e->getMessage());
> }
> else {
> Mage::getSingleton('checkout/session')->addError($product->getName() . ': ' . $e->getMessage());
> }
> }
> catch (Exception $e) {
> Mage::getSingleton('checkout/session')->addException($e, $this->__('Can not add item to shopping cart'));
> }
> }
> $this->_goBack();
> } }
我們重寫與我們自己現有的法師核心類,導致我們的控制器用於此目的。
您還必須到模塊的config.xml添加像往常一樣在app /代碼/本地/公司/模塊的/ etc/config.xml文件:
<?xml version="1.0"?>
<config>
<modules>
<Company_Module>
<version>0.1.0</version>
</Company_Module>
</modules>
<global>
<rewrite>
<company_module_checkout_cart>
<from><![CDATA[#^/checkout/cart/addmultiple/.*$#]]></from>
<to>/module/checkout_cart/addmultiple/</to>
</company_module_checkout_cart>
</rewrite>
<helpers>
<Module>
<class>Company_Module_Helper</class>
</Module>
</helpers>
</global>
<frontend>
<routers>
<company_module>
<use>standard</use>
<args>
<module>Company_Module</module>
<frontName>module</frontName>
</args>
</company_module>
</routers>
</frontend>
</config>
這裏做的事情: - 取代來電購物車控制器呼叫自己的多點控制器 - 登記幫手 - 適用路由器前端
請告訴我,如果需要更多的文檔。
粘貼在/app/code/local/BD83/MassAddToCart/Helper/Data.php的第20行左右,以便我們可以看到一些上下文請 – 2011-05-31 09:15:43
感謝您的快速響應,即代碼: public function getButtonHtml (Mage_Catalog_Model_Product $ product) if($ product-> getId()&&!$ product-> getIsComposite()){ $ qtyBlock = Mage :: app() - > getLayout() - > getBlock('bd83 .massaddtocart.catalog.product.list.item.button'); $ qtyBlock-> setProduct($產品) - > setProductId($產品 - >的getId()) - > setMinQty(法師:: getStoreConfig(個體經營:: XML_PATH_MIN_QTY)) - > setDefaultQty(法師:: getStoreConfig(個體經營:: XML_PATH_DEFAULT_QTY)) - > setMaxQty(Mage :: getStoreConfig(self :: XML_PATH_MAX_QTY)); return $ qtyBlock-> toHtml(); } return''; } – Newbie 2011-05-31 09:25:32
請編輯你的問題的代碼和格式,以便它的可讀性:)並標記哪些是第20行。thx – 2011-05-31 09:40:38