EcShop"您的购物车中没有商品"终于解决了!

搞死人了,折磨人两天的问题,跟用户远程协助数次,占用数名技术终于解决了这个恼人的BUG。

ECSHOP,多好的一套程序,怎么就被商派搞成了这等模样。

EC已死,呜呼哀哉!

前一段时间,有个客户说自己的ecshop网店出了状况,就是有时候登录的时候会自动退出。而且购物车也没规律的会清空。
刚开始一直找不到原因,到最后才知道了。他说的状况是由于像学校,公司一类的局域网。ip变化的原因造成的。

ECSHOP的SESSION采用IP生成用户唯一码,这样的话,多线接入的用户在路由自动切换时就会造成IP变化,这样,SESSION也就丢失了,与SESSION相关的登陆、购物车也就失效。

解决办法是当用户第一次登陆时,将用户的IP存入Cookie,或者在生成SESSION时,不取IP,而是在用户的机器存一个加密的Cookie。
第一种解决办法只需要修改ECSHOP根目录下includes\cls_session.php 大概在82行,找到这个。

$this->_ip = real_ip();
修改为

if(isset($_COOKIE['real_ipd']) && !empty($_COOKIE['real_ipd'])){
	$this->_ip = $_COOKIE['real_ipd'];  
 }else{
	$this->_ip = real_ip();
	setcookie("real_ipd", $this->_ip, time()+36000, "/");
}

将用户的首次登陆IP存入Cookie,其它功能依然使用ECSHOP的SESSION。

ECSHOP二次开发:添加字段并实现批量上传

因为公司项目需要根据用户的需求做一点开发,只用了半个小时就实现了整个过程。可见,ECSHOP的二次开发还是非常快速方便的。

以下是一些重要的步骤,仅供大家参考(尚不知道在工作期间的代码,算不算公司的资产)。

  1. 添加ecs_goods表中的自定义字段
    ALTER TABLE `ecs_goods` ADD `goods_bianma` varchar(255) NOT NULL AFTER `goods_desc`;
    ALTER TABLE `ecs_goods` ADD `goods_guige` varchar(255) NOT NULL AFTER `goods_bianma`;
    ALTER TABLE `ecs_goods` ADD `goods_danwei` varchar(255) NOT NULL AFTER `goods_guige`;
    ALTER TABLE `ecs_goods` ADD `goods_chandi` varchar(255) NOT NULL AFTER `goods_danwei`;
  2. 管理员模板目录admin/templates/goods_info.htm 行175 添加 用户自定义字段,如:
    <!--用户自定义字段开始-->
              <tr>
                <td>商品编码</td>
                <td><input type="text" name="goods_bianma" value="{$goods.goods_bianma}" size="20" />
                </td>
              </tr>
              <tr>
                <td>商品规格</td>
                <td><input type="text" name="goods_guige" value="{$goods.goods_guige}" size="20" />
                </td>
              </tr>
              <tr>
                <td>商品单位</td>
                <td><input type="text" name="goods_danwei" value="{$goods.goods_danwei}" size="20" />
                </td>
              </tr>
              <tr>
                <td>商品产地</td>
                <td><input type="text" name="goods_chandi" value="{$goods.goods_chandi}" size="20" />
                </td>
              </tr>
              <!--用户自定义字段结束--
  3. 管理员目录admin/goods.php 行 901 添加入库和读取用户自定义字段语句
        /* 更新用户自定义字段 */
        $sql = "UPDATE `ecs_goods` SET  `goods_bianma`='{$_POST['goods_bianma']}',
                `goods_guige`='{$_POST['goods_guige']}',
                `goods_danwei`='{$_POST['goods_danwei']}',
                `goods_chandi`='{$_POST['goods_chandi']}'
        WHERE (`goods_id`='$goods_id')  ";
        $db->query($sql);

    这里使用更新字段的方式,不用去修改程序本身的SQL,修改起来方便。

  4. 然后到模板中就可以使用相关字段进行调用了。

