查看: 85|回复: 1

[教程] 分享几个Ecshop中二次开发的常见方法

[复制链接]

3

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2012-1-21
发表于 2023-6-6 00:00:00 | 显示全部楼层 |阅读模式

收货人信息的省市区设成非必选项 

一般面向国外用户的ECSHOP商城,可能会有这方面的需求:【将Ecshop中收货人信息的省市区设成非必选项】,其实也就是只留一个“请选择国家”的下拉选择框。 

修改相关JS文件 

打开 /js/shopping_flow.js 文件,将下面JS代码删除掉

JavaScript Code复制内容到剪贴板
  1. if (frm.elements['province'] && frm.elements['province'].value == 0 && frm.elements['province'].length > 1)   

  2.  {   

  3.  err = true;   

  4.  msg.push(province_not_null);   

  5.  }   

  6.  if (frm.elements['city'] && frm.elements['city'].value == 0 && frm.elements['city'].length > 1)   

  7.  {   

  8.  err = true;   

  9.  msg.push(city_not_null);   

  10.  }   

  11.  if (frm.elements['district'] && frm.elements['district'].length > 1)   

  12.  {   

  13.  if (frm.elements['district'].value == 0)   

  14.  {   

  15.  err = true;   

  16.  msg.push(district_not_null);   

  17.  }   

  18.  }  

修改程序文件 

修改 /inlcudes/lib_order.php 文件,将下列PHP代码删除掉

PHP Code复制内容到剪贴板
  1. if ($res)   

  2.  {   

  3.  if (emptyempty($consignee['province']))   

  4.  {   

  5.  /* 没有设置省份,检查当前国家下面有没有设置省份 */  

  6.  $pro = get_regions(1, $consignee['country']);   

  7.  $res = emptyempty($pro);   

  8.  }   

  9.  elseif (emptyempty($consignee['city']))   

  10.  {   

  11.  /* 没有设置城市,检查当前省下面有没有城市 */  

  12.  $city = get_regions(2, $consignee['province']);   

  13.  $res = emptyempty($city);   

  14.  }   

  15.  elseif (emptyempty($consignee['district']))   

  16.  {   

  17.  $dist = get_regions(3, $consignee['city']);   

  18.  $res = emptyempty($dist);   

  19.  }   

  20.  }  

然后收货人信息那里,只选择国家不选择省市区,也照样能提交。 

修改底部的在线人数 

建站之初,网站的在线人数肯定不会很多,那么我们可以稍微修改下ECSHOP的程序,让页面底部显示的在线人数 翻几番。 

具体方法如下: 

打开 /includes/lib_insert.php文件,找到下面代码

PHP Code复制内容到剪贴板
  1. $online_count = $GLOBALS['db']->getOne("SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('sessions'));  

将之修改为:

PHP Code复制内容到剪贴板
  1. $online_count = $GLOBALS['db']->getOne("SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('sessions'))*15;  


这样,你的ECSHOP商城显示的在线人数就会多15倍,当然你也可以将15改成100,这样就会多100倍。 

文章的浏览次数 

修改数据库结构 

进ECSHOP后台 》 数据库管理 》SQL查询 ,输入下面SQL语句
 

代码如下:


ALTER TABLE `ecs_article` ADD `click_count` INT( 10 ) NOT NULL



点击 “提交查询” 

修改 /article.php 

搜索

PHP Code复制内容到剪贴板
  1. else  

  2. {   

  3.  $smarty->display('article_pro.dwt'$cache_id);   

  4. }  

在它下面增加一行PHP代码,如下:
 

代码如下:


$db->query("update ".$ecs->table('article')." set click_count=click_count+1 where article_id=$article_id") ;



修改 /themes/default/article.dwt 

找到
 

代码如下:


{$article.add_time}



在它后边增加PHP代码,如下:
 

代码如下:


/ 浏览次数:{$article.click_count}



这种修改方法,要清除缓存或者缓存自动更新后才能体现出最新的浏览次数来,如果你想能实时显示最新的浏览次数,就要构造一个INSERT函数,并在模板中用 {insert name =“xxx”} 调用。

回复

使用道具 举报

0

主题

297

回帖

1894

积分

琼殿精英

金币
1597
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2011-10-11
发表于 7 小时前 | 显示全部楼层
顶一个!很实用的技巧分享,LZ辛苦了~

第一个省市区非必填的修改确实很实用,我们之前做出口电商的时候就遇到过这个问题,国外很多买家习惯自己填地址,不喜欢被那些下拉框束缚,删掉JS验证和PHP验证确实是最直接的办法。

第二个在线人数翻倍这个...哈哈,LZ太实诚了,这样直接乘15会被发现的吧。不过对于新站来说确实是个小技巧,至少看起来人气旺一些嘛~

第三个文章浏览次数的功能很棒!不过我想补充一下,如果想让浏览次数实时更新而不需要等缓存的话,可以在模板里用{insert name="insert_click" type="article" id=$article.id}这种方式来调用,这样每次刷新页面都会更新计数,不用等缓存失效。

另外想问下LZ,有没有遇到过修改省市区必填项后,订单打印或发货单那里显示空白的问题?我们之前改完发现后台打印单据的时候收货地址那里显示不正常,后来是改了另一个文件才解决的。
感谢LZ分享,一起学习~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部