如何让外部页面优惠券/优惠券表格在 OpenCart 中工作?
Posted
技术标签:
【中文标题】如何让外部页面优惠券/优惠券表格在 OpenCart 中工作?【英文标题】:How do I get an external page coupon/voucher form to work in OpenCart? 【发布时间】:2012-08-30 03:03:24 【问题描述】:我的 OpenCart 环境中有另一个页面,比如说关于我们的页面,它有以下这些表格,假设用户在他们的购物车中有物品,这些表格应该可以工作,但它们不能:
在此处输入您的优惠券代码:
<form action="index.php?route=checkout/cart" method="post" enctype="multipart/form-data" id="basket">
<input type="text" value="" id="coupon" name="coupon"/>
<input type="hidden" value="coupon" name="next"/>
<input type="submit" class="button" value="Apply Coupon"/>
</form>
在此处输入您的礼券代码:
<form action="index.php?route=checkout/cart" method="post" enctype="multipart/form-data" id="basket">
<input type="text" value="" name="voucher"/>
<input type="hidden" value="voucher" name="next"/>
<input type="submit" class="button" value="Apply Voucher"/>
</form>
这是用于优惠券代码系统但不起作用(此代码默认未编辑):
/catalog/controller/checkout/cart.php
// VOUCHER
// IF THE USER HAS ENTERED A VOUCHER
if (isset($this->request->post['voucher']) && $this->request->post['voucher'])
foreach ($this->request->post['voucher'] as $key)
if (isset($this->session->data['vouchers'][$key]))
unset($this->session->data['vouchers'][$key]);
【问题讨论】:
php 代码没有做任何事情...只是取消设置凭证代码。请发布整个 cart.php 文件或链接到它。 您是否添加了一个快速模具('here'),以便您知道它是否甚至达到了这个 IF 语句。如果您发布您正在使用的旧版本的 opencart 也会有所帮助。 【参考方案1】:优惠券/代金券/运费
这三个系统块是 OpenCart 中的模块。它们循环在一起,您可以编辑文件,例如将一些空白或使用if/else
语句仅显示某些模块。
您不能在cart.tpl
中调用表单本身,它必须是:
<div class="right">
<!-- eVoucher System -->
<?php foreach ($modules as $module) ?>
<?=$module?>
<?php ?>
<!-- eVoucher System -->
</div>
运输/凭证和优惠券模块的文件位置
这将循环显示模块 tpl 文件、运输、优惠券和凭证。他们的位置很奇怪
/catalog/view/theme/default/total/coupon.tpl
/catalog/view/theme/default/total/shipping.tpl
/catalog/view/theme/default/total/voucher.tpl
我们不会全部使用它们,因此我们已经取消了凭证和运输。优惠券形式如下:
<div>
<div class="cart-heading"><?php echo $heading_title; ?></div>
<div class="cart-content" id="coupon"><?php echo $entry_coupon; ?>
<input type="text" name="coupon" value="<?php echo $coupon; ?>" />
<a id="button-coupon" class="button"><span><?php echo $button_coupon; ?></span></a></div>
</div>
<script type="text/javascript">
<!--
//
// jQuery dependent based on .post so make sure
// your footer or header jQuery call is before this
//
$('#button-coupon').bind('click', function()
$.ajax(
type: 'POST',
url: 'index.php?route=total/coupon/calculate',
data: $('#coupon :input'),
dataType: 'json',
beforeSend: function()
$('.success, .warning').remove();
$('#button-coupon').attr('disabled', true);
$('#button-coupon').after('<span class="wait"> <img src="catalog/view/theme/default/image/loading.gif" /></span>');
,
complete: function()
$('#button-coupon').attr('disabled', false);
$('.wait').remove();
,
success: function(json)
if (json['error'])
$('#basket').before('<div class="warning">' + json['error'] + '<img src="catalog/view/theme/default/image/close.png" class="close" /></div>');
if (json['redirect'])
location = json['redirect'];
);
);
//-->
</script>
这就是这些文件的位置和方式,total
也有一个控制器,coupon
和所有其他模块都是控制器和标准 MVC 驱动的。
外部优惠券购物车表格
因此,如您所愿在外部页面上使用,提取 tpl 文件和 $modules
和 $module
循环,代码应为:
(在 SEO URI 的情况下确保“斜线”index.php)
当然,例如,在您的关于我们页面上:
<strong>Please enter your coupon:</strong>
<form action="/index.php?route=total/coupon/calculate" method="post" enctype="multipart/form-data" id="basket">
<input type="text" value="" id="coupon" name="coupon"/>
<input type="hidden" value="coupon" name="next"/>
<input type="submit" class="button" value="Apply Coupon"/>
</form>
【讨论】:
我可以制作一个外部表单,但使用 index.php?route=total/coupon/calculate 函数而不是将其放在购物车上吗? +1 虽然.. 非常感谢。我尝试了很长时间,我们甚至将购物车流程更改为几乎回到原始 OpenCart 代码。【参考方案2】:我尝试将这些表单放在页面上,它们对我有用。输入优惠券/优惠券代码会将我带到结帐页面,这些代码已经为我准备好了。
【讨论】:
这如何归类为答案?以上是关于如何让外部页面优惠券/优惠券表格在 OpenCart 中工作?的主要内容,如果未能解决你的问题,请参考以下文章
php 如果购物车中有存款产品,请从购物车和结帐页面隐藏优惠券表格
在 WooCommerce 结帐的付款部分之前移动优惠券表格