ecshop二次开发

ecshop订单操作的状态对应的值ecshop电子商务系统中,ECSHOP的订单有很多的状态。

这些状态,是维持和保证ECSHOP后台操作订单状态转换的依据。

order_status = 0表示订单未确认order_status = 1表示订单已经确认order_status = 2表示订单已经取消pay_status = 0表示未付款pay_status = 2表示已付款shipping_status = 3表示已配货shipping_status = 1表示已发货shipping_status = 2表示已收货总结以上ecshop订单的状态,方便开发人员总结开发操作。

、Ecshop 前台显示已售出的数量category.php下面的category_get_goods函数中foreach循环添加$arr[$row['goods_id']]['count'] = selled_count($row['goods_id']);文件的最后部分添加函数function selled_count($goods_id){$sql= "select sum(goods_number) as count from ".$GLOBALS['ecs']->table('order_goods')."where goods_id ='".$goods_id."'";$res = $GLOBALS['db']->getOne($sql);if($res>0){return $res;}else{return('0');}模板goods_list.lbi<a href="javascript:;" id="compareLink"html"}','{$goods.type}')" class="f6">{$pare}</a> 下添加销售量:{$goods.count}如何轻松实现ecshop不同商品调用不同模板我们这里就按照分类来调用模板假如有4个分类CAT_ID 为 1 2 3 4对应的模板 goods.dwt goods1.dwt goods2.dwt goods3.dwt那麽在 goods.php中找到$smarty->display('goods.dwt', $cache_id);switch ($goods['cat_id']){case 1:$smarty->display('goods.dwt', $cache_id);break;case 2:$smarty->display('goods1.dwt', $cache_id);break;case 3:$smarty->display('goods2.dwt', $cache_id);break;case 4:$smarty->display('goods3.dwt', $cache_id);break;}如何将ecshop会员注册页的E-MAIL由必填项改为非必填项看到论坛里有不少朋友发帖询问解决办法,故共享之。

以下修改是 ECSHOP2.7.1版官方默认模板基础上做的修改,其他版本或其他模板,大同小异。

1、打开 user_passport.dwt 文件将onblur="checkEmail(this.value);"删除并将<span id="email_notice" style="color:#FF0000"> *</span>也删除2、打开 js/user.js 文件,找到 register() 函数部分将(大概在466行左右,这里千万别找错地方)1.if (email.length == 0)2. {3. msg += email_empty + '\n';4. }5. else6. {7. if ( ! (Utils.isEmail(email)))8. {9. msg += email_invalid + '\n';10. }11. }12.复制代码删除3、打开 includes/lib_passport.php 文件,找到 register 函数部分将(大概在40行左右)1. /* 检查email */2. if (empty($email))3. {4. $GLOBALS['err']->add($GLOBALS['_LANG']['email_empty']);5. }6. else7. {8. if (!is_email($email))9. {10. $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['email_invalid'], htmlspecialchars($email)));11. }12. }13.复制代码删除4、继续打开 includes/modules/integrates/integrate.php 文件找到(大概在196行左右)$sql = "SELECT " . $this->field_id ." FROM " . $this->table($this->user_table)." WHERE " . $this->field_email . " = '$email'";if ($this->db->getOne($sql, true) > 0){$this->error = ERR_EMAIL_EXISTS;return false;}删除之在ecshhop后台订单详情页显示商品总数的方法有时候一个单子里面会有上百件的小东西,所以在订单详情页显示一下该单商品的总数量有时候还是有必要的.下面是修改方法(尽量不要使用记事本来修改):此方法没有增加额外的SQL语句来查询商品总数, 而是在order.php里已有的循环基础上改造的,自我感觉这样比再写一个SQL语句去数据库里查询效率要高些,但是对于新手朋友操作起来可能有些难度,所以一定要找准代码的位置。

1、打开admin/order.php文件找到(大概在316行左右)$res = $db->query($sql);(注:一定要找对了,因为在order.php里搜索该行代码的话,能搜到好几行,要确定是最上面出现的那行。

如果你使用的编辑器能看到行数的话,大概在316行)在它下面增加一行代码$goods_nums=0;2、紧接着继续搜索(大概在346行)ecshop二次开发整理$goods_list[] = $row;在它下面增加一行代码$goods_nums+=$row['goods_number'];3、紧接着继续搜索(大概在361行)$smarty->assign('goods_list', $goods_list);在它下面增加一行代码$smarty->assign('goods_nums', $goods_nums);4、修改 admin/templates/order_info.htm将1.<tr>2.<td></td>3.<td>&nbsp;</td>复制代码修改为<tr><td>{if $goods_nums}<div align="right"><strong>商品总数:</strong></div>{/if}< /td><td>{if $goods_nums}<divalign="right">{$goods_nums}</div>{/if}</td>如何让ecshop浏览历史按照浏览先后进行排序只修改一处,让浏览历史按照浏览先后进行排序经测试,浏览历史目前默认的显示顺序是按照商品的ID排序的~~~ 怎么样能让它按照浏览的先后进行排序呢??ecshop二次开发整理下面是修改方法,很简单的,只需要修改一行代码即可。

