案例实战zencart1.38a支付模块简化Fast and Easy Checkout配置

zencart默认的支付功能是三步以上才能进入paypal等支付页面的,非常繁复,所以,有必要实现一个一页买单(one page checkout)的功能,现在,以我的成功经验,给大家讲一个成功的案例吧,绝对能弄好,如果有看不明白的可以找我,只要看完我的教程,一般是不会有问题了。

虽然可以修改checkout_shipping的内容实现了one page checkout的功能,但是一般的phper还是无从下手。例如,请看这个支付页面:

 

这是通过手工修改的zencart的支付模块,实现了one page checkout,但难点是Ajax和一些代码逻辑。

今天,我将在我们的网站www.dm800.eu上使用专门的模块实现这一功能,请先看效果:

以上是做好了的效果,www.dm800.eu我采用的是Fast and Easy Checkout模块,只需改动少数(前台显示css等)代码便可,其实不难。步骤和注意的地方如下:

前提条件:

软件我使用的是zencart 1.38a,Fast and Easy Checkout 1.93,都是免费的,php编辑器用的是Dreamweaver。整个测试通过,如果你的zencart版本不是1.38+,建议你安装前先备份好网站数据,以防万一,具体请看第一步。

第一步,网站数据和数据库备份,Fast and Easy Checkout会覆盖极个别includes或admin里的文件,比如admin里的order.php等,所以,如果你的网站改过了这些文件,就要备份后按需求改回来的。数据库则会在configuration和configuration_group增加记录而已。这一步是必要的,必须养成良好的习惯。

第二步,下载Fast and Easy Checkout 1.93,可以用google搜索:Fast and Easy Checkout 1.93 download,出来第一个就是啦,这是英文的,没有带中文等语言,呆会给大家讲语言包翻译。我用的下载地址是:http://www.numinix.com/fast-and-easy-checkout-for-zen-cart,点download now即可,不用放在购物车里面的。

第三步,解压缩Fast and Easy Checkout,对着required_files文件夹,查找所有叫YOUR_TEMPLATE,全部重命名为你的网站里对应的一个TEMPLATE名字,并且把required_files里的admin文件夹重命名为对应的你的管理文件夹名字。这一步用于最后覆盖用。

第四步,把includes\languages\english复制成你的语言目录名称,对应你网站的这个目录的几个语言,里面的php文件的define都要一一翻译过来,否则会只看到英文的,小技巧:这里的对应语言的TEMPLATE目录下login.php、logoff.php你的网站对应的上一级目录是有的,你可以参考一下,只要复制一份再把多出来的定义加上去就行。

第五步,进phpmyadmin,把install.sql里的内容复制了在zencart数据库上的SQL上运行一次,这时候,configuration约增加了23条记录和configuration_group增加了一条记录。当然,你也可以复制 install.sql 到 ADMIN->TOOLS->INSTALL SQL(也就是SQL运行器中进行运行)。这时候,管理后台的configuration菜单最后出现了Fast and Easy Checkout configuration,进去把第一个选项Fast and Easy Checkout改为true即可。你也可以改一下跳转到paypal时的字Checkout Confirmation Alternate Text,其他选项不需要改,数据库和后台配置成功。

第六步,现在把required_files里的文件全部覆盖到网站的主目录,打开你的网站,新的支付页面是否大体出来了?现在,美化一下页面的CSS等,如下:

进入required_files\includes\templates\(YOUR_TEMPLATE)目录,打开template里的tpl_checkout_default.php文件,找到这一行:

<?php include(DIR_WS_TEMPLATE . 'templates/tpl_checkout_stacked.php'); ?>

可以知道checkout的显示是另一个文件控制的。

打开tpl_checkout_stacked.php开始编辑,因为默认的页面显示顺序是先显示运输方式和支付方式的,不符合我们的习惯,我们要把显示顺序改一改,现在把<!--BOF SHIPPING-->前面的代码全部剪切到<fieldset class="checkout" id="checkoutComments">这一行前面。现在看看效果如何吧。

然后,打开CSS\checkout.css,我们可能要在最后增加些修改的显示样式,比如把id为checkoutShipto的宽度改为80%,把class为checkoutAddress的边框改为无,把class为gvBal的input框的文字上下对齐方式改为top,以及把class为cartTableHeading的背景颜色改为#dedede等。还有一些边距也需要调小一些,具体要和你的模板搭配好。现在刷新再看看效果吧。

第七步,由于www.dm800.eu是免运费的,每次要点击free shipping的checkbox,现在我要不这个按钮默认是选上的,所以在tpl_checkout_stacked.php代码最后增加以下代码:

1 <?php
2  //code:free shipping checked,power by www.dm800.eu
3  if($_SESSION['shipping']==null){ ?>
4  <script type="text/javascript" language="javascript"><!--//
5 updateForm();
6 //--></script>
7 <?php }

这几行代码是如果shipping没记录则使用jQuery初始化,调用updateForm()函数刷新,这时候加载的运输方式默认都会选上的。

第八步,把原来网站上includes\modules\order_total\ot_coupon.php,找到这一行:

$ratioTax = $adjustedTax/$order->info['tax'];

改为:

1 //$ratioTax = $adjustedTax/$order->info['tax'];
2 $ratioTax = (isset($order->info['tax']) && $order->info['tax'] != 0) ? $adjustedTax/$order->info['tax'] : 0;

这是zencart1.38+一个bug,第二行代码我是从1.39h复制过来的,优惠码加上去后报错是因为在后台没定义tax时,会有如下报错:

 

Warning: Division by zero in 。。。/public_html/includes/modules/order_total/ot_coupon.php on line 364

这时候,我们的Fast and Easy Checkout配置完毕。

其实,整个过程看上去很难,其实,做起来还是比较简单的,也就是小小的错误修复一下,Fast and Easy Checkout采用jQuery来刷新修改自己的地址,这是比较好的地方,还有其他功能比如Checkout Without Account  充许用户不注册购买等,适合做不同的网站需求。

posted on 2011-01-10 16:25  kuphp  阅读(2953)  评论(3编辑  收藏  举报

导航