对iWebShop测试的一些技巧和心得分享2

6.伪静态后台登录不显示验证码、后台菜单消失等问题。 
问  题:伪静态后,登录后台没有验证码,刷新无数次也无效,登录之后后台菜单消失的问题。 
解决方法:在确定主机支持伪静态和排除了错误日志占用完整个主机空间的原因后,删除/runtime下面的所有文件,是最有效的办法。 
具体步骤:用FTP软件打开站点的/runtime/目录,删除所有文件,若问题依旧,尝试修改/config/config.php文件中的'safe' => ......代码,将其改为'safe' => 'session',问题解决。 


7.帮助中心默认关闭状态 
问  题:帮助中心默认展开,虽然极为方便,但对于小分辨率显示器的用户来说,遮挡了主页内容,而且对于我这样有强迫症的人,不喜欢一个大框在那飘来飘去的。 
解决方法:修改帮助中心的默认状态,将其改为折叠状态,这个文件中含有注释,很方便找到其中一些参数的设置,如修改初始状态,修改颜色风格、修改大小等。 
具体步骤:打开/plugins/sonline/js/jquery.Sonline.js文件,在第31行左右找到,DefaultsOpen:true,将其改为DefaultsOpen:false,问题解决。 



8.用户付款成功等关键信息发送提示问题。 
问  题:当网站运营后,不可能整天都呆在电脑前刷新后台吧?所以,在用户付款成功、下订单成功或是要求退款什么的,都需要有一些提示信息。 
解决方法:在用户付款成功等一些关键信息更新的时候,自动发送邮件到指定的信箱,比如我是用手机绑定了QQ信箱,在有用户付款成功后,手机上会就即时显示一封新邮件,妈妈再不也不用担心我成天刷新后台了。(当然官方有手机短信提醒,对我们这些还没有购买授权还在试用阶段的小伙伴来说,发个邮件提醒还是最经济有效的方法) 
具体步骤:我是在用户付款成功后发送一封邮件到我的手机,所以我的方法是在付款成功后,加入一段发送邮件的代码来实现。 
打开/controllers/block.php文件,在大约242行左右,在付款成功返回信息之前,在$this->redirect($url); exit;这段代码的前面加上发送邮件的简单代码,例如: 
 //发送邮件到管理员信箱,提示支付成功 
$orderDB  = new IModel('order'); 
$orderRow = $orderDB->getObj('id = '.$order_id); 
$payment_id = $orderRow['order_no'];              //获取订单编号 
$payment_price = $orderRow['order_amount'];       //获取付款金额 

$smtp = new SendMail();                           //发送邮件 
$content = "提示:订单已付款,等待发货中... 

订单编号:<font color=#FF6600>{$payment_id}</font> 
订单金额:<font color=#FF6600>{$payment_price}</font> 元 

---------iwebshop商城";
 
$re = $smtp->send("我的邮箱地址","订单已付款",$content ); 
//发送完成 
当然,你也可以在任何需要的位置加入这些代码来达到发送邮件提醒的目的,比如订单生成、充值成功、要求退款、商家结算等,你还可以获取更多的变量信息来完善邮件的内容,使提醒更加详细。 


9.后台管理作废订单误操作,完成订单后不返回列表问题。 
问  题:在后台订单管理中,作废订单没有确认提示,很容易误操作,而且不可恢复;一般完成订单是最后一个操作,完成订单后依然停留在当前页面,不能自动返回订单列表。 
解决方法:1.作废订单加入确认提示消息,避免误操作。 
              2.完成订单后自动跳转到订单列表 
具体步骤:1.作废订单:打开/views/sysdefault/order/order_show.html文件,在约487行上下找到JS代码:function complete(id,statusVal),在该函数中添加弹出确认对话框,代码如下: 
 if(statusVal == '4') 
{ 
var st=confirm('订单作废后不可恢复!是否作废当前订单?'); 
if(st==false) 
              { 
                  return false; 
              } 

} 
2.订单完成后自动跳转,在上面代码的下面几行,找到: 
 if(data=='success') 
{ 
actionCallback(); 
直接在后面加上跳转到订单列表的代码就行了。我加的代码是:document.location = '{url:?controller=order&action=order_list}';你可以根据需要修改成伪静态地址。 


10.用户中心查看订单时,收货地址显示不完整的问题。 
问  题:在用户中心查看订单详情时,没有完整显示省/市/区,只显示了具体的地址一栏。最新的3.0版本问题依然存在. 
解决方法:官方的代码中其实有显示省/市/区的代码,但是我测试了下变量值为空,并未获得具体的地址显示,具体原因我没有仔细查看,这个问题留给官方,我采用了临时的方法提取了省/市/区的信息,显示出来。具体步骤:打开/views/default/ucenter/order_detail.html文件,在大约83行上下找到:{$this->order_info['province_str']} {$this->order_info['city_str']} {$this->order_info['area_str']} {$this->order_info['address']} 将其替换为以下代码: 
                   {set:$a_id=$this->order_info['province']} 
                   {query:name=areas where=area_id eq $a_id item=$item1}{/query} 
                   {set:$a_id=$this->order_info['city']} 
                   {query:name=areas where=area_id eq $a_id item=$item2}{/query} 
                   {set:$a_id=$this->order_info['area']}   
                   {query:name=areas where=area_id eq $a_id item=$item3}{/query} 
                   {$item1['area_name']} {$item2['area_name']} {$item3['area_name']}{$this->order_info['address']}经测试,问题解决,但明显不是最佳方法,增加了数据库的读取次数,希望官方在以后的版本更新中解决。