8

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]);
        }
    }
}
4

2 に答える 2

3

クーポン/バウチャー/配送

これらの3つのシステムブロックは、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; ?>&nbsp;
    <input type="text" name="coupon" value="<?php echo $coupon; ?>" />
    &nbsp;<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">&nbsp;<img src="catalog/view/theme/default/image/loading.gif" alt="" /></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" alt="" class="close" /></div>');
            }

            if (json['redirect']) {
                location = json['redirect'];
            }
        }
    });
});
//-->
</script>

つまり、これらのファイルがどこにどのように配置されているかということです。totalまた、コントローラーがありcoupon、他のすべてのモジュールはコントローラーと標準のMVC駆動型です。

外部クーポンカートフォーム

したがって、必要に応じて外部ページで使用するには、tplファイルと$modulesand$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>
于 2012-09-13T11:13:25.867 に答える
0

私はそれらのフォームをページに配置しようとしましたが、それらは私のために働いています。クーポン/バウチャーコードを入力すると、それらのコードが既に表示されているチェックアウトページに移動します。

于 2012-09-07T19:09:52.087 に答える