ecsmart的开发经历
ecsmart是ecshop的产品之一,是2015年发布的一套系统。关于它的介绍请到官网去了解,也可以百度 “商之翼” “ecsmart”
1、ecsmart分别在pc、mobile、app三个方面都有开发,(你已经搭好环境了),在根目录下的admin目录是对pc端的管理,/mobile/admin 是手机对 app的管理
所以在开发的时候一定要弄清楚,当然也可以合并后台
2、我这次是做的微信开发,主要对mobile目录/admin目录进行修改。
3、商品的图片上传的位置是/data/images里,广告图片pc与微信存放的路径不同,因为是分开的表(pc:ad、ad_position
mobile:ecsmart_ad
、ecsmart_ad_postion),他们分别在pc端后台与mobile端后台也都有相应的广告设置菜单。其实其实二者标的字段几乎没啥差别
4、pc端后台的功能是最多,最大的,关于商品的添加、修改、分类添加......都是在它这里完成设置的,mobile端后台可以设置微信端商店的设置,已经前台的页面设置、还有微信设置
说这点是为了不让大家混乱,因为我一开始的时候就没有搞清楚,然后我就把后台功能页面修改了,比如我当时把pc端后台的商店设置里对pc端商品的数据表
(shop_config)改成微网站商店(ecsmart_shop_config)
当然也能实现,但是挺麻烦的,后面弄清了目录结构就操作就简单点了
5、pc端通过修改libiary/lic_menu.php libiary/lic_priv.php来设置后台的导航栏目,mobile则通过修改 mobile/templates/menu.htm mobile/libiary/lic_menu.php mobile/libiary/lic_priv.php
来设置后台的导航栏目
6、商品批量上传的时候,如果你选择的csv文件是根本gb2312 gbk 的编码的话,那就会出现上传后的商品乱码,这是因为你选择的是utf-8版本,那么如何解决这个乱码的问题,我当时的处理方法是
:
在公共函数里加一个判断文件编码的函数:可以直接在 goods_batch.php添加该函数
goods_batch.php里截取的代码
elseif ($_REQUEST['act'] == 'upload')
{
//echo IMAGE_DIR;
/* 检查权限 */
admin_priv('goods_batch'); /* 将文件按行读入数组,逐行进行解析 */
$line_number = 0;
$arr = array();
$goods_list = array();
$field_list = array_keys($_LANG['upload_goods']); // 字段列表
/*echo '<pre>';
print_r($field_list);
echo '</pre>';*/
// echo $_POST['cat_id'];
$data = file($_FILES['file']['tmp_name']);
$up_tm_file = $_FILES['file']['tmp_name'];
$coding = detect_encoding($up_tm_file);//得到上传文件的编码-----------------这句话就是我的修改处之一
//echo '<hr>',detect_encoding($up_tm_file);
/*将文件按行读入数组,逐行进行解析*/
if($_POST['data_cat'] == 'ecshop')
{
foreach ($data AS $line)
{
// 跳过第一行
if ($line_number == 0)
{
$line_number++;
continue;
}
//echo '<hr>',$line;
// 转换编码
if(strtolower($coding) != 'utf-8'){ //-----------------------------------我通过得到上传的文件的编码然后判断这个编码不是utf-8的话,我在执行ec使用的转化编码的处理
if (($_POST['charset'] != 'UTF8') && (strpos(strtolower(EC_CHARSET), 'utf') === 0))
{
$line = ecs_iconv($_POST['charset'], 'UTF8', $line);
} }
function detect_encoding($file) {
$list = array('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1','GB2312');
$str = file_get_contents($file);
foreach ($list as $item) {
$tmp = mb_convert_encoding($str, $item, $item);
if (md5($tmp) == md5($str)) {
return $item;
}
}
return null;
}
当然,这是我在开发的时候遇到的问题,如果有同样出现问题的朋友可以看看,还有 如果使用过的ec的朋友应该知道,ec可以导入淘宝的数据,然后是保存的csv文件 最后在批量上传到自己的站点上去
所以在goods_batch.php 有 data_cat数据格式的判断,所以应该把后面其它的数据格式也加入上面的判断才更合理
7、微网站你会看到商品的详情不显示,那是因为在goods.dwt里 详情、价格这些都是使用js ajax回调的 但是 它把js头部<script>可注释掉了,因此你应该去掉注释
8、关于goods.dwt有个 show_desc 函数 它存在一个问题 存在引号问题 如果你的详情内容里用引号 而且你又是用同样的引号把show_desc引住 那么js就会出错 导致后面的代码不能执行
导致你页面上很多的效果不能实现(比如赠送积分、改变数量价格作出相应的变化等 因为都是一个函数 chageprice在处理 而 chageprice的调用就在show_desc的后面 所以会出错)
因此 你该去掉这个函数 不通过回调显示详情 而是直接在
<!---------------------------------详情----------------------------------->
<div class="main" id="user_goods_ka_2" style="display:none">
<div class="product_main" style=" margin-top:40px;">
<div class="product_images product_desc" id="product_desc"> {$goods.goods_desc}</div>
</div>
</div>
引用
9、关于微信功能不能显示图片的解决 第一:可以去掉在得到商品信息给图片前加的get_url()函数 第二也可以修改mobile/weixin/index.php
//$newsData[$k]['PicUrl'] = (strpos($v['thumb'],'http://') !== false ? $v['thumb'] : $baseurl.'mobile/'.$v['thumb']);
$newsData[$k]['PicUrl'] = (strpos($v['thumb'],'http://') !== false ? $v['thumb'] : $baseurl.$v['thumb']);
//这里的设置是因为网站的根目录不在mobile下,而图片却在根目录下,因此需要做这样的修改
一切的一切就是ec用的是相对路径 而我开发的时候都把改成/的路径方式
------------------目前还在使用它做项目,后面会把自己遇到的问题都分享出来
ecsmart的开发经历的更多相关文章
- 用做网页开发经历了三个阶段(附长篇讨论) good
用做网页开发经历了三个阶段:第一阶:傻干阶段使用Intraweb,傻瓜型,无需知道javascript,html,css,会pascal就可以了. 第二阶:困惑阶段使用Intraweb,有很多限制,比 ...
- 如何快速上手一款新的嵌入式CPU芯片(记录CC2540开发经历)
新换了工作,需要熟悉新公司的产品开发项目,更新博客就懈怠了,不过环境的不同,也让我对嵌入式开发有了更深刻的理解.在原公司我主要负责在STM32F207芯片平台上, 利用UCOS+LWIP进行嵌入式服务 ...
- H5拍照应用开发经历的那些坑儿
一.项目简介 1.1.项目背景:这是一个在移动终端创新应用的项目,用户在浏览器端(微信/手Q)即可完成与金秀贤的合影,希望通过这样一种趣味体验,引发用户的分享与转发的热潮. 1.2.系统要求:ios6 ...
- .net程序员转行做手游开发经历(二)
上篇主要介绍自己个人的经历,这篇主要讲下学习新语言的过程. 上次说到最终选择的语言是swift,框架用spritekit,上次有网友对为什么选择用这俩呢,为什么不用cocos和unity呢,cocos ...
- .net程序员转行做手游开发经历(一)
从辞职到自己开发游戏也有几个月的时间了,游戏也已经在AppStore上线了,我觉得我有必要写点东西,算是留下的一些记忆,也可以和广大博友分享下自己的创业经历,这可能不是一篇成功的创业经历,因为故事还在 ...
- 十余年软件开发经历,经验总结和程序一览(涉及Socket、WPF、vc++、CAD、图像、GIS)
前言 本文主要介绍我开发的几款软件产品,大概介绍一下功能.可以让读者了解本人的开发能力,所擅长的方面.有相关开发需求可以联系作者. 本人开发软件多年,从事的行业也多种多样:自然接触了不同的业务,开发了 ...
- .net程序员转行做手游开发经历(四)
今天是大年初二,在这里先给大家拜个年,祝大家在新的一年里能事事顺心. 年前的时候更新了一版,先发了内测,没有想到过年这几天,有的小伙伴们还在玩,还给我们提了很多建议和意见,让我们觉得非常温暖,给我们很 ...
- .net程序员转行做手游开发经历(五)
大家好,真的是好长时间都没有更新博客了.上来博客园发现很多朋友还在关注我们,那给大家汇报下最近的一些进展. 收费版上线了,但是下载量不是很多,刚发布的时候下载每天的下载还是挺多,我们几个小伙伴在论坛. ...
- .net程序员转行做手游开发经历(三)
这次就主要讲讲我们开发的过程. 策划是我们团队的一个人成员专门负责,我们几个算是出谋划策.我这边的理解是,策划首先需要对所做的事情一定要有一定的把握,意思是尽可能的想到这件事情的影响范围,类似项目管理 ...
随机推荐
- C语言之成绩转换
#include<stdio.h>int main(){int score,grade;scanf("%d",&score);grade=score/10;sw ...
- 【MAVEN】maven系列--pom.xml标签详解
pom文件作为MAVEN中重要的配置文件,对于它的配置是相当重要.文件中包含了开发者需遵循的规则.缺陷管理系统.组织.licenses.项目信息.项目依赖性等.下面将重点介绍一下该文件的基本组成与功能 ...
- 【机器学习】彻底搞懂CNN
之前通过各种博客视频学习CNN,总是对参数啊原理啊什么的懵懵懂懂..这次上课终于弄明白了,O(∩_∩)O~ 上世纪科学家们发现了几个视觉神经特点,视神经具有局部感受眼,一整张图的识别由多个局部识别点构 ...
- 初窥c++11:lambda函数及其用法
转载于:点击打开链接 为什么需要lambda函数 匿名函数是许多编程语言都支持的概念,有函数体,没有函数名.1958年,lisp首先采用匿名函数,匿名函数最常用的是作为回调函数的值.正因为有这样的需求 ...
- js 深拷贝和浅拷贝
js 深拷贝和浅拷贝 先举一下项目中遇到的两个例子: 例子1: var json = $.parseJSON(data.data);//data.data是接口返回的值var a = json.cha ...
- Web前端学习——JavaScript
一.JavaScript介绍JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚 ...
- tcpdum使用详解
http://starsliao.blog.163.com/blog/static/89048201062333032563/ TCPdump抓包命令 tcpdump是一个用于截取网络分组,并输出 ...
- Mysql----关于内联,左联,右联,全联的使用和理解
准备工作:新建两张表 表一:student 填充内容:编号,姓名,班级 表二:school 填充内容:编号,班级,专业 这两张表建好了,意为班级选课表,两张表没有任何主外键的关系,下面进行内联,左联, ...
- 自己主动化 远程登陆linuxserver并运行命令 —— expect
原文地址:http://blog.csdn.net/wangyuling1234567890/article/details/41149429 LinuxserverA登陆LinuxserverB s ...
- Android binder学习一:主要概念
要看得懂android代码,首先要了解binder机制.binder机制也是android里面比較难以理解的一块,这里记录一下binder的重要概念以及实现.作为备忘. 部分内容来源于网上,如有侵权. ...