使 'Add to Cart' 成为 link,而不是按钮
Make 'Add to Cart' a link, instead of a button
在category.tpl我改了:
<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
至:
<a href="index.php?route=checkout/cart/add&product_id=<?php echo $product['product_id']; ?>&quantity=<?php echo $product['minimum']; ?>" method="get"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></a>
点击添加到购物车现在加载页面背景,只有:
[ ]
作为内容。
我正在尝试制作一个 'shareable' link,当复制(例如,进入时事通讯)时单击 link 会自动将商品添加到您的购物车。
如有任何关于如何实现这一目标的建议,我们将不胜感激!
保持 link href 为空,并从按钮中获取 onclick 事件。不过我必须问,为什么不按照您的意愿简单地设置按钮样式?
cart.add('<?php echo $product['product_id']; ?>
是 javascript
function
,它使用 ajax
和 POST
方法将产品发送到购物车。
如果你想用 link 来做到这一点,那么你需要使用 GET
.
1) 在 category.tpl
中,而不是:
<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
使用:
<a href="index.php?route=checkout/cart/addToCart&product_id=<?php echo $product['product_id']; ?>"><?php echo $button_cart; ?></a>
2) 打开这个文件:
catalog/controller/checkout/cart.php
这是与 GET
一起使用的新 function
,将其添加到此文件中:
public function addToCart() {
$this->load->language('checkout/cart');
if (isset($this->request->get['product_id'])) {
$product_id = (int)$this->request->get['product_id'];
} else {
$product_id = 0;
}
$this->load->model('catalog/product');
$product_info = $this->model_catalog_product->getProduct($product_id);
if ($product_info) {
$this->cart->add($product_id);
// Display success message
$this->session->data['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'));
//redirect to cart page
$this->response->redirect($this->url->link('checkout/cart'));
}
}
这会将产品发送到购物车,虽然这是一个简单的功能,添加数量 = 1 的产品并且不检查产品选项,但就是这样,您可以根据需要进行修改。
现在您可以在任何地方共享产品的添加到购物车 link。 (在最新版本 2.3.0.2 上测试)
在category.tpl我改了:
<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
至:
<a href="index.php?route=checkout/cart/add&product_id=<?php echo $product['product_id']; ?>&quantity=<?php echo $product['minimum']; ?>" method="get"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></a>
点击添加到购物车现在加载页面背景,只有:
[ ]
作为内容。
我正在尝试制作一个 'shareable' link,当复制(例如,进入时事通讯)时单击 link 会自动将商品添加到您的购物车。
如有任何关于如何实现这一目标的建议,我们将不胜感激!
保持 link href 为空,并从按钮中获取 onclick 事件。不过我必须问,为什么不按照您的意愿简单地设置按钮样式?
cart.add('<?php echo $product['product_id']; ?>
是 javascript
function
,它使用 ajax
和 POST
方法将产品发送到购物车。
如果你想用 link 来做到这一点,那么你需要使用 GET
.
1) 在 category.tpl
中,而不是:
<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
使用:
<a href="index.php?route=checkout/cart/addToCart&product_id=<?php echo $product['product_id']; ?>"><?php echo $button_cart; ?></a>
2) 打开这个文件:
catalog/controller/checkout/cart.php
这是与 GET
一起使用的新 function
,将其添加到此文件中:
public function addToCart() {
$this->load->language('checkout/cart');
if (isset($this->request->get['product_id'])) {
$product_id = (int)$this->request->get['product_id'];
} else {
$product_id = 0;
}
$this->load->model('catalog/product');
$product_info = $this->model_catalog_product->getProduct($product_id);
if ($product_info) {
$this->cart->add($product_id);
// Display success message
$this->session->data['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'));
//redirect to cart page
$this->response->redirect($this->url->link('checkout/cart'));
}
}
这会将产品发送到购物车,虽然这是一个简单的功能,添加数量 = 1 的产品并且不检查产品选项,但就是这样,您可以根据需要进行修改。
现在您可以在任何地方共享产品的添加到购物车 link。 (在最新版本 2.3.0.2 上测试)