到这里,添加用户自定义字段就完成了。整个过程相对简单明了。接下来为批量上传添加字段。

  1. 修改languages/admin/goods_batch.php,添加字段
    // 增加的批量上传商品的字段
    $_LANG['upload_goods']['goods_bianma'] = '商品编码';
    $_LANG['upload_goods']['goods_danwei'] = '单位';
    $_LANG['upload_goods']['goods_guige'] = '规格';
    $_LANG['upload_goods']['goods_chandi'] = '产地';
  2. 基本上,商品批量上传就已经完成。但由于客户上传的CSV文件不是很标准,于是,我加了一些默认值。admin/goods_batch.php 172行
                        /* EDIT BY admin@4wei.cn */
                        $arr['is_real'] = 1;
                        $arr['is_on_sale'] = 1;
                        $arr['is_alone_sale'] = 1;
                        $arr['goods_sn'] = ($arr['goods_sn']=='' && $arr['goods_bianma']) ? $arr['goods_bianma'] : '';
                        $arr['goods_weight'] = ($arr['goods_weight']=='' && $arr['goods_guige']) ? $arr['goods_guige'] : 0;
                        $arr['goods_number'] = !$arr['goods_number'] ? 100 : 0;

至此,整个实例完成。

整个过程,是在阅读获取CSV字段时,花了比较多时间,没想到EC是按语言项来获取字段的。了解以后便发现扩展性非常强。

有了这个基础,便可以在此基础上,增强一下Ecshop 采集软件的功能了。

ECSHOP删除商品时同步删除商品详细评述中的图片

Ecshop 采集软件发布以后,部份用户使用火车采集器将商品详情中的图片下载到本地中。这样可以加快图片显示速度,同时保证图片的有效性。

但部份用户遇到一个问题。即在删除图片时,ECSHOP并不会自动删除已经下载的图片,加上这些图片非常大,占用空间量特别大。

那么就开发了这个功能,删除商品时,同步删除商品的缩略图,相册的图片和商品详情中的图片。

以下代码基于ECSHOP 2.7.0 GBK,请适用的用户下载。有问题欢迎提出。 继续阅读ECSHOP删除商品时同步删除商品详细评述中的图片

Ecshop2.7整合UC的整合过程和卸载办法

前言:整合过程中,首先要确定编码类型,是GBK就一直用GBK,UTF-8就一直用Utf-8,避免后期太多升级问题。

Ecshop整合Uc还是比较方便的,重点说几步。

1,下载Ucenter,官方网站:http://www.comsenz.com/

2,安装Ucenter,也很简单,官方网有图文教程。

3,接下来是安装Ecshop,当然,也不难,小儿科的问题就不说了。

4,接下来是整合EC和UC,Ec官方也出一个教程,http://bbs.ecshop.com/thread-90490-1-1.html

一路起来,整合基本上算是没什么大问题了。

接下来是卸载。

ecshop整合过uc之后,却没有卸载的功能。看来只能手动卸载配置了。

1,删除配置文件中的信息:配置文件是/temp/static_caches/shop_config.php

改成

'integrate_code' => 'ecshop',
'integrate_config' => '',

当然,这里的数据也可以不改,直接进入第二步以后清除缓存也可以。

2,执行SQL:

update ecs_shop_config set value='ecshop' where code='integrate_code';
update ecs_shop_config set value='' where code='integrate_config';

这里的SQL将整合信息还原成默认的ecshop方式,然后清空整合数据。

3,清除缓存。

4,收工。

Ecshop 采集软件(火车采集器版) [2013-03-22更新]

Ecshop采集程序简介:

  • 本套Ecshop采集程序,基于火车采集器强大的采集功能开发。
  • 适用于 Ecshop2.7.x 版本,可以准确快速采集各类商品信息,批量上传到Ecshop程序中,支持自动下载商品图片,支持采集发布商品属性。
  • 本程序由火车采集器管理员尘缘开发,由尘缘一对一提供技术支持和服务。
  • 经数十家网商朋友测试通过,保证安全、精准、快速、高效!
  • 我们是中国最专业的数据采集提供服务商,我们发布的Ecshop采集程序,是目前最优质的ECSHOP采集软件。

Ecshop采集软件演示兼视频教程:

  1. http://www.4wei.cn/locoy/ecshop/ecshop.zip

继续阅读Ecshop 采集软件(火车采集器版) [2013-03-22更新]