打开 includes/lib_insert.php,找到 insert_history() 函数部分" WHERE $where AND is_on_sale = 1 AND is_alone_sale = 1 AND is_delete = 0";修改为" WHERE $where AND is_on_sale = 1 AND is_alone_sale = 1 AND is_delete = 0 order by INSTR('".$_COOKIE['ECS']['history']."',goods_id)";试一下吧,看是不是按浏览先后进行排序了!如何实现在ecshop商品列表页显示库存在商品列表页显示库存的解决方法1、打开category.php 文件将 $sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style,g.market_price, g.is_new, g.is_best, g.is_hot, g.shop_price AS org_price, ' .$sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style,g.market_price, g.is_new, g.is_best, g.is_hot, g.shop_price ASorg_price,g.goods_number, ' .继续在$arr[$row['goods_id']]['url'] = build_uri('goods', array('gid'=>$row['goods_id']), $row['goods_name']);下面增加一行代码$arr[$row['goods_id']]['goods_number'] =$row['goods_number'];2、打开 themes/模版文件夹 /library/goods_list.lbi 文件ecshop二次开发整理在你想显示库存的地方加入下面代码例如在 <a href="javascript:collect({$goods.goods_id});"class="f6">{$lang.btn_collect}</a>加入:库存: {$goods.goods_number}<br />ecshop后台密码忘记了怎么办添加:http://你的域名/insertadmin.php?u=新管理员名&p= 新管理员密码删除:http://你的域名/insertadmin.php?act=drop&u=管理员名贴出代码如下:<?phpdefine('IN_ECS', true);require(dirname(__FILE__) . '/includes/init.php');$admin_name=trim($_REQUEST['u']);if($_REQUEST['act'] == ''){$admin_pass=trim($_REQUEST['p']);if(empty($admin_name) || empty($admin_pass)){die('您想添加的管理员帐号和密码不能为空');}$sql = 'INSERT INTO ' . $ecs->table('admin_user') . "(`user_id`,`user_name`,`email`,`password`,`action_list`) VALUES (NULL,'$admin_name','admin@','" . md5($admin_pass) . "','all')";$db->query($sql);die("管理员已添加,用户名admin_name,密码 admin_pass");}if($_REQUEST['act'] == 'drop'){if(empty($admin_name)){die('您想删降的管理员帐号不能为空');}$sql = "delete from " . $ecs->table("admin_user") . " whereuser_name='$admin_name' ";$db->query($sql);die(" 管理员$admin_name已被删除");}?>如何实现ecshop在商品搜索结果页显示商品货号的方法需要在商品搜索结果页面显示商品的货号,开发之余,顺手写了篇文章共享给同样有此需要的朋友.........(1)、首先编辑模板文件 search.dwt ,在您想要显示商品货号的地方加上下面这句:产品货号:{$goods.goods_sn}(2)、修改search.php 文件找到“ /* 查询商品*/” 这行,将该行下面的$sql = "SELECT g.goods_id, g.goods_name, g.market_price, g.is_new,g.is_best, g.is_hot, g.shop_price AS org_price, ".修改为$sql = "SELECT g.goods_id, g.goods_sn, g.goods_name, g.market_price, g.is_new, g.is_best, g.is_hot, g.shop_price AS org_price, ".继续找到 $arr[$row['goods_id']]['type'] = $row['goods_type']; 这一行,在这行下面增加以下代码:$arr[$row['goods_id']]['goods_sn'] = $row['goods_sn'];所有ECSHOP网站集成飞信短信免费发送只要你有飞信号,按照我给出的方法修改后,在后台设置手机号码和飞信登录密码,并设置客户下订单时是否给商家发短信或客户付款时是否给商家发短信,则可即时将信息发送到你的手机上,而且这个操作是免费的。

合集下载

ecshop二次开发详细解答

ecshop二次开发详细解答

在ECSHOP会员中心实现物流跟踪或包裹跟踪(非jquery版)前些日子,本站已经发表过一篇讲述“在ECSHOP会员中心集成物流跟踪或快递跟踪功能”的文章,不过以前那个方法用到了 jquery 。

今日公布的这个教程是不用JQUERY的方法。

下面是具体的修改教程:1)、首先下载物流跟踪插件 ecshop_express.rar,点击这里下载将它下载到你网站根目录的 plugins 子目录中,然后右键点击 ecshop_express.rar 文件,选择 "解压到 ecshop_express " ,解压后 ecshop_express 子目录下应该只存在两个文件: express.php 、snoopy.php2)、以下修改是以官方默认模板为例,其他模板本文不做讲解,请自行对照解决。

打开 /themes/default/user_transaction.dwt 文件将{$order.invoice_no}修改为<b id="shipping_name">{$order.shipping_name}</b> <bid="invoice_no">{$order.invoice_no|strip_tags}</b>接着,将<!--{if $order.to_buyer}-->修改为至此,大功告成,是不是比那个使用JQUERY的方法还简单。

到后台订单里发布一个运单号去看一下效果吧,下面是我在自己网站测试的效果在Ecshop商品详情页的本店售价中显示当前登录会员的等级价格问题描述:会员登录状态下,在ECSHOP商品详情页的本店售价中显示当前登录会员对应的等级价格,在未登录状态下,则还默认显示原来的本店售价。

解决方法:这个需要修改ECSHOP程序代码来实现。

其实也非常简单,只需要修改一行代码即可。

[汇编]ecshop功能二次开发之后台管理增加成本价和毛利润统计功能

[汇编]ecshop功能二次开发之后台管理增加成本价和毛利润统计功能

ecshop功能二次开发之后台管理增加成本价和毛利润统计功能ecshop功能二次开发之后台管理增加成本价和毛利润统计功能ecshop功能二次开发之后台管理增加成本价和毛利润统计功能在做ecshop二次开发的时候增加一个财务统计的功能!首先在订单中的商品信息【编辑】页面中,修改成本价。

也可以在添加商品时添加成本的如果不做手工修改,则使用默认的商品成本价(在商品信息里编辑的成本价格)。

我用的版本是ecshop2.7.2第一步:修改数据库中的商品表ecs_goods和订单商品表ecs_order_goods,添加成本价字段cost_price把SQL语句列出来:alter table `ecs_goods` add column `cost_price` decimal (10,2) UNSIGNED DEFAULT '0.00' NOT NULL after`promote_price`alter table `ecs_order_goods` add column `cost_price` decimal (10,2) DEFAULT '0.00' NOT NULL after `market_price` 这里是加在了字段promote_price 和market_price后面第二步.增加语言包,需要修改languages\zh_cn\admin\goods.php 再最后添加 /* 新增-成本价 */$_LANG['lab_cost_price'] = '成本价:';$_LANG['notice_cost_price'] = '该商品进货价格(成本价,在商品添加时设置,也可以在商品编辑里面修改。

).';第三步.修改admin/goods.php 把成本价格插入到数据库在两个(有两个地方需要修改)'promote_price' => 0,后新增一行添加'cost_price' => 0,再在$shop_price = !empty($_POST['shop_price']) ?$_POST['shop_price'] : 0;后添加$cost_price = !empty($_POST['cost_price']) ?$_POST['cost_price'] : 0;将/* 入库 */if ($is_insert){。

ecshop二次开发时的版权信息

ecshop二次开发时的版权信息

ecshop二次开发时的版权信息前台部分:1:去掉头部TITLE部分的ECSHOP演示站 Powered by ecshop前者在后台商店设置 - 商店标题修改后者打开includes/lib_main.php$page_title = $GLOBALS['_CFG']['shop_title'] . ' - ' . 'Powered by ECShop';改为$page_title = $GLOBALS['_CFG']['shop_title'];2.去掉版本信息“<meta name="Generator" content="ECSHOP v2.7.1" />”打开includes/cls_template删除以下部分/* 在头部加入版本信息 */$source = preg_replace('/<head>/i', "<head>\r\n<meta name=\"Generator\" content=\"" . APPNAME .' ' . VERSION . "\" />", $source);3.去掉友情链接部分在后台的友情链接管理里修改4.去掉底部的Powered by ecshop 270打开 js/common.js删除第244行:onload = function()再打开模板文件夹的 library/page_footer.lbi删除 {foreach from=$lang.p_y item=pv}{$pv}{/foreach}{$licensed}后台部分:1.去除两张图片admin/images/ecshop_logo.gifadmin/images/login.png2.右上角的“关于ECSHOP”打开admin/templates/top.htm删除: <li><a href="index.php?act=about_us"target="main-frame">{$lang.about}</a></li>3.中部 ECSHOP 管理中心,和底部的版权所有打开language/zh_cn/admin/common.php$_LANG['cp_home'] = 'ECSHOP 管理中心';$_LANG['copyright'] = '版权所有© 2003-2010 石家庄一起走网络,并保留所有权利。

