ecshop函数大全
- 格式:doc
- 大小:43.50 KB
- 文档页数:13
[php]function cat_options($spec_cat_id, $arr){static $cat_options = array();if (isset($cat_options[$spec_cat_id])){return $cat_options[$spec_cat_id];}/*初始化关键参数:$level:当前子节点深度$last_cat_id:当前父节点ID$options:带有缩进级别的数组$cat_id_array:沿同一路径的父节点依次进驻$level_array:该节点的子节点深度,也是依次进驻*/if (!isset($cat_options[0])){$level = $last_cat_id = 0;$options = $cat_id_array = $level_array = array();while (!empty($arr))//如果还有待构造的节点则继续遍历{foreach ($arr AS $key => $value){$cat_id = $value['cat_id'];//一级分类结点if ($level == 0 && $last_cat_id == 0){if ($value['parent_id'] > 0){break;}$options[$cat_id] = $value;$options[$cat_id]['level'] = $level;$options[$cat_id]['id'] = $cat_id;$options[$cat_id]['name'] = $value['cat_name'];//遍历过了就不再遍历unset($arr[$key]);if ($value['has_children'] == 0){continue;}$last_cat_id = $cat_id;//下层结点的父亲结点$cat_id_array = array($cat_id);$level_array[$last_cat_id] = ++$level;continue;}//当前结点的父亲结点ID等于它的上一级结点IDif ($value['parent_id'] == $last_cat_id){$options[$cat_id] = $value;$options[$cat_id]['level'] = $level;$options[$cat_id]['id'] = $cat_id;$options[$cat_id]['name'] = $value['cat_name'];unset($arr[$key]);//遍历过了就不再遍历//如果当前结点有孩子则当前结点要进驻,但不再遍历;反之不进驻也不再遍历if ($value['has_children'] > 0){if (end($cat_id_array) != $last_cat_id){$cat_id_array[] = $last_cat_id;}$last_cat_id = $cat_id;//当现结点做为下一级结点的新的父亲结点$cat_id_array[] = $cat_id;//进驻$level_array[$last_cat_id] = ++$level;//当前结点的下一级结点深度}}elseif ($value['parent_id'] > $last_cat_id){//如果当前结点父亲深度大于目前父亲结点的深度则进行下一轮循环break;}}//endforeach$count = count($cat_id_array);if ($count > 1){//取出最后进驻的父亲节点作为当前父亲节点$last_cat_id = array_pop($cat_id_array);}elseif ($count == 1){if ($last_cat_id != end($cat_id_array)){//进驻的父亲结点只有一个时并且没有作为当前父亲节点时把它取出$last_cat_id = end($cat_id_array);}else{ //否则最后取出的父亲结点一定是一级分类结点$level = 0;$last_cat_id = 0;$cat_id_array = array();continue;}}if ($last_cat_id && isset($level_array[$last_cat_id])){//取出当前结点的深度$level = $level_array[$last_cat_id];}else{$level = 0;}}//end while,此时已完成非递归前序遍历构造树的工作,其中$options已保存了从根结点开始的所有结点带有分层性质的数组$cat_options[0] = $options;}else{$options = $cat_options[0];}//如果从0开始即取整个树则直接返回不再处理.if (!$spec_cat_id){return $options;}//否则开始从指定结点截取,以下比较简单我还是稍微说说吧,要说就说几个参数含义吧/*$spec_cat_id_level:截取结点的深度$spec_cat_id_array:最终返回的以该结点为根结点的一棵商品分类树最终返回的数组是这样排序的:按父亲结点大小,按直接父亲结点,按同一父亲结点这样的先根遍历,具个例子:一级结点有1,5 二级结点有2,6,7 三级结点有8,9,如果1的直接孩子是2,6而2的直接孩子是8,9;另外5的直接孩子是7那么最终的数组是这样排列的1->2->8->9->6->5->7*/else{if (empty($options[$spec_cat_id])){return array();}$spec_cat_id_level = $options[$spec_cat_id]['level'];foreach ($options AS $key => $value){if ($key != $spec_cat_id){unset($options[$key]);}else{break;}}$spec_cat_id_array = array();foreach ($options AS $key => $value){if (($spec_cat_id_level == $value['level'] && $value['cat_id'] != $spec_cat_id) || ($spec_cat_id_level > $value['level'])){break;}else{$spec_cat_id_array[$key] = $value;}}$cat_options[$spec_cat_id] = $spec_cat_id_array;return $spec_cat_id_array;}}[/php]。
ecshop调用特定数量的特定分类的推荐、最新及精品商品最近都在搞ECSHOP的程序,网站建设过程中难免碰到网店等的网页网页设计,下面是关于ecshop调用特定数量的特定分类的推举产品的解决办法,数量的控制:【修改 lib_goods. 中 get_recommend_goods 函数, $num = get_library_number($data);挺直为$num赋值,就跳过了模板对推举数量的调用了】假如要自定义一个数量,在get_recommend_goods函数后多加一个可选参数,$rec_number=0 代码改为 if($rec_number==0) $num = get_library_number($data);ee $num = $rec_number; 关于分类的控制:在ind.php找到$smarty- assign( new_goods , get_recommend_goods( new )); // 最新商品修改为下面代码即可 $children = get_children(黄龙玉的大类ID); $smarty- assign( new_goods ,get_egory_recommend_goods( new , $children)); 试验胜利,详细步骤:【1、】lib_goods.php 函数get_category_recommend_goods,增强第三位参数$cat_num = 0 把$num =get_library_number($type2lib[$type]); 改为: if($cat_num==0) $num = get_library_number($type2lib[$type]); else $num = $cat_num; 【2、】index.php $children41 = get_children(41);第1页共1页。
ecshop计算各种价格函数function get_final_price($goods_id, $goods_num = '1', $is_spec_price = false, $spec = array()) {$final_price = '0'; //商品最终购买价格$volume_price = '0'; //商品优惠价格$promote_price = '0'; //商品促销价格$user_price = '0'; //商品会员价格//取得商品优惠价格列表$price_list = get_volume_price_list($goods_id, '1');if (!empty($price_list)){foreach ($price_list as $value){if ($goods_num >= $value['number']){$volume_price = $value['price'];}}}//取得商品促销价格列表/* 取得商品信息 */$sql = "SELECT g.promote_price, g.promote_start_date, g.promote_end_date, "."IFNULL(er_price, g.shop_price * '" . $_SESSION['discount'] . "') AS shop_price "." FROM " .$GLOBALS['ecs']->table('goods'). " AS g "." LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp "."ON mp.goods_id = g.goods_id AND er_rank = '" . $_SESSION['user_rank']. "' "." WHERE g.goods_id = '" . $goods_id . "'" ." AND g.is_delete = 0";$goods = $GLOBALS['db']->getRow($sql);/* 计算商品的促销价格 */if ($goods['promote_price'] > 0){$promote_price = bargain_price($goods['promote_price'], $goods['promote_start_date'], $goods['promote_end_date']);}else{$promote_price = 0;}//取得商品会员价格列表$user_price = $goods['shop_price'];//比较商品的促销价格,会员价格,优惠价格if (empty($volume_price) && empty($promote_price)){//如果优惠价格,促销价格都为空则取会员价格$final_price = $user_price;}elseif (!empty($volume_price) && empty($promote_price)){//如果优惠价格为空时不参加这个比较。
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由必填项改为非必填项看到论坛里有不少朋友发帖询问解决办法,故共享之。
ecshop购买数量的加减按钮,加一个减一个代码,商品数量加减代码方法一:1.复制以下JS代码,添加到 js/common.js 的最后function cart_number(txt_id, type, num){ num = num || 1;var txt = document.getElementByIdx_x_x(txt_id);var source_num = parseInt(txt.value);if (source_num == 1 && type == '-'){alert('请最少购买一个商品');return;}var to_num = source_num;if (type == '+'){to_num += num;}else if (type == '-'){to_num -= num;}txt.value = to_num;showdiv(txt);}2.在flow.dwt中找到购买数量的文本框,在他的前后分别加上<ahref="javascript:cart_number('goods_number_{$goods.rec_id}', '-');">-</a><ahref="javascript:cart_number('goods_number_{$goods.rec_id}', '+');">+</a>方法二:在flow.dwt中找到购买数量的文本框,在他的前后分别加上<IMG style="PADDING-LEFT: 0px; CURSOR: pointer"onclick='if(document.getElementByIdx_x("number").value>1){document.g etElementByIdx_x("number").value--;}'src="images/down.gif" ><INPUT id=number style="WIDTH: 40px; TEXT-ALIGN: right" maxLength=4value=1 name=cart_quantity><IMG style="PADDING-RIGHT: 30px; MARGIN: 0px; WIDTH: 25px; CURSOR: pointer" onclick='document.getElementByIdx_x("number").value ++;'src="images/up.gif" >。
教你ecshop如何调用指定分类下的精品产品列表教你ecshop如何调用指定分类下的精品产品列表(2012-03-03 11:59:07)转载▼标签:调用循环次数纵向分类: ecshop列表精品杂谈原理其实很简单,根据ecshop分类id读取产品列表下,属于精品部分的产品,分析好原理后,我们开始来写代码:goods.php//// 获得cat_id精品列表。
//// @access private// @param integer// @return array//function index_get_cat_id_goods_best_list($cat_id, $num){$sql = 'Select g.goods_id, g.goods_name, g.goods_name_style, g.market_price, g.shop_price, g.promote_price, ' ."promote_start_date, promote_end_date, g.goods_brief, g.goods_thumb, goods_img, " ."g.is_best, g.is_new, g.is_hot, g.is_promote " .'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' ."Where g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 AND g.is_best = 1 AND g.cat_id = '$cat_id'"." LIMIT $num";$res = $GLOBALS['db']->getAll($sql);$goods = array();foreach ($res AS $idx => $row){$goods[$idx]['id'] = $row['article_id'];$goods[$idx]['id'] = $row['goods_id'];$goods[$idx]['name'] = $row['goods_name'];$goods[$idx]['brief'] = $row['goods_brief'];$goods[$idx]['brand_name'] = $row['brand_name'];$goods[$idx]['goods_style_name'] = add_style($row['goods_name'],$row['goods_name_style']);$goods[$idx]['short_name'] = $GLOBALS['_CFG']['goods_name_length'] > 0 ?sub_str($row['goods_name'],$GLOBALS['_CFG']['goods_name_length']) : $row['goods_name'];$goods[$idx]['short_style_name'] = add_style($goods[$idx]['short_name'],$row['goods_name_style']);$goods[$idx]['market_price'] = price_format($row['market_price']);$goods[$idx]['shop_price'] =price_format($row['shop_price']);$goods[$idx]['thumb'] = empty($row['goods_thumb']) ? $GLOBALS['_CFG']['no_picture'] : $row['goods_thumb'];$goods[$idx]['goods_img'] = empty($row['goods_img']) ? $GLOBALS['_CFG']['no_picture'] : $row['goods_img'];$goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);}return $goods;}声明后用$smarty调用$smarty->assign('cat_id2_best_goods',index_get_cat_id_goods_best_list(2,4));//2指分类id,4指循环次数然后就可以在dwt模板文件里开始调用了具体调用方法有两种,因为产品调用要是先js调用的效果的话,就是有H和V两种,图片价格和文字标题两种.如果是横向调用4个产品,带图片价格等.可以这样写<!--{foreach from=$cat_id2_best_goods item=goods}--><div class="goodsItem" style="float:left ; margin-left:10px;" ><a href="{$goods.url}"><img src="{$goods.thumb}" alt="{$|escape:html}" class="goodsimg" width="100" height="100" /></a><br /><p><a href="{$goods.url}" title="{$|escape:html}">{$goods.short_name|trunca te:7:true}</a></p><div class="shop_s" style="text-align:center; color:#CC0000" ><strong>{$goods.shop_price}</strong></div></div><!--{/foreach}-->如果需要调用纵向标题列表的话只需要把item=goods修改成item=list,然后删掉不需要的调用代码即可<!--{foreach from=$cat_id11_best_goods item=list}--><li><a href="{$list.url}" title="{$|escape:html}">{$|truncate:15:true}</ a></li><!--{/foreach}-->其实横向纵向的排列方式在模板文件里修改也可以,但方法都一样,就是在css里修改.加个float:left即可.。
ECSHOP常用后台SQL命令ECSHOP常用后台SQL命令并非适用于所有人。
特别注意:操作前注意备份好数据库。
(1)ECSHOP更新商品静态url:UPDATE ec272u2.ecs_goods SET goods_url = '4545444' WHERE ecs_goods.goods_id =3509 LIMIT 1 ;(2)ECSHOP更新商品seo标题:ALTERTABLE ecs_category ADD cat_seoname VARCHAR( 255 ) NOTNULLAFTER cat_seoname(3)ECSHOP更新商品clicks_count到小于800的点击:UPDATE [Case] SET click_count = click_count + CAST(CEILING(RAND(checksum(NEWID())) * 800) AS int) WHERE (Hits < 100) ;UPDATE ecs_goods SET click_count = click_count + 100 WHERE (click_count < 100);(4) ECSHOP更新商品salesvolume AND (/**FLOOR(x)返回小于x的最大整数值 RAND() 返回在范围0到1.0内的随机浮点值2。
ALTERTABLE ecs_goods ADD goods_salesvolume inNULLods_weight ;UPDATE ecs_goods set goods_salesvolume= FLOOR(1 +(RAND() * 2345));(5) ECSHOP批量更新替换货号UPDATE ecs_goods SET goods_sn = CONCAT('it',goods_id,'-', seller_note) where ;(6) ECSHOP更新订单初始基数,批量上下架alter table ecs_order_info AUTO_INCREMENT=10000;UPDATE ecs_goods SET is_on_sale = 1 where goods_id > ;(7)ECSHOP批量更新替换商品名称UPDATE ecs_goods SET goods_name = replace (goods_name,'Kate Co','') WHERE goods_name` LIKE '%Kate&Co%'; 分大小写请注意:操作会直接影响数据库,以防万一,请操作前注意备份。
先从index.php主页开始页面关键字{$keywords}页面标题{$page_title}产品分类父分类列表{foreach from=$categories item=cat}父分类超链接[url==”{$cat.url}”>{$|escape:html}</a>相对应子分类{foreach from=$cat.children item=child}子分类超链接[url==”{$child.url}”>{$|escape:html}</a>促销产品{if$promotion_info}检验是否存在促销产品,不存在就不显示相关信息促销产品列表{foreach from=$promotion_info item=item key=key}里面还有很多标签,没弄明白,以后在添加,修改订单查询{if empty($order_query)}同上看下就知道了订单用户ID{if$order_er_id}订单数量{$lang.order_number}订单编号{$order_query.order_sn}里面还有很多标签,没弄明白,以后在添加,修改发货查询{if$invoice_list}当有完成的订单测显示发货列表{foreach from=$invoice_list item=invoice}订单号名称{$lang.order_number}订单号{$invoice.order_sn}发货单名称{$lang.consignment}发货单号{$invoice.invoice_no}销售排行{if$top_goods}看看就知道销售列表{foreach name=top_goods from=$top_goods item=goods}产品短名称{$goods.short_name}看例子:<!–{foreach name=top_goods from=$top_goods item=goods}–><li class=”top10-li-{$smarty.foreach.top_goods.iteration}”>[url==”{$goods.url}”title=”{$|escape:html}”>{$goods.short_name} </a></li><!–{/foreach}–>精品推荐{if$best_goods}看看就知道精品推荐列表{foreach from=$best_goods item=goods}市场价名称{$lang.market_price}市场价价格{$goods.market_price}促销价名称{$lang.promote_price}促销价价格{$goods.promote_price}商店价名称{$lang.shop_price}商店价价格{$goods.shop_price}大家看到了吗??{$lang.xxxx_xxxx}以lang开头的为相对应的名称{$goods.xxxx_xxxx}以goods开头的为价格{$page_title}网站标题{$keywords}网站关键字标签{$description}网站描述标签{$shop_notice}商店公告$new_articles新文章{$article.short_title}调用文章标题{foreach from=$new_articles item=article}循环的开始,{/foreach}循环的结束item-->具体意义和用法?表格一行一行的循环<table>{foreach from=$new_articles item=article}<tr><td>{$article.short_title}</td></td>{/foreach}</table>from=$best_goods表示循环的内容来自$best_good $best_goods精品商品推荐的标签{$goods.short_style_name}表示goods这个对象的商品名称$new_goods新品上市$hot_goods热卖商品$categories分类的标签$goods_list商品标签商品图片:<img src={$goods.goods_img}/>商品名称:{$goods.goods_style_name}商品货号:{$goods.goods_sn}<br>商品品牌:{$goods.goods_brand}商品数量:{$goods.goods_number}单位:{$goods.measure_unit}添加时间:{$goods.add_time}市场价格:{$goods.market_price}本店价格:{$goods.shop_price_formated}注册用户价格:{$rank_price.price}注册用户价格:{$rank_price.price}注册用户价格:{$rank_price.price}商品id为1的商品http://localhost/ecshop/goods.php?id=1邮件模板管理商城在进行某些操作时可以向用户发送邮件提示。
ecshop 函数列表大全所有函数功能说明:lib_time.phpgmtime()P: 获得当前格林威治时间的时间戳 /$0server_timezone()P: 获得服务器的时区 /$0local_mktime($hour = NULL , $minute= NULL, $second = NULL, $month = NULL, $day = NULL, $year = NULL)P: 生成一个用户自定义时区日期的GMT时间戳local_date($format, $time = NULL)P: 将GMT时间戳格式化为用户自定义时区日期gmstr2time($str)P: 转换字符串形式的时间表达式为GMT时间戳local_strtotime($str)P: 将一个用户自定义时区的日期转为GMT时间戳local_gettime($timestamp = NULL)P: 获得用户所在时区指定的时间戳local_getdate($timestamp = NULL)P: 获得用户所在时区指定的日期和时间信息lib_base.phpsub_str($str, $length = 0, $append = true)P: 截取UTF-8编码下字符串的函数real_ip()P: 获得用户的真实IP地址str_len($str)P: 计算字符串的长度(汉字按照两个字符计算)get_crlf()P: 获得用户操作系统的换行符send_mail($name, $email, $subject, $content, $type = 0, $notification=false) P: 邮件发送gd_version()P: 获得服务器上的 GD 版本file_get_contents($file)P: 如果系统不存在file_get_contents函数则声明该函数file_put_contents($file, $data, $flags = '')P: 如果系统不存在file_put_contents函数则声明该函数floatval($n)P: 如果系统不存在 floatval 函数则声明该函数file_mode_info($file_path)P: 文件或目录权限检查函数log_write($arg, $file = '', $line = '')P: 写入日志内容make_dir($folder)P: 检查目标文件夹是否存在,如果不存在则自动创建该目录gzip_enabled()P: 获得系统是否启用了 gzipaddslashes_deep($value)P: 递归方式的对变量中的特殊字符进行转义addslashes_deep_obj($obj)P: 将对象成员变量或者数组的特殊字符进行转义stripslashes_deep($value)P: 递归方式的对变量中的特殊字符去除转义make_semiangle($str)P: 将一个字串中含有全角的数字字符、字母、空格或'%+-()'字符转换为相应半角字符check_file_type($filename, $realname = '', $limit_ext_types = '')P: 检查文件类型 /文件名/真实文件名/允许的文件类型mysql_like_quote($str)P: 对 MYSQL LIKE 的内容进行转义过滤掉_ %等字符.real_server_ip()P: 获取服务器的ipecs_header($string, $replace = true, $http_response_code = 0)P: 自定义 header 函数,用于过滤可能出现的安全隐患ecs_iconv($source_lang, $target_lang, $source_string = '')P: 自定义的编码转换ecs_geoip($ip)P: 取得IP的地址,采用IP库trim_right($str)P: 去除字符串右侧可能出现的乱码move_upload_file($file_name, $target_name = '')P: 将上传文件转移到指定位置json_str_iconv($str)P: 将JSON传递的参数转码get_file_suffix($file_name, $allow_type = array())P: 获取文件后缀名,并判断是否合法read_static_cache($cache_name)P: 读结果缓存文件write_static_cache($cache_name, $caches)P: 写结果缓存文件lib_common.php (公用函数库)db_create_in($item_list, $field_name = '')P: 创建像这样的查询: "IN('a','b')" $item_list为数组is_email($user_email)P: 验证输入的邮件地址是否合法is_time($time)P: 检查是否为一个合法的时间格式assign_query_info()P: 获得查询时间和次数,并赋值给smartyregion_result($parent, $sel_name, $type)P: 创建地区的返回信息get_regions($type = 0, $parent = 0)P: 获得指定国家的所有省份, 函数需要数据库支持.get_shipping_config($area_id)P: 获得配送区域中指定的配送方式的配送费用的计算参数比如快捷公司不同.init_users()P: 初始化会员数据整合类cat_list($cat_id = 0, $selected = 0, $re_type = true, $level = 0, $is_show_all = true)P: 获得指定分类下的子分类的数组, $re_type控制返回类型cat_options($spec_cat_id, $arr)P: 过滤和排序所有分类,返回一个带有缩进级别的数组load_config()P: 载入配置信息get_brand_list()P: 取得品牌列表get_brands($cat = 0, $app = 'brand')P: 获得某个分类下的品牌列表get_promotion_info($goods_id = '')P: 所有的促销活动信息get_children($cat = 0)P: 获得指定分类下所有底层分类的IDget_article_children ($cat = 0)P: 获得指定文章分类下所有底层分类的IDget_mail_template($tpl_name)P: 获取邮件模板order_action($order_sn, $order_status, $shipping_status, $pay_status, $note = '', $username = null)P: 记录订单操作记录price_format($price, $change_price = true)P: 格式化商品价格get_virtual_goods($order_id, $shipping = false)P: 返回订单中的虚拟商品记录是否发货.virtual_goods_ship(&$virtual_goods, &$msg, $order_sn, $return_result = false, $process = 'other')P: 虚拟商品发货virtual_card_shipping ($goods, $order_sn, &$msg, $process = 'other')P: 虚拟卡发货virtual_card_result($order_sn, $goods)P: 返回虚拟卡信息get_snatch_result($id)P: 获取指定 id snatch 活动的结果clear_tpl_files($is_cache = true, $ext = '')P: 清除指定后缀的模板缓存或编译文件clear_compiled_files($ext = '')P: 清除模版编译文件clear_cache_files($ext = '')P: 清除缓存文件clear_all_files($ext = '')P: 清除模版编译和缓存文件smarty_insert_scripts($args)P: 页面上调用的js文件,组合功能.smarty_create_pages($params)P: 创建分页的列表build_uri($app, $params, $append = '', $page = 0, $size = 0)P: 重写 URL 地址formated_weight($weight)P: 格式化重量log_account_change($user_id, $user_money = 0, $frozen_money = 0, $rank_points = 0, $pay_points = 0, $change_desc = '', $change_type = ACT_OTHER)P: 记录帐户变动article_cat_list($cat_id = 0, $selected = 0, $re_type = true, $level = 0)P: 获得指定分类下的子分类的数组/ 向下取数组.article_cat_options($spec_cat_id, $arr)P: 过滤和排序所有文章分类,返回一个带有缩进级别的数组uc_call($func, $params=null)P: 调用UCenter的函数exception_handler($errno, $errstr, $errfile, $errline)P: error_handle回调函数未启用.get_image_path($goods_id, $image='', $thumb=false, $call='goods', $del=false) P: 重新获得商品图片与商品相册的地址user_uc_call($func, $params = null)P: 调用使用UCenter插件时的函数get_volume_price_list($goods_id, $price_type = '1')P: 取得商品优惠价格列表get_final_price($goods_id, $goods_num = '1', $is_spec_price = false, $spec = array())P: 取得商品最终使用价格get_package_info($id)P: 获取指定id package 的信息get_package_goods($package_id)P: 获得指定礼包的商品lib_main.php (前台公用函数库)update_user_info()P: 更新用户SESSION,COOKIE及登录时间、登录次数。
ecshop二次开发函数大全所有函数功能说明:lib_time.phpgmtime()方法:获得当前格林威治时间的时间戳server_timezone()方法:获得服务器的时区local_mktime($hour = NULL , $minute= NULL, $second = NULL, $month = NULL, $day = NULL, $year = NULL)方法:生成一个用户自定义时区日期的GMT时间戳local_date($format, $time = NULL)方法:将GMT时间戳格式化为用户自定义时区日期gmstr2time($str)方法:转换字符串形式的时间表达式为GMT时间戳local_strtotime($str)方法:将一个用户自定义时区的日期转为GMT时间戳local_gettime($timestamp = NULL)方法:获得用户所在时区指定的时间戳local_getdate($timestamp = NULL)方法:获得用户所在时区指定的日期和时间信息lib_base.phpsub_str($str, $length = 0, $append = true)方法:截取UTF-8编码下字符串的函数real_ip()方法:获得用户的真实IP地址str_len($str)方法:计算字符串的长度(汉字按照两个字符计算)get_crlf()方法:获得用户操作系统的换行符send_mail($name, $email, $subject, $content, $type = 0, $notification=false) 方法:邮件发送gd_version()方法:获得服务器上的GD 版本file_get_contents($file)方法:如果系统不存在file_get_contents函数则声明该函数file_put_contents($file, $data, $flags = ”)方法:如果系统不存在file_put_contents函数则声明该函数floatval($n)方法:如果系统不存在floatval 函数则声明该函数file_mode_info($file_path)方法:文件或目录权限检查函数log_write($arg, $file = ”, $line = ”)方法:写入日志内容make_dir($folder)方法:检查目标文件夹是否存在,如果不存在则自动创建该目录gzip_enabled()方法:获得系统是否启用了gzipaddslashes_deep($value)方法:递归方式的对变量中的特殊字符进行转义addslashes_deep_obj($obj)方法:将对象成员变量或者数组的特殊字符进行转义stripslashes_deep($value)方法:递归方式的对变量中的特殊字符去除转义make_semiangle($str)方法:将一个字串中含有全角的数字字符、字母、空格或‟%+-()‟字符转换为相应半角字符check_file_type($filename, $realname = ”, $limit_ext_types = ”)方法:检查文件类型/文件名/真实文件名/允许的文件类型mysql_like_quote($str)方法:对MYSQL LIKE 的内容进行转义过滤掉_ %等字符.real_server_ip()方法:获取服务器的ipecs_header($string, $replace = true, $http_response_code = 0)方法:自定义header 函数,用于过滤可能出现的安全隐患ecs_iconv($source_l ang, $target_lang, $source_string = ”)方法:自定义的编码转换ecs_geoip($ip)方法:取得IP的地址,采用IP库trim_right($str)方法:去除字符串右侧可能出现的乱码move_upload_file($file_name, $target_name = ”)方法:将上传文件转移到指定位置json_str_iconv($str)方法:将JSON传递的参数转码get_file_suffix($file_name, $allow_type = array())方法:获取文件后缀名,并判断是否合法read_static_cache($cache_name)方法:读结果缓存文件write_static_cache($cache_name, $caches)方法:写结果缓存文件lib_common.php (公用函数库)db_create_in($item_list, $field_name = ”)方法:创建像这样的查询: “IN(…a‟,'b‟)” $item_list为数组is_email($user_email)方法:验证输入的邮件地址是否合法is_time($time)方法:检查是否为一个合法的时间格式assign_query_info()方法:获得查询时间和次数,并赋值给smartyregion_result($parent, $sel_name, $type)方法:创建地区的返回信息get_regions($type = 0, $parent = 0)方法:获得指定国家的所有省份, 函数需要数据库支持.get_shipping_config($area_id)方法:获得配送区域中指定的配送方式的配送费用的计算参数比如快捷公司不同. init_users()方法:初始化会员数据整合类cat_list($cat_id = 0, $selected = 0, $re_type = true, $level = 0, $is_show_all= true)方法:获得指定分类下的子分类的数组, $re_type控制返回类型cat_options($spec_cat_id, $arr)方法:过滤和排序所有分类,返回一个带有缩进级别的数组load_config()方法:载入配置信息get_brand_list()方法:取得品牌列表get_brands($cat = 0, $app = …brand‟)方法:获得某个分类下的品牌列表get_promotion_info($goods_id = ”)方法:所有的促销活动信息get_children($cat = 0)方法:获得指定分类下所有底层分类的IDget_article_children ($cat = 0)方法:获得指定文章分类下所有底层分类的IDget_mail_template($tpl_name)方法:获取邮件模板order_action($order_sn, $order_status, $shipping_status, $pay_status, $note = ”, $username = null)方法:记录订单操作记录price_format($price, $change_price = true)方法:格式化商品价格get_virtual_goods($order_id, $shipping = false)方法:返回订单中的虚拟商品记录是否发货.virtual_goods_ship(&$virtual_goods, &$msg, $order_sn, $return_result = false, $process = …other‟)方法:虚拟商品发货virtual_card_shipping ($goods, $order_sn, &$msg, $process = …other‟)方法:虚拟卡发货virtual_card_result($order_sn, $goods)方法:返回虚拟卡信息get_snatch_result($id)方法:获取指定id snatch 活动的结果clear_tpl_files($is_cache = true, $ext = ”)方法:清除指定后缀的模板缓存或编译文件clear_com piled_files($ext = ”)方法:清除模版编译文件clear_cache_files($ext = ”)方法:清除缓存文件clear_all_files($ext = ”)方法:清除模版编译和缓存文件smarty_insert_scripts($args)方法:页面上调用的j s文件,组合功能.smarty_create_pages($params)方法:创建分页的列表build_uri($app, $params, $app end = ”, $page = 0, $size = 0)方法:重写URL 地址formated_weight($weight)方法:格式化重量log_account_change($user_id, $user_money = 0, $frozen_money = 0, $rank_points = 0, $pay_points = 0, $change_desc = ”, $change_type = ACT_OTHER)方法:记录帐户变动article_cat_list($cat_id = 0, $selected = 0, $re_type = true, $level = 0)方法:获得指定分类下的子分类的数组/ 向下取数组.article_cat_options($spec_cat_id, $arr)方法:过滤和排序所有文章分类,返回一个带有缩进级别的数组uc_call($func, $params=null)方法:调用UCenter的函数exception_handler($errno, $errstr, $errfile, $errline)方法:error_handle回调函数未启用.get_image_path($goods_id, $image=”, $thumb=false, $call=‟goods‟, $del=false)方法:重新获得商品图片与商品相册的地址user_uc_call($func, $params = null)方法:调用使用UCenter插件时的函数get_volume_price_list($goods_id, $price_ty pe = ‟1′)方法:取得商品优惠价格列表get_final_price($goods_id, $goods_num = ‟1′, $is_spec_price = false, $spec = array())方法:取得商品最终使用价格get_package_info($id)方法:获取指定id package 的信息get_package_goods($package_id)方法:获得指定礼包的商品lib_main.php (前台公用函数库)update_user_info()方法:更新用户SESSION,COOKIE及登录时间、登录次数。
ecshop前后台函数库整理笔记2021-02-26 23:49 ? 评论数 0 ? 被浏览 9943 views+接触ecshop差不多半年了,大致的东西基本上也都掌握,为了提高效率,整理了一下ecshop的一些函数库,包括前台还有后台的。
熟悉这些函数,可以减少不少麻烦,熟悉之后,你遍知道系统有哪些已经写好的功能,很多时候就可以直接拿来用,而不用因为不知道,去手写代码,这样就很不划算了。
lib_main.phpupdate_user_info 更新用户SESSION,COOKIE及登录时间、登录次数。
get_user_info获取用户信息数组 ECSHOP 前台公用函数库assign_ur_here 取得当前位置和页面标题 get_parent_cats 获得指定分类的所有上级分类 build_pagetitle build_urhere根据提供的数组编译成页面标题根据提供的数组编译成当前位置assign_dynamic 获得指定页面的动态内容 assign_articles get_shop_help assign_pager分配文章列表给smarty 分配帮助信息创建分页信息get_pager 生成给pager.lbi赋值的数组 get_vote调用调查内容get_user_browser 获得浏览器名称和版本is_spider get_os判断是否为搜索引擎蜘蛛获得客户端的操作系统visit_stats 统计访问信息 save_searchengine_keyword get_tags保存搜索引擎关键字获得指定用户、商品的所有标记获取指定主题某个模板的主题的动态模块get_dyna_libsdyna_libs_replace 替换动态模块upload_file 处理上传文件,并返回上传图片名(上传失败时返回图片名为空)show_message显示一个提示信息parse_rate_value 将一个形如+10, 10, -10, 10%的字串转换为相应数字,并返回操作符号recalculate_price 重新计算购物车中的商品价格:目的是当用户登录时享受会员价格,当用户退出登录时不享受会员价格 assign_comment assign_template time2gmt查询评论内容将一些常用的参数调到前台使用将一个本地时间戳转成GMT时间戳查询会员的红包金额保存推荐uid 获取推荐uidget_user_bonus set_affiliate get_affiliatearticle_categories_tree 获得指定分类同级的所有分类以及该分类下的子分类get_article_parent_cats 获得指定文章分类的所有上级分类get_library_number get_navigator取得某模板某库设置的数量取得自定义导航栏列表license_info 授权信息内容url_domain 获取域名lib_common.phpdb_create_in 创建像这样的查询: \is_email验证输入的邮件地址是否合法ECSHOP 公用函数库is_time 检查是否为一个合法的时间格式assign_query_info 获得查询时间和次数,并赋值给smarty region_result创建地区的返回信息get_regions 获得指定国家的所有省份 get_shipping_config 参数获得配送区域中指定的配送方式的配送费用的计算&init_users 初始化会员数据整合类 cat_list获得指定分类下的子分类的数组cat_options 过滤和排序所有分类,返回一个带有缩进级别的数组 load_config 载入配置信息 get_brand_list取得品牌列表get_brands 获得某个分类下 get_promotion_info get_children所有的促销活动信息获得指定分类下所有底层分类的IDget_article_children 获得指定文章分类下所有底层分类的IDget_mail_template 获取邮件模板 order_action记录订单操作记录price_format 格式化商品价格 get_virtual_goods 返回订单中的虚拟商品virtual_goods_ship virtual_card_shipping virtual_card_result虚拟商品发货虚拟卡发货返回虚拟卡信息get_snatch_result 获取指定 id snatch 活动的结果clear_tpl_files 清除指定后缀的模板缓存或编译文件 clear_compiled_files清除模版编译文件clear_cache_files 清除缓存文件 clear_all_files清除模版编译和缓存文件页面上调用的js文件创建分页的列表smarty_insert_scripts smarty_create_pages build_uri重写 URL 地址格式化重量:小于1千克用克表示,否则用千克formated_weight 表示log_account_change 记录帐户变动article_cat_list 获得指定分类下的子分类的数组 article_cat_options 的数组uc_call过滤和排序所有文章分类,返回一个带有缩进级别调用UCenter的函数exception_handler error_handle回调函数get_image_path 重新获得商品图片与商品相册的地址 user_uc_call 调用使用UCenter插件时的函数取得商品优惠价格列表get_volume_price_listget_final_price 取得商品最终使用价格sort_goods_attr_id_array 新排序 is_spec将 goods_attr_id 的序列按照 attr_id 重是否存在规格get_package_info 获取指定id package 的信息 get_package_goods 获得指定礼包的商品 get_good_products 取商品的货品列表 get_good_products_select取商品的下拉框Select列表get_specifications_list 取商品的规格列表lib_main.phpread_modules sys_msg获得所有模块的名称以及链接地址系统提示信息ECSHOP 后台管理中心公用函数admin_log 记录管理员的操作内容sys_joindate 将通过表单提交过来的年月日变量合成为\的格式。
1、在要插入的地方引用以下代码:<span id="special">本周特价</span>2、以下引用代码相关JS文件内容:<SCRIPT type="text/javascript">function setSpecial(){var weeks = new Array("星期日特价","星期一特价","星期二特价","星期三特价","星期四特价","星期五特价","星期六特价");var d = new Date();var i = d.getDay();document.getElementById("special").firstChild.nodeValue = weeks[i];}setSpecial();function secBoard(n){for(i=0;i<2;i++){if(i == n){if(document.getElementById(i).className == "这部份可以填上自己定义的CSS名称"){document.getElementById(i).className = "这部份可以填上自己定义的CSS名称";}document.getElementById("G"+i).style.display="block";//document.getElementById(i).style.display="block";}else{if(document.getElementById(i).className == "这部份可以填上自己定义的CSS名称"){document.getElementById(i).className = "这部份可以填上自己定义的CSS名称";}document.getElementById("G"+i).style.display="none";//document.getElementById(i).style.display="none";}}}</SCRIPT>。
ecshop调用指定分类的文章的方法介绍集锦ECSHOP开发中心()ecshop调用指定文章分类的方法一.直接修改调用语句:例如调用分类ID为5的文章修改index.php将' WHERE a.is_open = 1 AND a.cat_id = ac.cat_id AND ac.cat_type = 1' .修改为' WHERE a.is_open = 1 AND a.cat_id=5 AND a.cat_id = ac.cat_id AND ac.cat_type = 1' .二.单独的函数调用:1、先打开index.php文件找到以下代码:$smarty->assign('new_articles', index_get_new_articles()); // 最新文章在它下面增加以下://调用方法$smarty->assign('class_articles_1', index_get_class_articles(1,6)); // 分类调用文章//调用多个就修改传进去的参数,以及模板接收的变量,其中上面的1就是文章分类ID,其中6是调用数量$smarty->assign('class_articles_2', index_get_class_articles(2,6)); // 分类调用文章$smarty->assign('class_articles_3', index_get_class_articles(3,6)); // 分类调用文章$smarty->assign('class_articles_4', index_get_class_articles(4,6)); // 分类调用文章$smarty->assign('class_articles_5', index_get_class_articles(5,6)); // 分类调用文章2、在lib_goods.php增加以下函数/*** 获得指定栏目最新的文章列表。
e c s h o p代码要求1.数据库连接关键代码/* 初始化数据库类 */require(ROOT_PATH . 'includes/cls_mysql.php');$db = new cls_mysql($db_host, $db_user, $db_pass, $db_name);$db_host = $db_user = $db_pass = $db_name = NULL;2.查看用户关键代码部分/*------------------------------------------------------ *///-- 用户帐号列表/*------------------------------------------------------ */if ($_REQUEST['act'] == 'list'){/* 检查权限 */admin_priv('users_manage');$sql = "SELECT rank_id, rank_name, min_points FROM ".$ecs->table('user_rank')." ORDER BY min_points ASC ";$rs = $db->query($sql);$ranks = array();while ($row = $db->FetchRow($rs)){$ranks[$row['rank_id']] = $row['rank_name'];}$smarty->assign('user_ranks', $ranks);$smarty->assign('ur_here', $_LANG['03_users_list']);$smarty->assign('action_link', array('text' => $_LANG['04_users_add'], 'href'=>'users.php?act=add'));$user_list = user_list();$smarty->assign('user_list', $user_list['user_list']);$smarty->assign('filter', $user_list['filter']);$smarty->assign('record_count', $user_list['record_count']);$smarty->assign('page_count', $user_list['page_count']);$smarty->assign('full_page', 1);$smarty->assign('sort_user_id', '<img src="images/sort_desc.gif">');assign_query_info();$smarty->display('users_list.htm');}3.修改用户关键代码部分/*------------------------------------------------------ *///-- 更新用户帐号/*------------------------------------------------------ */elseif ($_REQUEST['act'] == 'update'){/* 检查权限 */admin_priv('users_manage');$username = empty($_POST['username']) ? '' : trim($_POST['username']);$password = empty($_POST['password']) ? '' : trim($_POST['password']);$email = empty($_POST['email']) ? '' : trim($_POST['email']);$sex = empty($_POST['sex']) ? 0 : intval($_POST['sex']);$sex = in_array($sex, array(0, 1, 2)) ? $sex : 0;$birthday = $_POST['birthdayYear'] . '-' . $_POST['birthdayMonth'] . '-' .$_POST['birthdayDay'];$rank = empty($_POST['user_rank']) ? 0 : intval($_POST['user_rank']);$credit_line = empty($_POST['credit_line']) ? 0 : floatval($_POST['credit_line']); $users =& init_users();if (!$users->edit_user(array('username'=>$username, 'password'=>$password,'email'=>$email, 'gender'=>$sex, 'bday'=>$birthday ), 1)){if ($users->error == ERR_EMAIL_EXISTS){$msg = $_LANG['email_exists'];}else{$msg = $_LANG['edit_user_failed'];}sys_msg($msg, 1);}/* 更新用户扩展字段的数据 */$sql = 'SELECT id FROM ' . $ecs->table('reg_fields') . ' WHERE type = 0 AND display = 1 ORDER BY dis_order, id'; //读出所有扩展字段的id$fields_arr = $db->getAll($sql);$user_id_arr = $users->get_profile_by_name($username);$user_id = $user_id_arr['user_id'];foreach ($fields_arr AS $val) //循环更新扩展用户信息{$extend_field_index = 'extend_field' . $val['id'];if(isset($_POST[$extend_field_index])){$temp_field_content = strlen($_POST[$extend_field_index]) > 100 ?mb_substr($_POST[$extend_field_index], 0, 99) : $_POST[$extend_field_index]; $sql = 'SELECT * FROM ' . $ecs->table('reg_extend_info') . " WHERE reg_field_id = '$val[id]' AND user_id = '$user_id'";if ($db->getOne($sql)) //如果之前没有记录,则插入{$sql = 'UPDATE ' . $ecs->table('reg_extend_info') . " SET content ='$temp_field_content' WHERE reg_field_id = '$val[id]' AND user_id = '$user_id'"; }else{$sql = 'INSERT INTO '. $ecs->table('reg_extend_info') . " (`user_id`,`reg_field_id`, `content`) VALUES ('$user_id', '$val[id]', '$temp_field_content')"; }$db->query($sql);}}/* 更新会员的其它信息 */$other = array();$other['credit_line'] = $credit_line;$other['user_rank'] = $rank;$other['msn'] = isset($_POST['extend_field1']) ?htmlspecialchars(trim($_POST['extend_field1'])) : '';$other['qq'] = isset($_POST['extend_field2']) ?htmlspecialchars(trim($_POST['extend_field2'])) : '';$other['office_phone'] = isset($_POST['extend_field3']) ?htmlspecialchars(trim($_POST['extend_field3'])) : '';$other['home_phone'] = isset($_POST['extend_field4']) ?htmlspecialchars(trim($_POST['extend_field4'])) : '';$other['mobile_phone'] = isset($_POST['extend_field5']) ?htmlspecialchars(trim($_POST['extend_field5'])) : '';$db->autoExecute($ecs->table('users'), $other, 'UPDATE', "user_name ='$username'");4.删除用户代码部分/*------------------------------------------------------ *///-- 删除会员帐号/*------------------------------------------------------ */elseif ($_REQUEST['act'] == 'remove'){/* 检查权限 */admin_priv('users_drop');$sql = "SELECT user_name FROM " . $ecs->table('users') . " WHERE user_id = '" . $_GET['id'] . "'";$username = $db->getOne($sql);/* 通过插件来删除用户 */$users =& init_users();$users->remove_user($username); //已经删除用户所有数据/* 记录管理员操作 */admin_log(addslashes($username), 'remove', 'users');/* 提示信息 */$link[] = array('text' => $_LANG['go_back'], 'href'=>'users.php?act=list');sys_msg(sprintf($_LANG['remove_success'], $username), 0, $link);}5.查看商品关键代码部分admin_priv('goods_manage');$cat_id = empty($_REQUEST['cat_id']) ? 0 : intval($_REQUEST['cat_id']);$code = empty($_REQUEST['extension_code']) ? '' :trim($_REQUEST['extension_code']);$suppliers_id = isset($_REQUEST['suppliers_id']) ?(empty($_REQUEST['suppliers_id']) ? '' : trim($_REQUEST['suppliers_id'])) : '';$is_on_sale = isset($_REQUEST['is_on_sale']) ?((empty($_REQUEST['is_on_sale']) && $_REQUEST['is_on_sale'] === 0) ? '' :trim($_REQUEST['is_on_sale'])) : '';$handler_list = array();$handler_list['virtual_card'][] = array('url'=>'virtual_card.php?act=card','title'=>$_LANG['card'], 'img'=>'icon_send_bonus.gif');$handler_list['virtual_card'][] = array('url'=>'virtual_card.php?act=replenish','title'=>$_LANG['replenish'], 'img'=>'icon_add.gif');$handler_list['virtual_card'][] = array('url'=>'virtual_card.php?act=batch_card_add', 'title'=>$_LANG['batch_card_add'], 'img'=>'icon_output.gif');if ($_REQUEST['act'] == 'list' && isset($handler_list[$code])){$smarty->assign('add_handler', $handler_list[$code]);}6.添加商品关键代码部分include_once(ROOT_PATH . 'includes/fckeditor/fckeditor.php'); // 包含 html editor 类文件$is_add = $_REQUEST['act'] == 'add'; // 添加还是编辑的标识$is_copy = $_REQUEST['act'] == 'copy'; //是否复制$code = empty($_REQUEST['extension_code']) ? '' :trim($_REQUEST['extension_code']);if ($code == 'virual_card'){admin_priv('virualcard'); // 检查权限}else{admin_priv('goods_manage'); // 检查权限}/* 供货商名 */$suppliers_list_name = suppliers_list_name();$suppliers_exists = 1;if (empty($suppliers_list_name)){$suppliers_exists = 0;}$smarty->assign('suppliers_exists', $suppliers_exists);$smarty->assign('suppliers_list_name', $suppliers_list_name);unset($suppliers_list_name, $suppliers_exists);/* 如果是安全模式,检查目录是否存在 */if (ini_get('safe_mode') == 1 && (!file_exists('../' . IMAGE_DIR . '/'.date('Ym')) || !is_dir('../' . IMAGE_DIR . '/'.date('Ym')))){if (@!mkdir('../' . IMAGE_DIR . '/'.date('Ym'), 0777)){$warning = sprintf($_LANG['safe_mode_warning'], '../' . IMAGE_DIR . '/'.date('Ym'));$smarty->assign('warning', $warning);}}/* 如果目录存在但不可写,提示用户 */elseif (file_exists('../' . IMAGE_DIR . '/'.date('Ym')) && file_mode_info('../' . IMAGE_DIR . '/'.date('Ym')) < 2){$warning = sprintf($_LANG['not_writable_warning'], '../' . IMAGE_DIR .'/'.date('Ym'));$smarty->assign('warning', $warning);}7.修改商品关键代码$code = empty($_REQUEST['extension_code']) ? '' :trim($_REQUEST['extension_code']);/* 是否处理缩略图 */$proc_thumb = (isset($GLOBALS['shop_id']) && $GLOBALS['shop_id'] > 0)? false : true;if ($code == 'virtual_card'){admin_priv('virualcard'); // 检查权限}else{admin_priv('goods_manage'); // 检查权限}/* 检查货号是否重复 */if ($_POST['goods_sn']){$sql = "SELECT COUNT(*) FROM " . $ecs->table('goods') ." WHERE goods_sn = '$_POST[goods_sn]' AND is_delete = 0 AND goods_id <> '$_POST[goods_id]'";if ($db->getOne($sql) > 0){sys_msg($_LANG['goods_sn_exists'], 1, array(), false);}}/* 检查图片:如果有错误,检查尺寸是否超过最大值;否则,检查文件类型*/if (isset($_FILES['goods_img']['error'])) // php 4.2 版本才支持 error{// 最大上传文件大小$php_maxsize = ini_get('upload_max_filesize');$htm_maxsize = '2M';// 商品图片if ($_FILES['goods_img']['error'] == 0){if (!$image->check_img_type($_FILES['goods_img']['type'])){sys_msg($_LANG['invalid_goods_img'], 1, array(), false);}}elseif ($_FILES['goods_img']['error'] == 1){sys_msg(sprintf($_LANG['goods_img_too_big'], $php_maxsize), 1, array(), false);}elseif ($_FILES['goods_img']['error'] == 2){sys_msg(sprintf($_LANG['goods_img_too_big'], $htm_maxsize), 1, array(), false);}// 商品缩略图if (isset($_FILES['goods_thumb'])){if ($_FILES['goods_thumb']['error'] == 0){if (!$image->check_img_type($_FILES['goods_thumb']['type'])){sys_msg($_LANG['invalid_goods_thumb'], 1, array(), false);}}elseif ($_FILES['goods_thumb']['error'] == 1){sys_msg(sprintf($_LANG['goods_thumb_too_big'], $php_maxsize), 1, array(), false);}elseif ($_FILES['goods_thumb']['error'] == 2){sys_msg(sprintf($_LANG['goods_thumb_too_big'], $htm_maxsize), 1, array(), false);}}// 相册图片foreach ($_FILES['img_url']['error'] AS $key => $value){if ($value == 0){if (!$image->check_img_type($_FILES['img_url']['type'][$key])){sys_msg(sprintf($_LANG['invalid_img_url'], $key + 1), 1, array(), false); }}elseif ($value == 1){sys_msg(sprintf($_LANG['img_url_too_big'], $key + 1, $php_maxsize), 1, array(), false);}elseif ($_FILES['img_url']['error'] == 2){sys_msg(sprintf($_LANG['img_url_too_big'], $key + 1, $htm_maxsize), 1, array(), false);}}}8.删除商品关键代码*------------------------------------------------------ *///-- 彻底删除商品/*------------------------------------------------------ */elseif ($_REQUEST['act'] == 'drop_goods'){// 检查权限check_authz_json('remove_back');// 取得参数$goods_id = intval($_REQUEST['id']);if ($goods_id <= 0){make_json_error('invalid params');}/* 取得商品信息 */$sql = "SELECT goods_id, goods_name, is_delete, is_real, goods_thumb, " . "goods_img, original_img " ."FROM " . $ecs->table('goods') ." WHERE goods_id = '$goods_id'";$goods = $db->getRow($sql);if (empty($goods)){make_json_error($_LANG['goods_not_exist']);}if ($goods['is_delete'] != 1){make_json_error($_LANG['goods_not_in_recycle_bin']);}/* 删除商品图片和轮播图片 */if (!empty($goods['goods_thumb'])){@unlink('../' . $goods['goods_thumb']);}if (!empty($goods['goods_img'])){@unlink('../' . $goods['goods_img']);}if (!empty($goods['original_img'])){@unlink('../' . $goods['original_img']);}/* 删除商品 */$exc->drop($goods_id);/* 删除商品的货品记录 */$sql = "DELETE FROM " . $ecs->table('products') ." WHERE goods_id = '$goods_id'";$db->query($sql);/* 记录日志 */admin_log(addslashes($goods['goods_name']), 'remove', 'goods');/* 删除商品相册 */$sql = "SELECT img_url, thumb_url, img_original " ."FROM " . $ecs->table('goods_gallery') ." WHERE goods_id = '$goods_id'";$res = $db->query($sql);while ($row = $db->fetchRow($res)){if (!empty($row['img_url'])){@unlink('../' . $row['img_url']);}if (!empty($row['thumb_url'])){@unlink('../' . $row['thumb_url']);}if (!empty($row['img_original'])){@unlink('../' . $row['img_original']);}}$sql = "DELETE FROM " . $ecs->table('goods_gallery') . " WHERE goods_id = '$goods_id'";$db->query($sql);/* 删除相关表记录 */$sql = "DELETE FROM " . $ecs->table('collect_goods') . " WHERE goods_id = '$goods_id'";$db->query($sql);$sql = "DELETE FROM " . $ecs->table('goods_article') . " WHERE goods_id = '$goods_id'";$db->query($sql);$sql = "DELETE FROM " . $ecs->table('goods_attr') . " WHERE goods_id ='$goods_id'";$db->query($sql);$sql = "DELETE FROM " . $ecs->table('goods_cat') . " WHERE goods_id ='$goods_id'";$db->query($sql);$sql = "DELETE FROM " . $ecs->table('member_price') . " WHERE goods_id = '$goods_id'";$db->query($sql);$sql = "DELETE FROM " . $ecs->table('group_goods') . " WHERE parent_id ='$goods_id'";$db->query($sql);$sql = "DELETE FROM " . $ecs->table('group_goods') . " WHERE goods_id ='$goods_id'";$db->query($sql);$sql = "DELETE FROM " . $ecs->table('link_goods') . " WHERE goods_id ='$goods_id'";$db->query($sql);$sql = "DELETE FROM " . $ecs->table('link_goods') . " WHERE link_goods_id = '$goods_id'";$db->query($sql);$sql = "DELETE FROM " . $ecs->table('tag') . " WHERE goods_id = '$goods_id'"; $db->query($sql);$sql = "DELETE FROM " . $ecs->table('comment') . " WHERE comment_type = 0 AND id_value = '$goods_id'";$db->query($sql);$sql = "DELETE FROM " . $ecs->table('collect_goods') . " WHERE goods_id = '$goods_id'";$db->query($sql);$sql = "DELETE FROM " . $ecs->table('booking_goods') . " WHERE goods_id = '$goods_id'";$db->query($sql);$sql = "DELETE FROM " . $ecs->table('goods_activity') . " WHERE goods_id = '$goods_id'";$db->query($sql);/* 如果不是实体商品,删除相应虚拟商品记录 */if ($goods['is_real'] != 1){$sql = "DELETE FROM " . $ecs->table('virtual_card') . " WHERE goods_id = '$goods_id'";if (!$db->query($sql, 'SILENT') && $db->errno() != 1146){die($db->error());}}clear_cache_files();$url = 'goods.php?act=query&' . str_replace('act=drop_goods', '', $_SERVER['QUERY_STRING']);ecs_header("Location: $url\n");exit;}9.查看订单关键代码*------------------------------------------------------ *///-- 订单查询/*------------------------------------------------------ */if ($_REQUEST['act'] == 'order_query'){/* 检查权限 */admin_priv('order_view');/* 载入配送方式 */$smarty->assign('shipping_list', shipping_list());/* 载入支付方式 */$smarty->assign('pay_list', payment_list());/* 载入国家 */$smarty->assign('country_list', get_regions());/* 载入订单状态、付款状态、发货状态 */$smarty->assign('os_list', get_status_list('order'));$smarty->assign('ps_list', get_status_list('payment'));$smarty->assign('ss_list', get_status_list('shipping'));/* 模板赋值 */$smarty->assign('ur_here', $_LANG['03_order_query']);$smarty->assign('action_link', array('href' => 'order.php?act=list', 'text' =>$_LANG['02_order_list']));/* 显示模板 */assign_query_info();$smarty->display('order_query.htm');}10.修改订单关键代码/* 检查权限 */admin_priv('order_edit');/* 取得参数 step */$step_list = array('user', 'edit_goods', 'add_goods', 'goods', 'consignee', 'shipping', 'payment', 'other', 'money', 'invoice');$step = isset($_REQUEST['step']) && in_array($_REQUEST['step'], $step_list) ? $_REQUEST['step'] : 'user';/* 取得参数 order_id */$order_id = isset($_REQUEST['order_id']) ? intval($_REQUEST['order_id']) : 0; if ($order_id > 0){$old_order = order_info($order_id);}/* 取得参数 step_act 添加还是编辑 */$step_act = isset($_REQUEST['step_act']) ? $_REQUEST['step_act'] : 'add';/* 插入订单信息 */if ('user' == $step){/* 取得参数:user_id */$user_id = ($_POST['anonymous'] == 1) ? 0 : intval($_POST['user']);/* 插入新订单,状态为无效 */$order = array('user_id' => $user_id,'add_time' => gmtime(),'order_status' => OS_INVALID,'shipping_status' => SS_UNSHIPPED,'pay_status' => PS_UNPAYED,'from_ad' => 0,'referer' => $_LANG['admin']);do{$order['order_sn'] = get_order_sn();if ($db->autoExecute($ecs->table('order_info'), $order, 'INSERT', '','SILENT')){break;}else{if ($db->errno() != 1062){die($db->error());}}}while (true); // 防止订单号重复$order_id = $db->insert_id();/* todo 记录日志 */admin_log($order['order_sn'], 'add', 'order');/* 插入 pay_log */$sql = 'INSERT INTO ' . $ecs->table('pay_log') . " (order_id, order_amount, order_type, is_paid)" ." VALUES ('$order_id', 0, '" . PAY_ORDER . "', 0)";$db->query($sql);/* 下一步 */ecs_header("Location: order.php?act=" . $step_act . "&order_id=" . $order_id . "&step=goods\n");exit;}11.删除订单关键代码elseif (isset($_POST['remove'])){$require_note = false;$operation = 'remove';if (!$batch){/* 检查能否操作 */$order = order_info($order_id);$operable_list = operable_list($order);if (!isset($operable_list['remove'])){die('Hacking attempt');}/* 删除订单 */$db->query("DELETE FROM ".$ecs->table('order_info'). " WHERE order_id = '$order_id'");$db->query("DELETE FROM ".$ecs->table('order_goods'). " WHERE order_id = '$order_id'");$db->query("DELETE FROM ".$ecs->table('order_action'). " WHERE order_id = '$order_id'");/*根据订单编号,删除对应订单备注*/$db->query("DELETE FROM " .$ecs->table('order_note') . " WHERE order_id = '$order_id'");$action_array = array('delivery', 'back');del_delivery($order_id, $action_array);/* todo 记录日志 */admin_log($order['order_sn'], 'remove', 'order');/* 返回 */sys_msg($_LANG['order_removed'], 0,array(array('href'=>'order.php?act=list&' . list_link_postfix(), 'text' => $_LANG['return_list'])));}}12.。
所有函数功能说明:lib_time.phpgmtime()P: 获得当前格林威治时间的时间戳/$0server_timezone()P: 获得服务器的时区/$0local_mktime($hour = NULL , $minute= NULL, $second = NULL, $month = NULL, $day = NULL, $year = NULL)P: 生成一个用户自定义时区日期的GMT时间戳local_date($format, $time = NULL)P: 将GMT时间戳格式化为用户自定义时区日期gmstr2time($str)P: 转换字符串形式的时间表达式为GMT时间戳local_strtotime($str)P: 将一个用户自定义时区的日期转为GMT时间戳local_gettime($timestamp = NULL)P: 获得用户所在时区指定的时间戳local_getdate($timestamp = NULL)P: 获得用户所在时区指定的日期和时间信息lib_base.phpsub_str($str, $length = 0, $append = true)P: 截取UTF-8编码下字符串的函数real_ip()P: 获得用户的真实IP地址str_len($str)P: 计算字符串的长度(汉字按照两个字符计算)get_crlf()P: 获得用户操作系统的换行符send_mail($name, $email, $subject, $content, $type = 0, $notification=false) P: 邮件发送gd_version()P: 获得服务器上的GD 版本file_get_contents($file)P: 如果系统不存在file_get_contents函数则声明该函数file_put_contents($file, $data, $flags = ”)P: 如果系统不存在file_put_contents函数则声明该函数floatval($n)P: 如果系统不存在floatval 函数则声明该函数file_mode_info($file_path)P: 文件或目录权限检查函数log_write($arg, $fi le = ”, $line = ”)P: 写入日志内容make_dir($folder)P: 检查目标文件夹是否存在,如果不存在则自动创建该目录gzip_enabled()P: 获得系统是否启用了gzipaddslashes_deep($value)P: 递归方式的对变量中的特殊字符进行转义addslashes_deep_obj($obj)P: 将对象成员变量或者数组的特殊字符进行转义stripslashes_deep($value)P: 递归方式的对变量中的特殊字符去除转义make_semiangle($str)P: 将一个字串中含有全角的数字字符、字母、空格或‟%+-()‟字符转换为相应半角字符check_file_type($filename, $realname = ”, $limit_ext_types = ”)P: 检查文件类型/文件名/真实文件名/允许的文件类型mysql_like_quote($str)P: 对MYSQL LIKE 的内容进行转义过滤掉_ %等字符.real_server_ip()P: 获取服务器的ipecs_header($string, $replace = true, $http_response_code = 0)P: 自定义header 函数,用于过滤可能出现的安全隐患ecs_iconv($source_lang, $target_lang, $source_string = ”)P: 自定义的编码转换ecs_geoip($ip)P: 取得IP的地址,采用IP库trim_right($str)P: 去除字符串右侧可能出现的乱码move_upload_file($file_name, $target_name = ”)P: 将上传文件转移到指定位置json_str_iconv($str)P: 将JSON传递的参数转码get_file_suffix($file_name, $allow_type = array())P: 获取文件后缀名,并判断是否合法read_static_cache($cache_name)P: 读结果缓存文件write_static_cache($cache_name, $caches)P: 写结果缓存文件lib_common.php (公用函数库)db_create_in($item_list, $field_name = ”)P: 创建像这样的查询: “IN(…a‟,‟b‟)” $item_list为数组is_email($user_email)P: 验证输入的邮件地址是否合法is_time($time)P: 检查是否为一个合法的时间格式assign_query_info()P: 获得查询时间和次数,并赋值给smartyregion_result($parent, $sel_name, $type)P: 创建地区的返回信息get_regions($type = 0, $parent = 0)P: 获得指定国家的所有省份, 函数需要数据库支持.get_shipping_config($area_id)P: 获得配送区域中指定的配送方式的配送费用的计算参数比如快捷公司不同.init_users()P: 初始化会员数据整合类cat_list($cat_id = 0, $selected = 0, $re_type = true, $level = 0, $is_show_all = true) P: 获得指定分类下的子分类的数组, $re_type控制返回类型cat_options($spec_cat_id, $arr)P: 过滤和排序所有分类,返回一个带有缩进级别的数组load_config()P: 载入配置信息get_brand_list()P: 取得品牌列表get_brands($cat = 0, $app = …brand‟)P: 获得某个分类下的品牌列表get_promotion_info($goods_id = ”)P: 所有的促销活动信息get_children($cat = 0)P: 获得指定分类下所有底层分类的IDget_article_children ($cat = 0)P: 获得指定文章分类下所有底层分类的IDget_mail_template($tpl_name)P: 获取邮件模板order_action($order_sn, $order_status, $shipping_status, $pay_status, $note = ”, $username = null)P: 记录订单操作记录price_format($price, $change_price = true)P: 格式化商品价格get_virtual_goods($order_id, $shipping = false)P: 返回订单中的虚拟商品记录是否发货.virtual_goods_ship(&$virtual_goods, &$msg, $order_sn, $return_result = false, $process = …other‟)P: 虚拟商品发货virtual_card_shipping ($goods, $order_sn, &$msg, $process = …other‟)P: 虚拟卡发货virtual_card_result($order_sn, $goods)P: 返回虚拟卡信息get_snatch_result($id)P: 获取指定id snatch 活动的结果clear_tpl_files($is_cache = true, $ext = ”)P: 清除指定后缀的模板缓存或编译文件clear_compiled_files($ext = ”)P: 清除模版编译文件clear_cache_files($ext = ”)P: 清除缓存文件clear_all_files($ext = ”)P: 清除模版编译和缓存文件smarty_insert_scripts($args)P: 页面上调用的js文件,组合功能.smarty_create_pages($params)P: 创建分页的列表build_uri($app, $params, $append = ”, $page = 0, $size = 0)P: 重写URL 地址formated_weight($weight)P: 格式化重量log_account_change($user_id, $user_money = 0, $frozen_money = 0, $rank_points = 0, $pay_points = 0, $change_desc = ”, $change_type = ACT_OTHERP: 记录帐户变动article_cat_list($cat_id = 0, $selected = 0, $re_type = true, $level = 0)P: 获得指定分类下的子分类的数组/ 向下取数组.article_cat_options($spec_cat_id, $arr)P: 过滤和排序所有文章分类,返回一个带有缩进级别的数组uc_call($func, $params=null)P: 调用UCenter的函数exception_handler($errno, $errstr, $errfile, $errline)P: error_handle回调函数未启用.get_image_path($goods_id, $image=”,$thumb=false, $call=‟goods‟, $del=false)P: 重新获得商品图片与商品相册的地址user_uc_call($func, $params = null)P: 调用使用UCenter插件时的函数get_volume_price_list($goods_id, $price_type = …1′)P: 取得商品优惠价格列表get_final_price($goods_id, $goods_num = …1′, $is_spec_price = false, $spec = array())P: 取得商品最终使用价格get_package_info($id) get_package_goods($package_id)P: 获取指定id package 的信息P: 获得指定礼包的商品lib_main.php (前台公用函数库)update_user_info()P: 更新用户SESSION,COOKIE及登录时间、登录次数。