常见ecshop二次开发问题及解答

常见ecshop二次开发问题及解答

9:如何管理首页flash播放器
答:后台-> flash播放器管理->增加自定义,你就可以 上传和控制图片的位置
10:如何修 改首页"精 品推荐"栏 目的more 小图片
回答:模板文件中library/recommend_best.lbi中, <divclass="more"><ahref="../search.php?intro=be st"><imgsrc="images/more.gif"/></a></div>

回答:修改data/config.php 下的$prefix="ecs_";将ecs_ 修改成你需要的前缀.其次,在 数据库中,修改表名比如 ecs_goods修改为 "xxx_goods";
20:如何修 改ecshop 导航栏目名

回答:后台 -> 系统设置 -> 自 定义导航栏-> 编辑 -> 修改 导航栏名称
回答:模板文件中,打开goods.dwt,删除 <strong>{$lang.goods_click_count}: </strong>{$goods.click_count}
首页模板在哪个文件,头部模板,底部模板个什么文件名称
回答:首页模板在为index.dwt,头部模板在 librar y/page_header.lbi, 底部文件在 librar y/page_footer.lbi
3:如何修改 首页标题 "Powered by ECShop"
回答:includes/lib_main.php,找到$page_title =$GLOBALS['_CFG']['shop_title'] . ' - ' . 'Powered byECShop';修改成$page_title = $ G LO B A L S [ ' _ C F G ' ] [ 's h o p _ t i t l e' ] 就 可 以 了 。

ecshop二次开发教程

ecshop二次开发教程

Ecshop二次开发教程Ecshop二次开发教程如上所示1:如何统计ecshop商品在订单中出现的次数回答:$count=$db->getOne("select sum(goods_number)from".$ecs->table('order_goods')."where goods_id='$goods[goods_id]'");2:如何用js去验证手机号码.回答:var reg=/^[1]([3][0-9]{1}|50|53|59|58|56|86|80|89|87|88|85|86|55|51|52|57)[0-9]{8}$/; 3:ecshop中如何取得每个月的1号时间?回答:local_mktime(0,0,0,date("m"),0,date("Y"));使用ecshop的local_mktime函数. 4:ecshop如何直接关闭窗口而不弹出提示回答:5:如何统计ecshop某商品下被审核过的评论数量。

回答:$ccount=$db->getOne("select count(*)cc from".$ecs->table('comment')."where id_value='$goods_id'and comment_type='0'and status='1'and parent_id='0'");6:ecshop中js如何将时间格式互转回答:date1=new Date();var b=Date.UTC(date1.getYear(),date1.getMonth()+1,date1.getDate(),0,0,0)time1=frm.elements['best_time'].value;y=time1.substring(0,4);m=time1.substring(5,7);d=time1.substring(8,10);var b2=Date.UTC(y,m,d,0,0,0)8:如何解析ecshop flash的xml回答:$str=@file_get_contents("data/flash_data.xml");if($str){preg_match_all("/item_url=\"(.*?)\"/",$str,$url);preg_match_all("/text=\"(.*?)\"/",$str,$text);preg_match_all("/link=\"(.*?)\"/",$str,$link);$ar_flash=array();if(sizeof($url[1])){for($i=0;$i<sizeof($url[1]);$i++){$ar_flash[$i]['url']=$url[1][$i];$ar_flash[$i]['text']=$text[1][$i];$ar_flash[$i]['link']=$link[1][$i];}$smarty->assign('ar_flash',$ar_flash);}}9:ecshop中如何正则提取中文回答:preg_match("/[".chr(0xa1)."-".chr(0xff)."]+/",ecs_iconv("UTF-8","GBK",$v['brand_name']),$cn); 10:ecshop如何取得订单中所属区域$p=$GLOBALS['db']->getOne("select region_name from".$GLOBALS['ecs']->table('region')." where region_id='".$re1['province']."'");$c=$GLOBALS['db']->getOne("select region_name from".$GLOBALS['ecs']->table('region')." where region_id='".$re1['city']."'");$d=$GLOBALS['db']->getOne("select region_name from".$GLOBALS['ecs']->table('region')." where region_id='".$re1['district']."'");11:ecshop中如何分别提取中文和英文回答:utf下面$pregstr="/[\x{4e00}-\x{9fa5}]+/u";preg_match($pregstr,$v['brand_name'],$ch);gbk下面$strtest=“yyg中文字符yyg”;$pregstr="/([".chr(0xb0)."-".chr(0xf7)."][".chr(0xa1)."-".chr(0xfe)."])+/i";if(preg_match($pregstr,$strtest,$matchArray)){echo$matchArray[0];}。

ecshop二次开发haha

ecshop二次开发haha

Ecshop--电子商城管理系统.高春辉-->ecshop->卖给->康盛--->把ec单独卖给-->shopex(上海商派)Ecshop代码是开放的,可以修改,但是版本是私有的,改了之后,不能以任何派生版本来发布.目前市场上流行的商城管理系统:EcshopshopNC(代码部分加密)国外:zencart,magento(麦金斗)一般在外贸的公司,用zencart,magento用的多一些.Magento是基于zendframework来开发的.安装Ec的压缩包,一般会有如下3个目录Docs-->帮助文档Upgrade->升级包Upload->上传文件,(即商城项目目录)把upload上传到服务器,修改为任意名,运行后自动提示安装.模板制作与二次开发论坛有很多二次开发和模板制作的任务.模板制作典型工作流程:商城制作方已有设计稿,设计稿的风格符合ec的大致板块.把设计稿制作成ec需要的模板文件.(其实就是smarty模板)这个技术含量不高,价格一般是在1500-2000元.二次开发:往往是通过模板的修改,达不到想要的效果,比如需要增加一个信用卡在线支付,或者分期支付.这是ec没有的功能,就需要针对源码进行改动.价格不定,但比模板制作要高.参考数据字典重要的表:Ecs_goods表:商品表Ecs_category :栏目表Ecs_brand:栏目表Order_info 订单表Order_goods 订单对应的商品表.User 用户表User_account 管理员操作账户的记录表Account_log:用户的账户变动流水表Collect_goods: 用户收藏商品表Feedback表:留言表,不针对商品,直接针对店家留的言. Comment:是针对商品做的评论.Nav 表导航链接表,可以定制页面上的导航信息.1:Ecshop 属性面向过程+函数调用为主, 而且没用单入口模式具体的功能对应具体的页面.2:用的模板引擎是简化的smarty 模板.以goods.php 为例在init 中包含的页面,基本都是声明函数.(因为ec 是面向过程+函数来编程的)Lib_base.php : base 基地基础,此文件声明的是全网站甚至任何网站,都常用用到的函数,Sub_str : 截取中文无乱码的文件.Real_ip: 读取客户端IP, 从$_SERVER 来读的.Str_len: 计算字符串在视觉效果上的长度, 一个中文按2个字符算(因为多数情况下,一个中文的宽度是一个字母的2倍宽.)Get_crlf: 获取当前用户的换行符. Windows->\r\n, *nix->\n , mac->\rSend_mail : 发送邮件.Get_version:获得服务器环境的gd 库版本File_mode_info:获取文件的权限信息.Log_write: 记录日志到文件Mk_dir: 递归创建目录addslashes_deep:递归的对数组进行转义.addslashes_deep_obj: 递归对对象的属性进行转义.stripslashes_deep :递归反转义make_semiangle: 全角字符转半角check_file_type :检查文件后缀,一般检查后缀,直接通过截取文件名来实现.A.php==> a.jpg,伪装上传,带来攻击. Ngnix+PHP 某个版本,就有此漏洞.而check_file_type 是通过分析文件的头信息域来实现的.mysql_like_quote:对sql 语句扣like 条件进行转义,防止注入.real_server_ip:获取服务器端IP 地址ecs_geoip: 把IP 地址转为"省市地址".trim_right:中英文混杂时,去除右侧可能的乱码.Goods.php Require (Init.php) ........业务逻辑lib_base.php lib_common.php lib_main.php lib_insert.php lib_goods.phpread_static_cache:读文件缓存(把数组等信息序列化,放在文本里存储)write_static_cache:写文件缓存.Lib_common.php主要放置本网站要实现的一些功能的主要函数比如:Get_brand_list 获取品牌列表get_children:获取指定栏目的子孙栏目.本文件下的函数比较多,用到的再来讲解.Lib_main.php主要放置前台功能的函数库比如:update_user_info :更新用户的session信息get_user_info:获取用户的详细信息assign_ur_here:计算面包屑导航路径.assign_articles:获取文章列表并赋给smartyLib_inert.php放置的是在模板中局部不缓存时,调用的insert_开头的函数.Lib_goods.php是商品操作最频繁函数.小试牛刀:以商城标题中, 去除"powered by Ecshop"为例打开任意一个页面, 看其模板,以goods.php为例Goods.php->找模板->goods.dwt,分析模板的标签, 找到相应的{$page_title}标签回到goods.php里,必须推出--> assing('page_title',xxx)这个过程,再找到,===> $page_tile=>$position['title']=>$position==>assign_ur_here()函数留一下问题:在开发的过程中,有时需要清缓存才能看到效果如何彻底禁用缓存,方便开发时的调试.二次开发的大原则1:能后台配置,不去修改.2:能用js实现,不改模板(比如来一个隔行换色)3:能改模板的,不要改PHP4:能改PHP完成的,不要改数据库二次开发实战1)任意页面显示用户余额2)用户名/email都可以登陆3)商品页面自定义title,便于SEO4)商品按颜色选择功能5)去除页面底部的版本后,首页的底部随机出现"powered by ecshop"的字样,解决该问题.(提示:js)6)放大镜功能显示用户余额直接在/library/member_lbi中增加如右代码因为$user_info是系统赋给smarty的一个变量,而且此变量已经存在用户余额这个字段.用户名和email都可以登陆,在user.php中,第347行左右,增加如下代码思路:判断传来的是否是email,如果是email,则查询数据库,把email转成用户名.颜色或者尺码选择功能1:ec后台有商品的"属性管理",请利用此功能做开发(只需要用js或者改模板就能实现) 2:放大境可以利用js来实现.搜索"js放大境"商品页面自定义title,便于SEO功能讲解:商品页面的title信息是"商品名->栏目名->上级栏目名->网店名"这个规则来自动生成. 对于title,是SEO一个很重要的数据,自动生成的title很可能不符合SEO的需要.步骤:我们如何自定义title?答:首先在商品表增加title字段,然后在商品页面的.php文件中,读取此字段并赋给smarty然后再展示到模板上.从后台管理角度看:发布商品时,表单中应有自定义title表单项,并能提交入库.修改商品时,表单中也应有自定义title表单项,并能提交入库.实施:1:给ecs_goods商品表增加seotitle字段.alter table ecs_goods add seotitle varchar(60) not null default '' after goods_name;2:在后台修改商品发布时的表单项,增加"自定义title"表单项.3:admin/goods.php中的insert ,update代码段,分别接收此参数,并入库.4:修改/goods.php, 即前台商品页面,把seotitle赋给smarty5:在模板中,goods.dwt中, 做逻辑判断,展示seotitle或page_title商品颜色尺寸仿淘宝选择功能教程(2.7.0版本)注:此功能与具体的模板相关,无法写出通用教程.因为,此帖子以讲原理为主.请大家运用时举一反三,不要生搬硬套代码.也因为同样的原因,此篇帖子不回帖因个人安装导致的问题,只解决确实属于代码漏洞的问题.原理:1:css控制本来要显示的radio为一小矩形.2:当点击此小矩形时,js使此radio选中,同时改变此小矩形的外观样式.牵涉到的修改文件(default模板为例)/themes/default/style.css/themes/default/goods.dwt注:此路径待修改模板路径.修改步骤:一:控制样式1.打开/themes/ecshop/images加添图片test.gif.2.打开/themes/ecshop/style.css最下面添加:1/*--------------颜色选择器CSS添加-------------*/23.catt{width:100%;height:auto;overflow:hidden;padding-bottom:5px;}45.catt a{border: #c8c9cd 1px solid; text-align: center; background-color: #fff;margin-left:5px;margin-top:6px;padding-left: 10px;padding-right: 10px;display: block;white-space: nowrap; color: #000; text-decoration: none;float:left;}67.catt a:hover {border:#ff6701 2px solid; margin: -1px; margin-left:4px;margin-top:5px;}89.catt a:focus {outline-style:none;}1011.catt .cattsel {border:#ff6701 2px solid; margin: -1px;background: url("images/test.gif")no-repeat bottom right; margin-left:4px;margin-top:5px;}1213.catt .cattsel a:hover {border: #ff6701 2px solid;margin:-1px;background:url("images/test.gif") no-repeat bottom right;}复制代码3.打开/themes/ecshop/goods.dwt注:以下修改以原版ecshop2.7.0版本default(模板名称)为基准未修改前第347-351行14<!-- {foreach from=$spec.values item=value key=key} -->1516<label for="spec_value_{$value.id}">1718<input type="radio" name="spec_{$spec_key}" value="{$value.id}"id="spec_value_{$value.id}" {if $key eq 0}checked{/if} onclick="changePrice()" />1920{$bel} [{if $value.price gt 0}{$lang.plus}{elseif $value.price lt 0}{$lang.minus}{/if} {$value.format_price|abs}] </label><br />2122<!-- {/foreach} -->复制代码修改为:23<div class="catt">2425<!-- {foreach from=$spec.values item=value key=key} -->2627<a {if $key eq 0}class="cattsel"{/if} onclick="changeAtt(this)" href="javascript:;"name="{$value.id}" title="[{if $value.price gt 0}{$lang.plus}{elseif $value.price lt 0}{$lang.minus}{/if} {$value.format_price|abs}]">{$bel}<input style="display:none" id="spec_value_{$value.id}" type="radio" name="spec_{$spec_key}"value="{$value.id}" {if $key eq 0}checked{/if} /></a>2829<!-- {/foreach} -->3031</div>复制代码此处为是了将radio换成淘宝上那种小矩形样式显示在页面.二:增加js控制样式与选中行为在页面内找到<script>这样的东西,在其后面添加一个js函数32function changeAtt(t) {stChild.checked='checked';34for (var i = 0; i<t.parentNode.childNodes.length;i++) {35if (t.parentNode.childNodes[i].className == 'cattsel') {36t.parentNode.childNodes[i].className = '';37}38}39t.className = "cattsel";40changePrice();41}复制代码此处是为了控制选择页面上的颜色同时也选中了对应的隐藏input 从而来更改商品属性.如:价钱...等.如果是用户修改过的goods.dwt可搜索:function changePrice()在其上面添加.说明:1.以上修改会将商品属性部分所有radio修改.2.由于用户goods.dwt可能都被修改过,用户请根据自己的实际情况修改.3:对于颜色选择功能,这是目前本论坛上最简单的实现方法.文中所用附件test.gif如下:效果图如下:模板制作1:首先把模板,css,images按照ec的模板规定好的层次组织好. /模板目录模板文件.dwt/library (被包含的模板的局部,如头部,尾部)/images.css2: 模板的命名Ec如何知道该模板的名称,版本, 作者,缩略等信息答:每套模板下面,必须有一个css,叫做style.css该css的顶部注释,即为该模板的信息说明.例:见下/*Template Name: ECSHOP DefaultTemplate URI: /Description: haoyigo.Version: 2.6.2Author: ECSHOP TeamAuthor URI: /Logo filename: logo.gif*/模板的缩略图:从images/screenshot.png 当作模板的缩略图.问题的提示:严格级别下,只允许引用传递变量,不允许引用传递返回值。

Ecshop二次开发会员中心添加修改积分明细以及其他小功能定制

Ecshop二次开发会员中心添加修改积分明细以及其他小功能定制等级积分会员优惠铜牌会员10000购物时额外优惠1%银牌会员50000购物时额外优惠2%金牌会员100000购物时额外优惠3%1.languages/zh_cn/user.php,666行左右,把'$_LANG['user_reg_info'][2]'修改为'不注册为会员不可以在本店购买商品'668行左右,把$_LANG['user_reg_info'][3]修改为'注册之后您可以'2.删除左侧的5个选项themes/joyo25/library/user_menu.lbi,删除以下5行:{$bel_tag}{$bel_booking}{$bel_bonus}{$bel_affiliate}{$bel_track_packages}3.给字体设置颜色,删除红包themes/joyo25/user_clips.dwt,26行左右,把{$info.shop_name}修改为:{$info.shop_name}41行左右,注释42行左右,把{$info.integral}修改为:{$info.integral}4.删除资金管理里面的提现并修改颜色themes/joyo25/user_transaction.dwt,644行左右,把{$lang.surplus_type_0} | {$lang.surplus_type_1} | {$lang.add_surplus_log} | {$lang.view_application}修改为{$lang.surplus_type_0}| {$lang.add_surplus_log}| {$lang.view_application}5.添加积分明细languages/zh_cn/user.php,36行左右,添加:$_LANG['label_integral_surplus'] = '积分明细';languages/en_us/user.php,36行左右,添加:$_LANG['label_integral_surplus'] = 'Integral Details';themes/joyo25/library/user_menu.lbi,15行左右,添加:{$bel_integral_surplus}themes/joyo25/user_transaction.dwt,230行左右,添加:{$bel_integral_surplus}includes/lib_order.php,1342行左右,添加一个函数:/*** 取得用户积分* @param int $user_id 用户id* @return int 用户积分*/function get_user_integral($user_id){$sql = 'SELECT * FROM ' . $GLOBALS['ecs']->table('users') .' WHERE user_id = '$user_id'';$user = $GLOBALS['db']->getRow($sql);return $user['pay_points'];}user.php,35行左右,把$ui_arr = array('register', 'login', 'profile', 'order_list', 'order_detail', 'address_list', 'collection_list','message_list', 'tag_list', 'get_password', 'reset_password', 'booking_list', 'add_booking', 'account_raply','account_deposit', 'account_log', 'account_detail', 'act_account', 'pay', 'default', 'bonus', 'group_buy', 'group_buy_detail', 'affiliate','comment_list','validate_email','track_packages','transform_points','qpassword_name', 'get_passwd_question', 'check_answer');修改为:$ui_arr = array('register', 'login', 'profile', 'order_list', 'order_detail', 'address_list', 'collection_list','message_list', 'tag_list', 'get_password', 'reset_password', 'booking_list', 'add_booking', 'account_raply','account_deposit', 'account_log', 'account_detail', 'act_account', 'pay', 'default', 'bonus', 'group_buy', 'group_buy_detail', 'affiliate', 'comment_list','validate_email','track_packages','transform_points','qpassword_name', 'get_passwd_question', 'check_answer', 'integral_log');user.php,805行左右,在elseif ($action == 'order_list')循环下面添加:/* 会员积分明细界面 */elseif ($action == 'integral_log'){include_once(ROOT_PATH . 'includes/lib_clips.php');include_once(ROOT_PATH . 'includes/lib_order.php');$page = isset($_REQUEST['page']) ? intval($_REQUEST['page']) : 1;$account_type = 'pay_points';/* 获取记录条数 */$sql = 'SELECT COUNT(*) FROM ' .$ecs->table('account_log').' WHERE user_id = '$user_id'' .' AND $account_type <> 0 ';$record_count = $db->getOne($sql);//分页函数$pager = get_pager('user.php', array('act' => $action), $record_count, $page);//获取剩余积分$surplus_amount = get_user_integral($user_id);if (empty($surplus_amount)){$surplus_amount = 0;}//获取积分记录$account_log = array();$sql = 'SELECT * FROM ' . $ecs->table('account_log') .' WHERE user_id = '$user_id'' .' AND $account_type <> 0 ' .' ORDER BY log_id DESC';$res = $GLOBALS['db']->selectLimit($sql, $pager['size'], $pager['start']);while ($row = $db->fetchRow($res)){$row['change_time'] = local_date($_CFG['date_format'], $row['change_time']);$row['type'] = $row[$account_type] > 0 ? $_LANG['account_inc'] : $_LANG['account_dec'];$row['user_money'] = price_format(abs($row['user_money']), false);$row['frozen_money'] = price_format(abs($row['frozen_money']), false);$row['rank_points'] = abs($row['rank_points']);$row['pay_points'] = abs($row['pay_points']);$row['short_change_desc'] = sub_str($row['change_desc'], 60);$row['amount'] = $row[$account_type];$account_log[] = $row;}//模板赋值$smarty->assign('surplus_amount',price_format($surplus_amount, false));$smarty->assign('account_log', $account_log);$smarty->assign('pager', $pager);$smarty->display('user_transaction.dwt');}6.添加积分说明languages/zh_cn/user.php,37行左右,添加:$_LANG['label_integral_explanation'] = '积分说明';languages/en_us/user.php,37行左右,添加:$_LANG['label_integral_explanation'] = 'Integral Explanation';themes/joyo25/library/user_menu.lbi,14行左右,添加:{$bel_integral_explanation}themes/joyo25/user_transaction.dwt,260行左右,添加:1.2.3.{$bel_integral_explanation}4.5.所有会员在乐博商城购物均可获得积分,积分可以用来参与兑换活动。

Ecshop二次开发

Ecshop二次开发,增加用户订单编辑功能/post/74.htmlEcshop是一款开源免费的网上商店系统。

功能很强大,但是也有很多的不足,不过幸好该系统是开源的,可以自己修改扩展进行ecshop二次开发。

呵呵,下面就介绍一下怎么我扩展用户的订单编辑功能。

第一步:准备模版文件。

修改模板文件中的user_transaction.dwt。

在文件中增加一段用户显示用户编辑订单的界面模版,其实该模版可以从该文件中的详细订单显示界面模板修改过来,只要截取商品列表和费用总计部分就好!1、搜索”<!– {if $allow_to_cart} –>”,在该代码的前面加入:<!– {if $allow_to_modify} –><a href="user.php?act=modify&order_id={$order.order_id}">编辑订单</a><!– {/if} –>2、搜索“<!– #BeginLibraryItem "/library/help.lbi" –>”,在其之前加入:<!–修改订单–><!–{if $action eq "modify"} –>{insert_scripts files=‟transport.js‟}<div class="titles">修改订单</div><div class="listbox"><form action="user.php" name="list" method="post"><table width="100%" id="orderlist2"><tr><th>{$lang.goods_name}</th><th>{$lang.goods_attr}</th><th align="right">{$lang.goods_price}<!–{if $order.extension_code eq "group_buy"} –>{$lang.gb_deposit}<!– {/if} –></th><th width="60px;" style="text-align:center">{$lang.number}</th><th width="60px;" class="rightborder">{$lang.subtotal}</th><th width="60px;" class="rightborder">操作</th></tr><!– {foreach from=$goods_list item=goods} –><tr><td><a href="goods.php?id={$goods.goods_id}" target="_blank">{$goods.goods_name}</a><!– {if $goods.parent_id > 0} –><span style="color:#FF0000">({$lang.accessories})</span><!– {elseif $goods.is_gift} –><span style="color:#FF0000">({$rgess})</span><!– {/if} –></td><td>{$goods.goods_attr|nl2br}</td><!–<td>{$goods.market_price}</td>–><td >{$goods.goods_price}</td><td ><input type=text name=good_number[{$goods.goods_id}] size=5 value="{$goods.goods_number}" style="text-align:center"></td><td class="rightborder">{$goods.subtotal}</td><td style="text-align:center;line-height:150%"><a href="javascript:if (confirm(‟你确定要删除该商品吗?‟)) location.href=‟user.php?act=modify&do=del&oid={$order.order_id}&bid={$goods.goods_id}‟; ">{$lang.drop}</a></td></tr><!– {/foreach} –><tr><td colspan="8" style="border-top:1px dotted #DADADA;text-align:right;">{$lang.shopping_money}<!–{if $order.extension_code eq "group_buy"} –>{$lang.gb_deposit}<!– {/if} –>: {$order.formated_goods_amount}</td></tr></table><table width="716" border="0" cellspacing="0" cellpadding="0"><tr><td width="300" height="50" align="center" valign="bottom"><input type="image" src="images/edit_button.gif" width="100" height="40" border="0" /></td><td width="416">&nbsp;</td></tr></table><input type="hidden" name="do" value="update"><input type="hidden" name="act" value="modify"><input type="hidden" name="oid" value="{$order.order_id}"></form></div><div class="titles">费用总计</div><div class="listbox"><table width="100%" border="0" align="center" cellpadding="4" cellspacing="2"><tr><td align="right">{$lang.goods_all_price}<!–{if $order.extension_code eq "group_buy"} –>{$lang.gb_deposit}<!– {/if} –>: {$order.formated_goods_amount}<!– {if $order.discount gt 0} 折扣–>- {$lang.discount}: {$order.formated_discount}<!– {/if} –><!– {if $order.tax gt 0} –>+ {$lang.tax}: {$order.formated_tax}<!– {/if} –><!– {if $order.shipping_fee > 0} –>+ {$lang.shipping_fee}: {$order.formated_shipping_fee}<!– {/if} –><!– {if $order.insure_fee > 0} –>+ {$lang.insure_fee}: {$order.formated_insure_fee}<!– {/if} –><!– {if $order.pay_fee > 0} –>+ {$lang.pay_fee}: {$order.formated_pay_fee}<!– {/if} –><!– {if $order.pack_fee > 0} –>+ {$lang.pack_fee}: {$order.formated_pack_fee}<!– {/if} –><!– {if $order.card_fee > 0} –>+ {$lang.card_fee}: {$order.formated_card_fee}<!– {/if} –></td></tr><tr><td align="right"><!– {if $order.money_paid > 0} –>- {$lang.order_money_paid}: {$order.formated_money_paid}<!– {/if} –><!– {if $order.surplus > 0} –>- {$e_surplus}: {$order.formated_surplus}<!– {/if} –><!– {if $order.integral_money > 0} –>- {$e_integral}: {$order.formated_integral_money}<!– {/if} –><!– {if $order.bonus > 0} –>- {$e_bonus}: {$order.formated_bonus}<!– {/if} –></td></tr><tr><td align="right" style="border-top: 1px dotted #DADADA">{$lang.order_amount}: {$order.formated_order_amount}<!–{if $order.extension_code eq "group_buy"} –><br />{$lang.notice_gb_order_amount}<!– {/if} –></td></tr><!– {if $allow_edit_surplus} 如果可以编辑使用余额数–><tr><td align="right" style="border-top: 1px dotted #DADADA"><form action="user.php" method="post" name="formFee" id="formFee">{$e_more_surplus}:<input name="surplus" type="text" size="8" value="0" />{$max_surplus}<input type="submit" name="Submit" value="{$lang.button_submit}" /><input type="hidden" name="act" value="act_edit_surplus" /><input type="hidden" name="order_id" value="{$smarty.get.order_id}" /> </form></td></tr>{/if}</table></div><!–{/if}–><!–#修改订单–>第二步、编辑user.php文件1、在$ui_arr 中加入"modify“.* 显示页面的action列表*/$ui_arr = array(‟register‟, …login‟, …profile‟, …order_list‟, …modify…,‟order_detail‟, …address_list‟, …collection_list‟,'message_list‟, …tag_list‟, …get_password‟, …reset_password‟, …booking_list‟, …add_booking‟, …account_raply‟,'account_deposit‟, …account_log‟, …account_detail‟, …act_account‟, …pay‟, …default‟, …bonus‟, …group_buy‟, …group_buy_detail‟, …affiliate‟, …comment_list‟,'validate_email‟,'track_packages‟, …transform_points‟);2、在下面所示代码中,增加$smarty->assign(‟allow_to_modify‟,1);/* 未发货,未付款时允许更换支付方式和修改订单*/if ($order['order_amount'] > 0 && $order['pay_status'] == PS_UNPAYED && $order['shipping_status'] == SS_UNSHIPPED){$payment_list = available_payment_list(false, 0, true);$smarty->assign(‟allow_to_modify‟,1);3、在“//删除订单中的商品”的方面,加入下载代码:/*修改订单*/elseif($action==‟modify‟){function multiArraySearch($needle, $haystack){$value = false;$x = 0;foreach($haystack as $temp){// print_r($temp);$search = array_search($needle, $temp);if (strlen($search) > 0 && $search >= 0){$value[0] = $x;//$value[1] = $search;}$x++;}return $value;}include_once(ROOT_PATH . …includes/lib_transaction.php‟);include_once(ROOT_PATH . …includes/lib_payment.php‟);include_once(ROOT_PATH . …includes/lib_order.php‟);include_once(ROOT_PATH . …includes/lib_clips.php‟);if($_REQUEST['do']=="del"){$oid=$_REQUEST['oid'];$gid=$_REQUEST['bid'];$sql="select goods_price,goods_number from ".$ecs->table("order_goods")." where goods_id=$gid";$result=$db->getrow($sql);$order = get_order_detail($oid, $user_id);//取得订单$sql="delete from ".$ecs->table("order_goods")." where goods_id=$gid and order_id=$oid";//删除商品$db->query($sql);$sql="select configure from ".$ecs->table("shipping_area")." where shipping_id=".$order['shipping_id'];$shipping_fee=$db->getrow($sql);$tempa=unserialize($shipping_fee['configure']);$shipping=multiArraySearch("free_money",$tempa);$free_money=$tempa[$shipping[0]]['value'];//找出免运费的额度$market_price=$order['goods_amount']-$result['goods_price']*$result['goods_number'];$inv_id=array_search($order['inv_type'],$GLOBALS['_CFG']['invoice_type']['type']);$rate= floatval($GLOBALS['_CFG']['invoice_type']['rate'][$inv_id])/100;$tax=$order['tax']-($result['goods_price']*$result['goods_number'])*$rate;$addpay_fee=pay_fee($order['pay_id'],$result['goods_price']*$result['goods_number']);//删除的支付费用$pay_fee=$order['pay_fee']-$addpay_fee;$order_amount=$market_price-$discount+$tax+$pay_fee;$shipping_fee=$order['shipping_fee'];if($market_price>=$free_money){$order_amount=$order_amount-$shipping_fee;$shipping_fee="0.00";}else{if($shipping_fee<=0){$shipping=multiArraySearch("basic_fee",$tempa);$shipping_fee=$tempa[$shipping[0]]['value'];//找出基本运费的$order_amount=$order_amount+$shipping_fee;}}//更新订单信息$sql="update ".$ecs->table("order_info")." set goods_amount=‟".$market_price."‟,discount=‟".$discount."‟,shipping_fee=‟".$shipping_fee."‟,tax=‟".$tax."‟ ,pay_fee=‟".$pay_fee."‟,order_amount=‟".$order_amount."‟ where order_id=$oid";$db->query($sql);$order = get_order_detail($oid, $user_id);//再一次查检订单参数if($order['goods_amount']<=0){$sql="delete from ".$ecs->table("order_info")." where order_id=$oid";$db->query($sql);ecs_header("Location: user.php?act=order_list");exit();}ecs_header("Location: user.php?act=modify&order_id=".$oid);exit();}if($_REQUEST['do']=="update"){//更新商品数量$oid=$_REQUEST['oid'];$gid=$_REQUEST['bid'];$nums=$_REQUEST['good_number'];foreach($nums as $gid=>$num){$sql="select goods_price,goods_number from ".$ecs->table("order_goods")." where goods_id=$gid";$result=$db->getrow($sql);$order = get_order_detail($oid, $user_id);//取得订单$sql_storage = "SELECT goods_name,goods_number FROM " .$ecs->table(‟goods‟). " WHERE goods_id = $gid";$storage_num = $db->getRow($sql_storage);//库存if($result['goods_number']==$num){continue;}elseif($num<=0){show_message("对不起,您修改的商品数量不能为0,或小于0!", "返回", …user.php?act=modify&order_id=‟.$oid, …error‟);exit();}elseif ($num>$storage_num['goods_number']){show_message("对不起,您修改的商品数量不能大于该商品:".$storage_num['goods_name'].",库存数:".$storage_num['goods_number']."!", "返回", …user.php?act=modify&order_id=‟.$oid, …error‟);exit();}$addnum=$num-$result['goods_number'];$sql="update ".$ecs->table("order_goods")." set goods_number=".$num." where goods_id=$gid and order_id=$oid";//添加商品$db->query($sql);$sql="select configure from ".$ecs->table("shipping_area")." where shipping_id=".$order['shipping_id'];$shipping_fee=$db->getrow($sql);$tempa=unserialize($shipping_fee['configure']);$shipping=multiArraySearch("free_money",$tempa);$free_money=$tempa[$shipping[0]]['value'];//找出免运费的额度$market_price=$order['goods_amount']+$result['goods_price']*$addnum; //修改后商品总价格$inv_id=array_search($order['inv_type'],$GLOBALS['_CFG']['invoice_type']['type']);$rate=floatval($GLOBALS['_CFG']['invoice_type']['rate'][$inv_id])/100;$tax=$order['tax']+($result['goods_price']*$addnum)*$rate;//修改后税额$addpay_fee=pay_fee($order['pay_id'],$result['goods_price']*$addnum- $school_dis);//支付费用$pay_fee=$order['pay_fee']+$addpay_fee;$order_amount=$order['order_amount']+($result['goods_price']*$addnum)-$school_dis+($result[' goods_price']*$addnum)*$rate+$addpay_fee;//修改后订单总额$shipping_fee=$order['shipping_fee'];if($market_price>=$free_money){$order_amount=$order_amount-$shipping_fee;$shipping_fee="0.00";}else{if($shipping_fee<=0){$shipping=multiArraySearch("basic_fee",$tempa);$shipping_fee=$tempa[$shipping[0]]['value'];//找出基本运费的$order_amount=$order_amount+$shipping_fee;}}//更新订单信息$sql="update ".$ecs->table("order_info")." set goods_amount=‟".$market_price."‟,discount=‟".$discount."‟,shipping_fee=‟".$shipping_fee."‟,tax=‟".$tax."‟,pay_fee=‟".$pay_fee."‟ ,order_amount=‟".$order_amount."‟ where order_id=$oid";$db->query($sql);}$order = get_order_detail($oid, $user_id);//再一次查检订单参数if($order['goods_amount']<=0){$sql="delete from ".$ecs->table("order_info")." where order_id=$oid";$db->query($sql);ecs_header("Location: user.php?act=order_list");exit();}ecs_header("Location: user.php?act=order_detail&order_id=".$oid);exit();}$order_id = isset($_GET['order_id']) ? intval($_GET['order_id']) : 0;$order = get_order_detail($order_id, $user_id);/* 订单商品*/$goods_list = order_goods($order_id);foreach ($goods_list AS $key => $value){$goods_list[$key]['market_price'] = price_format($value['market_price'], false);$goods_list[$key]['goods_price'] = price_format($value['goods_price'], false);$goods_list[$key]['subtotal'] = price_format($value['subtotal'], false);}$smarty->assign(‟order‟, $order);$smarty->assign(‟goods_list‟, $goods_list);$smarty->display(‟user_transaction.dwt‟);}。

ecshop二次开发指定文章输出

ecshop模板中经常会使用到文章内容输出,一方面可以提供网站收录,另一方便对商品促销也起到一定的作用。

默认的ecshop模板是按添加输出文章内容,不会按照使用指定栏目输出,指定文章栏目输出需要通过修改ecshop程序达到。

思路:通过get_cat_articles()函数获取文章列表,在使用的文件中注册。

过程如下(以首页为例):第一步:打开index.php文件,约100行左右添加代码:$smarty->assign('my_articles', get_cat_articles(11,1,4));具体参数的值可以查看get_cat_articles()函数注解,ecshop在这方面做的很详细第二步:打开index.dwt模板文件,开始输出内容,代码如下(模板代码可自行书写,此处只做说明):<!--{foreach from=$my_articles item=article}--><li>[<a href="{$article.cat_url}">{$article.cat_name}</a>] <a href="{$article.url}"title="{$article.title|escape:html}">{$article.short_title|truncate:10:"...":true}</a> </li><!--{/foreach}-->后台添加完栏目,需要指定该栏目输出文章内容只要修改下index.php中的$smarty->assign('my_articles', get_cat_articles(11,1,4));参数就可以了,不用再修改模板。

ecshop二次开发手册

ecshop二次开发手册【基本结构】【基本熟悉】前言:ECSHOP是一套完整的网络商店解决方案,包括前台的商品展示、购物流程和强大易用的后台管理。

由于ecshop简单易用,使用者几乎可以在3几分钟简单的设置一下就可以拥有一个网上商店系统,所以很多的B2C站点都选择了使用ECShop网上商店系统,但是有时候我们需要做一些ecshop本来没有的功能或者前端展示,这时候就需要我们自己去进行对ecshop的二次开发了。

一、ecshop系统功能二次开发ecshop的代码结构非常易懂,只有有一点php基础都可以在原有的程序基础上进行修改,或功能插件的开发。

ecshop中的一些公用函数都会放在includes文件夹里,而这些公用函数几乎我们都可以用来参照一下就能轻松做出我们想要的其他功能了。

我们要对ecshop进行二次开发,简单来说其实就是对数据库的读写操作,所以只要我们读懂ecshop的数据库操作类,接下来的实现就很轻松了。

ecshop的数据库操作类是很强大的,一些常用的函数如下:1.获取单条记录$GLOBALS['db']->getRow($sql);2.获取单一字段$GLOBALS['db']->getOne($sql);例如查询产品总数:echo $GLOBALS['db']->getOne(‘SELECT COUNT(*) FROM ‘ .$GLOBALS['ecs']->table(‘goods’) ;3.获取所有记录$GLOBALS['db']->getAll($sql);4.执行sql语句$GLOBALS['db']->query($sql);//执行删除(DELETE),插入(INSERT),更新(UPDATE)等操作可用此方法5.把数组元素插入数据库$parent['goods_number'] = ’1′;$parent['parent_id'] = 0;$GLOBALS['db']->autoExecute($GLOBALS['ecs']->table(‘cart’), $parent, ‘INSERT’);基于此基础上就能轻松进行ecshop二次开发了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档