21 8 月, 2014

ecshop中添加搜索历史记录

首先申明本功能是为手机页面做的, 设计到两个页面 search.php,  search_list.php。

在search_list.php中添加历史记录:

/*记录搜索历史记录*/
if (!empty($_COOKIE['ECS']['keywords']))
{
$history = explode(',', $_COOKIE['ECS']['keywords']);

array_unshift($history, $keywords); //在数组开头插入一个或多个元素
$history = array_unique($history);  //移除数组中的重复的值,并返回结果数组。

setcookie('ECS[keywords]', implode(',', $history), gmtime() + 3600 * 24 * 30);
} 
else
{
setcookie('ECS[keywords]', $keywords, gmtime() + 3600 * 24 * 30);
}

在 search.php 中取出历史记录
if (!empty($_COOKIE['ECS']['keywords']))
{
$histroy = explode(',',$_COOKIE['ECS']['keywords']);
foreach ($histroy as $key=>$val)
{
$histroy_list[$key]['histroy'] = $val;
} 
}

ecshop订单表状态判断

ecshop数据库订单状态判断

order_info 


刚下完订单

order_status 0      shipping_status 0      pay_status 0

取消

order_status 2      shipping_status 0       pay_status 0

确认

order_status 1     shipping_status 0        pay_status 0

已付款

order_status 1     shipping_status 0       pay_status 2

配货中

order_status 1    shipping_status 3       pay_status 2

已发货

order_status 5    shipping_status 1      pay_status 2

已收货

order_status 5   shipping_status 2       pay_status 2

退货

order_status 4   shipping_status 0      pay_status 0

/* 订单状态 */

define(‘OS_UNCONFIRMED’, 0); // 未确认

define(‘OS_CONFIRMED’, 1); // 已确认

define(‘OS_CANCELED’, 2); // 已取消

define(‘OS_INVALID’, 3); // 无效

define(‘OS_RETURNED’, 4); // 退货

/* 支付类型 */

define(‘PAY_ORDER’, 0); // 订单支付

define(‘PAY_SURPLUS’, 1); // 会员预付款

/* 配送状态 */

define(‘SS_UNSHIPPED’, 0); // 未发货

define(‘SS_SHIPPED’, 1); // 已发货

define(‘SS_RECEIVED’, 2); // 已收货

define(‘SS_PREPARING’, 3); // 备货中

/* 支付状态 */

define(‘PS_UNPAYED’, 0); // 未付款

define(‘PS_PAYING’, 1); // 付款中

define(‘PS_PAYED’, 2); // 已付款

$_LANG[‘os’][OS_UNCONFIRMED] = ‘未确认’;0

$_LANG[‘os’][OS_CONFIRMED] = ‘已确认’;1

$_LANG[‘os’][OS_CANCELED] = ‘ 取消‘;2

$_LANG[‘os’][OS_INVALID] = ‘无效‘;3

$_LANG[‘os’][OS_RETURNED] = ‘退货‘;4

$_LANG[‘ss’][SS_UNSHIPPED] = ‘未发货’;

$_LANG[‘ss’][SS_PREPARING] = ‘配货中’;

$_LANG[‘ss’][SS_SHIPPED] = ‘已发货’;

$_LANG[‘ss’][SS_RECEIVED] = ‘收货确认’;

$_LANG[‘ps’][PS_UNPAYED] = ‘未付款’;

$_LANG[‘ps’][PS_PAYING] = ‘付款中’;

$_LANG[‘ps’][PS_PAYED] = ‘已付款’;

订单的处理判断

while ($row = $GLOBALS[‘db’]->fetchRow($res))

{

//

if ($row[‘order_status’] == OS_UNCONFIRMED)

{

$row[‘handler’] = ““.$GLOBALS[‘_LANG’][‘cancel’].”“;

}

else if ($row[‘order_status’] == OS_CONFIRMED)

{

/* 对配送状态的处理 */

if ($row[‘shipping_status’] == SS_SHIPPED)

{

@$row[‘handler’] = ““.$GLOBALS[‘_LANG’][‘received’].”“;

}

elseif ($row[‘shipping_status’] == SS_RECEIVED)

{

@$row[‘handler’] = ‘‘.$GLOBALS[‘_LANG’][‘ss_received’] .’‘;

}

else

{

if ($row[‘pay_status’] == PS_UNPAYED)

{

@$row[‘handler’] = “‘ .$GLOBALS[‘_LANG’][‘pay_money’]. ‘‘;

}

else

{

@$row[‘handler’] = “‘ .$GLOBALS[‘_LANG’][‘view_order’]. ‘‘;

}

}

}

else

{

$row[‘handler’] = ‘‘.$GLOBALS[‘_LANG’][‘os’][$row[‘order_status’]] .’‘;

}

Ecshop文件结构和ecshop数据结构

Ecshop文件结构 ecshop二次开发指南

ecshop文件架构说明

/*

ECShop 2.5.1 的结构图及各文件相应功能介绍

ECShop2.5.1_Beta upload 的目录

┣ activity.php 活动列表

┣ affiche.php 广告处理文件

┣ affiliate.php 生成商品列表

┣ article.php 文章内容

┣ article_cat.php文章分类

┣ auction.php 拍卖前台文件

┣ brand.php 品牌列表

┣ captcha.php 生成验证码

┣ catalog.php 列出所以分类及品牌

┣ category.php 商品分类

┣ comment.php 提交用户评论

┣ compare.php 商品比较程序

┣ cycle_image.php 轮播图片程序

┣ feed.php RSS Feed 生成程序

┣ flow.php 购物流程

┣ gallery.php 商品相册

┣ goods.php 商品详情

┣ goods_script.php 生成商品列表

┣ group_buy.php 团购商品前台文件

┣ index.php 首页文件

┣ myship.php 支付配送DEMO

┣ pick_out.php 选购中心

┣ receive.php 处理收回确认的页面

┣ region.php 地区切换程序

┣ respond.php 支付响应页面

┣ robots.txt

┣ search.php 搜索程序

┣ sitemaps.php google sitemap 文件

┣ snatch.php 夺宝奇兵前台页面

┣ tag_cloud.php 标签云

┣ topic.php 专题前台

┣ user.php 会员中心

┣ vote.php 调查程序

┣ wholesale.php 批发前台文件

┣ admin文件夹

┃ ┣ account_log.php 管理中心帐户变动记录

┃ ┣ admin_logs.php 记录管理员操作日志

┃ ┣ ads.php 广告管理程序

┃ ┣ adsense.php 站外JS投放的统计程序

┃ ┣ ad_position.php广告位置管理程序

┃ ┣ affiliate.php 程序说明

┃ ┣ affiliate_ck.php 程序说明

┃ ┣ agency.php 管理中心办事处管理

┃ ┣ area_manage.php 地区列表管理文件

┃ ┣ article.php 管理中心文章处理程序文件

┃ ┣ articlecat.php 文章分类管理程序

┃ ┣ article_auto.php

┃ ┣ attention_list.php

┃ ┣ attribute.php 属性规格管理

┃ ┣ auction.php 管理中心拍卖活动管理

┃ ┣ bonus.php 红包类型的处理

┃ ┣ brand.php管理中心品牌管理

┃ ┣ captcha_manage.php

┃ ┣ card.php 贺卡管理程序

┃ ┣ category.php 商品分类管理程序

┃ ┣ check_file_priv.php 系统文件检测

┃ ┣ comment_manage.php 用户评论管理程序

┃ ┣ convert.php 转换程序

┃ ┣ cron.php 计划任务

┃ ┣ database.php 数据库管理

┃ ┣ ebao_commend.php 易宝推荐

┃ ┣ edit_languages.php 管理中心语言项编辑(前台语言项)

┃ ┣ email_list.php 邮件列表管理

┃ ┣ favourable.php 管理中心优惠活动管理

┃ ┣ flashplay.php

┃ ┣ flow_stats.php 综合流量统计

┃ ┣ friend_link.php 友情链接管理

┃ ┣ gen_goods_script.php 生成显示商品的js代码

┃ ┣ get_password.php 找回管理员密码

┃ ┣ goods.php 商品管理程序

┃ ┣ goods_auto.php

┃ ┣ goods_batch.php 商品批量上传、修改

┃ ┣ goods_booking.php 缺货处理管理程序

┃ ┣ goods_export.php

┃ ┣ goods_type.php 商品类型管理程序

┃ ┣ group_buy.php 管理中心团购商品管理

┃ ┣ guest_stats.php 客户统计

┃ ┣ index.php 控制台首页

┃ ┣ integrate.php 第三方程序会员数据整合插件管理程序

┃ ┣ magazine_list.php

┃ ┣ mail_template.php 管理中心模版管理程序

┃ ┣ message.php 管理中心管理员留言程序

┃ ┣ navigator.php

┃ ┣ order.php 订单管理

┃ ┣ order_stats.php 订单统计

┃ ┣ pack.php 包装管理程序

┃ ┣ payment.php 支付方式管理程序

┃ ┣ picture_batch.php 图片批量处理程序

┃ ┣ privilege.php 管理员信息以及权限管理程序

┃ ┣ sale_general.php 销售概况

┃ ┣ sale_list.php 销售明细列表程序

┃ ┣ sale_order.php 商品销售排行

┃ ┣ searchengine_stats.php 搜索引擎关键字统计

┃ ┣ search_log.php

┃ ┣ shipping.php 配送方式管理程序

┃ ┣ shipping_area.php 配送区域管理程序

┃ ┣ shophelp.php 帮助信息管理程序

┃ ┣ shopinfo.php 网店信息管理页面

┃ ┣ shop_config.php 管理中心商店设置

┃ ┣ sitemap.php 站点地图生成程序

┃ ┣ sms.php 短信模块 之 控制器

┃ ┣ snatch.php 夺宝奇兵管理程序

┃ ┣ sql.php sql管理程序

┃ ┣ tag_manage.php 后台标签管理

┃ ┣ template.php 管理中心模版管理程序

┃ ┣ topic.php 专题管理

┃ ┣ users.php 会员管理程序

┃ ┣ users_order.php 会员排行统计程序

┃ ┣ user_account.php 会员帐目管理(包括预付款,余额)

┃ ┣ user_msg.php 客户留言

┃ ┣ user_rank.php 会员等级管理程序

┃ ┣ view_sendlist.php

┃ ┣ virtual_card.php 虚拟卡商品管理程序

┃ ┣ visit_sold.php 访问购买比例

┃ ┣ vote.php 调查管理程序

┃ ┣ wholesale.php 管理中心批发管理

┃ ┣ help 的目录 后台操作帮助文件

┃ ┣ images 的目录

┃ ┣ includes 的目录

┃ ┃ ┣ cls_exchange.php 后台自动操作数据库的类文件

┃ ┃ ┣ cls_google_sitemap.php Google sitemap 类

┃ ┃ ┣ cls_phpzip.php ZIP 处理类

┃ ┃ ┣ cls_sql_dump.php 数据库导出类

┃ ┃ ┣ inc_menu.php 管理中心菜单数组

┃ ┃ ┣ init.php 管理中心公用文件

┃ ┃ ┣ lib_goods.php 管理中心商品相关函数

┃ ┃ ┣ lib_main.php 管理中心公用函数库

┃ ┃ ┗ lib_template.php 管理中心模版相关公用函数库

┃ ┣ styles 的目录

┃ ┣ templates 的目录

┃ ┗ js 的目录

┃ ┣ colorselector.js

┃ ┣ common.js

┃ ┣ listtable.js

┃ ┣ md5.js

┃ ┣ selectzone.js

┃ ┣ tab.js

┃ ┣ todolist.js

┃ ┣ topbar.js

┃ ┗ validator.js 表单验证类

┣ api 的目录

┃ ┣ checkorder.php 检查订单 API

┃ ┣ cron.php

┃ ┗ init.php API 公用初始化文件

┣ cert 的目录

┣ data 的目录

┃ ┣ ffiliate.html

┃ ┣ goods_script.html

┃ ┣ order_print.html

┃ ┣ afficheimg 的目录

┃ ┣ brandlogo 的目录

┃ ┣ captcha 的目录 验证码背景图片存放位置

┃ ┣ cardimg 的目录

┃ ┣ feedbackimg 的目录

┃ ┣ images 的目录

┃ ┣ packimg 的目录

┃ ┗ sqldata 的目录

┣ images 的目录

┃ ┗ upload 的目录

┃ ┣ File 文件上传存放处

┃ ┣ Flash flash上传存放处

┃ ┣ Image 图片上传存放处

┃ ┗ Media 视频上传存放处

┣ includes 的目录

┃ ┣ cls_captcha.php 验证码图片类

┃ ┣ cls_ecshop.php 基础类

┃ ┣ cls_error.php 用户级错误处理类

┃ ┣ cls_iconv.php 字符集转换类

┃ ┣ cls_image.php 后台对上传文件的处理类(实现图片上传,图片缩小, 增加水印)

┃ ┣ cls_json.php JSON 类

┃ ┣ cls_mysql.php MYSQL 公用类库

┃ ┣ cls_rss.php RSS 类

┃ ┣ cls_session.php SESSION 公用类库

┃ ┣ cls_sms.php 短信模块 之 模型(类库)

┃ ┣ cls_smtp.php SMTP 邮件类

┃ ┣ cls_sql_executor.php SQL语句执行类。

┃ ┣ cls_template.php 模版类

┃ ┣ cls_transport.php 服务器之间数据传输器

┃ ┣ inc_constant.php 常量

┃ ┣ init.php 前台公用文件

┃ ┣ lib.debug.php

┃ ┣ lib_article.php 文章及文章分类相关函数库

┃ ┣ lib_clips.php ECSHOP 用户相关函数库

┃ ┣ lib_code.php 加密解密类

┃ ┣ lib_common.php 公用函数库

┃ ┣ lib_goods.php 商品相关函数库

┃ ┣ lib_insert.php 动态内容函数库

┃ ┣ lib_main.php 前台公用函数库

┃ ┣ lib_order.php 购物流程函数库

┃ ┣ lib_passport.php 用户帐号相关函数库

┃ ┣ lib_payment.php 支付接口函数库

┃ ┣ lib_time.php 时间函数

┃ ┣ lib_transaction.php ECSHOP 用户交易相关函数库

┃ ┣ codetable 的目录

┃ ┃ ┣ big5-gb.table

┃ ┃ ┣ big5_utf8.php

┃ ┃ ┣ gb-big5.table

┃ ┃ ┣ gb_utf8.php

┃ ┃ ┗ ipdata.dat

┃ ┣ fckeditor 的目录 fckeditor编辑器目录

┃ ┗ modules 的目录

┃ ┣ convert 的目录

┃ ┃ ┣ shopex46.php vshopex4.6转换程序插件

┃ ┃ ┗ shopex47.php shopex4.7转换程序插件

┃ ┣ cron 的目录

┃ ┃ ┣ auto_manage.php 自动上下架管理

┃ ┃ ┗ ipdel.php 定期删除

┃ ┣ integrates 的目录

┃ ┃ ┣ bmforum.php 会员数据处理类

┃ ┃ ┣ discuz.php

┃ ┃ ┣ discuz55.php

┃ ┃ ┣ dvbbs.php

┃ ┃ ┣ ecshop.php

┃ ┃ ┣ integrate.php

┃ ┃ ┣ ipb.php

┃ ┃ ┣ molyx.php

┃ ┃ ┣ phpbb.php

┃ ┃ ┣ phpwind.php

┃ ┃ ┣ phpwind5.php

┃ ┃ ┗ vbb.php

┃ ┣ payment 的目录

┃ ┃ ┣ alipay.php 支付宝插件

┃ ┃ ┣ balance.php 余额支付插件

┃ ┃ ┣ bank.php 银行汇款(转帐)插件

┃ ┃ ┣ cappay.php 首信易支付插件

┃ ┃ ┣ chinabank.php 网银在线插件

┃ ┃ ┣ cncard.php 云网支付插件

┃ ┃ ┣ cod.php 货到付款插件

┃ ┃ ┣ ctopay.php Ctopay 支付插件

┃ ┃ ┣ express.php express支付系统插件

┃ ┃ ┣ ips.php ips支付系统插件

┃ ┃ ┣ kuaiqian.php 快钱插件

┃ ┃ ┣ nps.php NPS支付插件

┃ ┃ ┣ pay800.php 800pay 支付宝插件

┃ ┃ ┣ paypal.php 贝宝插件

┃ ┃ ┣ paypalcn.php 贝宝中国插件

┃ ┃ ┣ post.php 邮局汇款插件

┃ ┃ ┣ tenpay.php 财付通插件

┃ ┃ ┣ udpay.php 网汇通插件

┃ ┃ ┣ xpay.php 易付通插件

┃ ┃ ┗ yeepay.php YeePay易宝插件

┃ ┗ shipping 的目录

┃ ┣ cac.php 上门取货插件

┃ ┣ city_express.php 城际快递插件

┃ ┣ ems.php EMS插件

┃ ┣ flat.php 邮政包裹插件

┃ ┣ fpd.php 到付运费插件

┃ ┣ post_express.php 邮政包裹插件

┃ ┣ post_mail.php 邮局平邮插件

┃ ┣ presswork.php 挂号印刷品插件

┃ ┣ sf_express.php 顺丰速运 配送方式插件

┃ ┣ sto_express.php 申通快递 配送方式插件

┃ ┣ yto.php 圆通速递插件

┃ ┗ zto.php 中通速递插件

┣ install 的目录 安装文件目录

┣ js 的目录

┃ ┣ auto_complete.js

┃ ┣ calendar.php

┃ ┣ common.js

┃ ┣ compare.js

┃ ┣ global.js

┃ ┣ lefttime.js

┃ ┣ myship.js

┃ ┣ region.js

┃ ┣ shopping_flow.js

┃ ┣ transport.js

┃ ┣ user.js

┃ ┣ utils.js

┃ ┗ calendar 的目录

┣ languages 的目录 语言风格文件

┃ ┣ zh_cn 的目录

┃ ┃ ┣

┃ ┃ ┣ admin 的目录

┃ ┃ ┣ convert 的目录

┃ ┃ ┣ cron 的目录

┃ ┃ ┣ payment 的目录

┃ ┃ ┗ shipping 的目录

┃ ┗ zh_tw 的目录

┃ ┣ admin 的目录

┃ ┣ convert 的目录

┃ ┣ cron 的目录

┃ ┣ payment 的目录

┃ ┗ shipping 的目录

┣ plugins 的目录

┣ templates 的目录

┃ ┣ backup 的目录

┃ ┃ ┗ ibrary 的目录

┃ ┣ caches 的目录

┃ ┗ compiled 的目录

┃ ┗ admin 的目录

┣ themes 的目录

┃ ┣ default 的目录

┃ ┃ ┣ images 的目录

┃ ┃ ┗ library 的目录

┃ ┗ sport 的目录

┣ wap 的目录

┃ ┣ article.php

┃ ┣ brands.php

┃ ┣ buy.php

┃ ┣ category.php

┃ ┣ comment.php

┃ ┣ goods.php

┃ ┣ goods_list.php

┃ ┣ index.php

┃ ┣ user.php

┃ ┣ includes 的目录

┃ ┃ ┣ init.php

┃ ┃ ┣ lib_main.php

┃ ┗ templates 的目录

┃ ┣ article.wml

┃ ┣ article_list.wml

┃ ┣ brands.wml

┃ ┣ buy.wml

┃ ┣ category.wml

┃ ┣ comment.wml

┃ ┣ goods.wml

┃ ┣ goods_img.wml

┃ ┣ goods_list.wml

┃ ┣ index.wml

┃ ┣ login.wml

┃ ┣ order_list.wml

┃ ┗ user.wml

┗ widget 的目录

┣ blog_sohu.php

┣ blog_sohu.xhtml

┗ images 的目录

ecshop数据结构

ecs_account_log // 用户账目日志表

ecs_activity // 活动表(代码,名称,开始,结束,描述)

ecs_ad // 广告表(位置,类型,名称,链接,图片,开始,结束,广告主相关信息,点击,

是否显示)

ecs_admin_action // 管理权限分配(父类ID,权限代码)

ecs_admin_log // 管理日志(登陆时间,登陆管理员ID,操作描述,IP)

ecs_admin_message // 管理员留言(发送者ID,接收者ID,发送日期,阅读日期,是否

已读,是否删除,标题,内容)

ecs_admin_user // 管理员管理(用户名,email ,密码,加入时间,最后登陆时间,最后

登陆IP,权限等)

ecs_adsense // 广告相关统计(来源广告,来源位置,点击)

ecs_ad_position // 广告位(名称,宽,高,描述,样式)

ecs_area_region // 配送区域关联(配送区域ID,具体地址ID)

ecs_article // 文章(分类ID,标题,内容,作者,作者email ,关键字,类型,是否显示,

添加时间,文件地址,打开类型)

ecs_article_cat // 文章分类(名称,类型,关键字,描述,排序,是否导航显示)

ecs_attribute // 商品属性(分类,名称,选择样式,类型,值,检索类型,排序,是否关

联)

ecs_bonus_type // 红包(名称,金额,发放起始日期,发放结束日期,使用起始日期,使

用结束日期,发放类型,金额下限(按订单发放),金额上限)

ecs_booking_goods // 缺货登记(登记用户ID,email ,电话,商品ID,描述,数量,登

记时间,是否已处理,处理管理员,处理时间,处理备注)

ecs_brand // 品牌(名称,logo,描述,链接,排序,是否显示)

ecs_card // 祝福贺卡(名称,图片,费用,免费额度,描述)

ecs_cart // 购物车(用户ID,session_id ,商品ID,商品编号,商品名称,市场价,购买

价,数量,属性,是否真实商品,扩展代码,父类ID,类型,是否赠品,能否处理)

ecs_category // 商品分类(名称,关键字,描述,父类ID,排序,是否有子类,模板文件,

数量单位,是否导航显示)

ecs_collect_goods // 收藏(用户ID,商品ID,收藏时间)

ecs_comment // 评论(类型,类型ID,email ,用户名,内容,评星,添加时间,IP,状

态,父类ID)

ecs_feedback // 用户留言(父类ID,用户ID,用户名,email,标题,类型,内容,时间,

图片,是否回复)

ecs_friend_link // 友情链接(名称,链接,logo,排序)

ecs_gift // 赠品(送赠品活动ID,商品ID,赠品价格)

ecs_gift_type // 送赠品活动(名称,发送类型,相关参数,数量,开始,结束)

ecs_goods // 商品(分类ID,名称,点击,品牌ID,供应商名称,库存,重量,市场价,

售价,fitting_price(未知),促销价,促销开始日期,结束日期,警告数量,关键字,简介,

描述,缩略图,图,原图,是否真实商品,扩展代码,是否上架,是否单独销售,是否关联,

配件关联,是否赠品,能否成为赠品,单位,添加时间,排序,是否回收,精品,新品,推

荐,热销,红包ID,更新日期,商品类型,商品备注,首页轮播)

ecs_goods_article // 商品文章关联(gid,aid )

ecs_goods_attr // 商品属性(商品ID,属性ID,属性值,属性附加价)

ecs_goods_cat // 未知

ecs_gallery // 商品相册(商品ID,图片,描述,缩略图,原图)

ecs_goods_type // 商品类型(名称,状态)

ecs_group_buy // 团购(商品ID,结束日期,价格阶梯,限购数量,描述,订购量,订单,

赠送积分数,流程,押金,是否完成)

ecs_group_goods // 配件(父类ID,商品ID,配件价格)

ecs_link_goods // 商品关联(商品ID,关联ID,单双向)

ecs_mail_templates // 邮件样式(代码,是否html,名称,样式,最后修改日期)

ecs_member_price // 会员价(商品ID,会员等级,会员价)

ecs_order_action // 订单处理(订单ID,处理用户,订单状态,配送状态,支付状态,处

理时间,备注)

ecs_order_goods // 订单-商品(订单ID,商品ID,商品名称,商品编号,商品数量,市

场价,订单价,商品属性,配送数量,是否真实商品,扩展代码,父类ID,是否赠品)

ecs_order_info // 订单信息(好多(-_-|||略…)

ecs_pack // 包装(名称,图片,费用,免费额,描述)

ecs_payment // 支付工具(代码,名称,费用,描述,排序,配置,状态,is_cod(未知))

ecs_pay_log // 支付记录(略)

ecs_plugins // 插件(代码,版本,库,签名,安装日期)

ecs_region // 地方数据(没什么好说的)

ecs_sessions // 保存session 的(也没什么好说的(嗯?为什么要加个“也”呢))

ecs_shipping // 配送(代码,名称,描述,保价费,support_cod(未知),状态)

ecs_shipping_area // 配送区域(序列配置)

ecs_shop_config // 设置(父类ID,代码,类型,范围,文件夹,值)

ecs_snatch // 夺宝奇兵(活动ID,商品ID,最小价,最大价,定价,积分消耗)

ecs_snatch_log // 夺宝奇兵出价记录(还是没什么好说的)

ecs_stats // 访问记录(时间,IP,访问次数,浏览器,系统,语言,地区,来源域名,来

源地址,关键字,进入链接)

ecs_tag // 用户标签(不说)

ecs_template // 模板区域(文件名,区域,模板库,排序,id,数量,类型,模板)也不

怎么清楚

ecs_users // 会员(一些会员信息)

ecs_user_account // 会员帐户(用户ID,管理员,总额,添加时间,支付时间,管理备注,

用户备注,处理类型,支付工具,是否支付)

ecs_user_address // 用户收货地址(略)

ecs_user_bonus // 用户红包(红包ID,红包编号,用户ID,使用时间,订单ID,是否已

发邮件)

ecs_user_rank // 会员等级(名称,积分最小限额,最大限额,折扣,是否显示价格,特

殊会员)

ecs_virtual_cart // 虚拟卡(商品ID,卡号,密码,添加时间,失效时间,是否已卖完,

编号,crc32 校验码)

ecs_vote // 投票(名称,开始,结束,能否多选,统计)

ecs_vote_log // 投票记录(投票ID,IP,时间)

ecs_vote_option // 投票内容(投票ID,条目名称,条目统计)

ECSHOP首页和列表页的缩略图很模糊的处理方法

经常看到论坛里有人反映说首页或列表页的缩略图的质量不高,比较模糊……
原因是因为ecshop生成缩略图时,用到的函数 imagejpeg()  没有设置质量参数。

注释:
质量参数为可选项,范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大)。
如果没有设置质量参数,那么质量默认为75。

下面,我们通过修改生成缩略图质量的默认值来提高缩略图的质量。

打开 /includes/cls_image.php,

imagejpeg($img_thumb, $dir . $filename);

修改为

imagejpeg($img_thumb, $dir . $filename, 100);

这样应该足够清晰了。

注意:按照以上方法修改完后,还需要到后台执行一下“商品管理 》图片批量处理 ”才能看到效果。

ecshop 所有函数详细说明

所有函数功能说明:

lib_time.php

gmtime()

P: 获得当前格林威治时间的时间戳 /$0

server_timezone()

P: 获得服务器的时区 /$0

local_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.php

sub_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: 获得系统是否启用了 gzip

addslashes_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: 获取服务器的ip

ecs_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: 获得查询时间和次数,并赋值给smarty

region_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: 获得指定分类下所有底层分类的ID

get_article_children ($cat = 0)

P: 获得指定文章分类下所有底层分类的ID

get_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及登录时间、登录次数。

get_user_info($id=0)

P:  获取用户信息数组

assign_ur_here($cat = 0, $str = ”)

P: 取得当前位置和页面标题

get_parent_cats($cat)

P: 获得指定分类的所有上级分类

build_pagetitle($arr, $type = ‘category’)

P: 根据提供的数组编译成页面标题

build_urhere($arr, $type = ‘category’)

P: 根据提供的数组编译成当前位置

assign_dynamic($tmp

P: 获得指定页面的动态内容

assign_articles($id, $num)

P: 分配文章列表给smarty

get_shop_help()

P: 分配帮助信息

assign_pager($app, $cat, $record_count, $size, $sort, $order, $page = 1,$keywords = ”, $brand = 0, $price_min = 0, $price_max = 0, $display_type = ‘list’, $filter_attr=”, $url_format=”, $sch_array=”)

P: 创建分页信息.分页函数.

get_pager($url, $param, $record_count, $page = 1, $size = 10)

P: 生成给pager.lbi赋值的数组

get_vote($id = ”)

P: 调用调查内容

get_user_browser()

P: 获得浏览器名称和版本

is_spider($record = true)

P: 判断是否为搜索引擎蜘蛛

get_os()

P: 获得客户端的操作系统

visit_stats()

P: 统计访问信息

save_searchengine_keyword($domain, $path)

P: 保存搜索引擎关键字

get_tags($goods_id = 0, $user_id = 0)

P: 获得指定用户、商品的所有标记

get_dyna_libs($theme, $tmp)

P:  获取指定主题某个模板的主题的动态模块

dyna_libs_replace($matches)

P: 换动态模块

upload_file($upload, $type)

P: 处理上传文件,并返回上传图片名(上传失败时返回图片名为空)

show_message($content, $links = ”, $hrefs = ”, $type = ‘info’, $auto_redirect = true)

P: 显示一个提示信息

parse_rate_value($str, &$operate)

P: 将一个形如+10, 10, -10, 10%的字串转换为相应数字,并返回操作符号

recalculate_price()

P: 重新计算购物车中的商品价格:目的是当用户登录时享受会员价格,当用户退出登录时不享受会员价格

assign_comment($id, $type, $page = 1)

P: 查询评论内容

assign_template($ctype = ”, $catlist = array())

P: 默认的smarty赋值

time2gmt($time)

P: 将一个本地时间戳转成GMT时间戳

get_user_bonus($user_id = 0)

P: 查询会员的红包金额

set_affiliate()

P: 保存推荐uid

get_affiliate()

P: 获取推荐uid

article_categories_tree($cat_id = 0)

P: 获得指定分类同级的所有分类以及该分类下的子分类

get_article_parent_cats($cat)

P: 获得指定文章分类的所有上级分类

get_library_number($library, $template = null)

P: 取得某模板某库设置的数量

get_navigator($ctype = ”, $catlist = array())

P: 取得自定义导航栏列表

license_info()

P: 授权信息内容

lib_insert.php (动态内容函数库)

insert_query_info()

P: 获得查询次数以及查询时间

insert_history()

P: 调用浏览历史

insert_cart_info()

P: 调用购物车信息

insert_ads($arr)

P: 调用指定的广告位的广告

insert_member_info()

P: 调用会员信息

insert_comments($arr)

P: 调用评论信息

insert_vote()

P: 调用在线调查信息

lib_goods.php (商品相关函数库)

goods_sort($goods_a, $goods_b)

P: 商品推荐usort用自定义排序行数

get_categories_tree($cat_id = 0)

P: 获得指定分类同级的所有分类以及该分类下的子分类

get_child_tree($tree_id = 0)

P: 取和指定分类ID下的分类树

get_top10($cats = ”)

P: 调用当前分类的销售排行榜

get_recommend_goods($type = ”, $cats = ”)

P: 获得推荐商品

get_promote_goods($cats = ”)

P: 获得促销商品

get_category_recommend_goods($type = ”, $cats = ”, $brand = 0, $min =0,  $max = 0, $ext=”)

P: 获得指定分类下的推荐商品

get_goods_info($goods_id)

P: 获得商品的详细信息

get_goods_properties($goods_id)

P: 获得商品的属性和规格

get_same_attribute_goods($attr)

P:  获得属性相同的商品

get_goods_gallery($goods_id)

P: 获得指定商品的相册

assign_cat_goods($cat_id, $num = 0, $from = ‘web’)

P: 获得指定分类下的商品

assign_brand_goods($brand_id, $num = 0, $cat_id = 0)

P: 获得指定的品牌下的商品

get_extension_goods($cats)

P: 获得所有扩展分类属于指定分类的所有商品ID

bargain_price($price, $start, $end)

P: 判断某个商品是否正在特价促销期

spec_price($spec)

P: 获得指定的规格的价格

group_buy_info($group_buy_id, $current_num = 0)

P: 取得团购活动信息

group_buy_stat($group_buy_id, $deposit)

P: 取得某团购活动统计信息

group_buy_status($group_buy)

P: 获得团购的状态

auction_info($act_id, $config = false)

P: 取得拍卖活动信息

auction_log($act_id)

P: 取得拍卖活动出价记录

auction_status($auction)

P: 计算拍卖活动状态(注意参数一定是原始信息)

goods_info($goods_id)

P: 取得商品信息

favourable_info($act_id)

P: 取得优惠活动信息

wholesale_info($act_id)

P: 批发信息

add_style($goods_name, $style)

P:  添加商品名样式

get_goods_attr($goods_id)

P: 取得商品属性

get_goods_fittings($goods_list = array())

P: 获得购物车中商品的配件

lib_article.php (文章及文章分类相关函数库)

get_cat_articles($cat_id, $page = 1, $size = 20 ,$requirement=”)

P: 获得文章分类下的文章列表

get_article_count($cat_id ,$requirement=”)

P: 获得指定分类下的文章总数

ecshop 如何调用广告位

第一步、  从后台首先添加广告位置 ,然后选择这个广告位置添加图片。

第二步、 需要调广告的,php文件里加

$ads = array(
‘num’=>’1′,//广告数量
‘id’=>’1′//广告位置id
);
$our_ads =insert_ads($ads);
$smarty->assign(“our_ads”,$our_ads);

      第三步 打开我们需要的模板文件 {$our_ads}   ok搞定。

ecshop中实现会员退出时不删除购物车中的信息

ecshop中实现会员退出时不删除购物车中的信息。

思路:

       一、在会员登录时,修改购物车中的 user_id 为当前会员登录的 user_id

             打开 lib_main.php, 找到函数 update_user_info() , 在末尾加上代码:

            /*更新购物车信息*/
            $sql = "UPDATE " .$GLOBALS['ecs']->table('cart'). " SET user_id = '". $_SESSION['user_id'] ."' WHERE session_id = '". SESS_ID ."' ";
             $GLOBALS['db']->query($sql);

二、在会员退出时, 判断 购物车中 如果 user_id 不为 0, 则不删除此条信息。

          打开  cls_session.php , 找到 destroy_session()  函数, 

          修改:

          $this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '$this->session_id'");

为:

          $this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '$this->session_id' AND user_id = 0"); 

完美解决ecshop前台和后台自动退出、购物车自动清空

一、出现这个问题的原因:

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

二、原理

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

三、操作

     在根目录includescls_session.php找到

     $this->_ip = real_ip();

    大概在82行,把它删除或用//注释掉,
    在原位置加入如下代码:


 /*启用cookie记录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, "/"); 
        }

基于ecshop手机微信站的微信支付开发

最近做了微信的手机登陆、手机支付,  手机微信登陆前面已经介绍过了, 现在介绍下微信支付。

这个接口是完全适应于ecshop, 以一个插件的形式(用的jsapi), 但是在其他地方的道理是一样的。

先来看下在ecshop中的目录结构      

 基于ecshop手机微信站的微信支付开发

其中 wxpay这个文件是官网提供的, 放在ecshop的根目录下面的  includes/modules下面。

插件代码在payment文件下面,  命名为   wxpay.php    (注意这个命名,不要改)。

然后看下  wxpay.php 这个的具体的代码。

<?php
/**
 * ECSHOP 微信插件  
 * ============================================================================
 *   微信支付
 *   author: ZHANGLIN
 * ============================================================================
 */

if (!defined('IN_ECS'))
{
    die('Hacking attempt');
}

$payment_lang = ROOT_PATH . 'languages/' .$GLOBALS['_CFG']['lang']. '/payment/wxpay.php';

if (file_exists($payment_lang))
{
    global $_LANG;

    include_once($payment_lang);
}

/* 模块的基本信息 */
if (isset($set_modules) && $set_modules == TRUE)
{
    $i = isset($modules) ? count($modules) : 0;

    /* 代码 */
    $modules[$i]['code']    = basename(__FILE__, '.php'); 

    /* 描述对应的语言项 */
    $modules[$i]['desc']    = 'wxpay_desc';

    /* 是否支持货到付款 */
    $modules[$i]['is_cod']  = '0';

    /* 是否支持在线支付 */
    $modules[$i]['is_online']  = '1';

    /* 作者 */
    $modules[$i]['author']  = 'ZHANGLIN';

    /* 网址 */
    $modules[$i]['website'] = 'https://mp.weixin.qq.com';

    /* 版本号 */
    $modules[$i]['version'] = '1.0.0';

    /* 配置信息 */
    $modules[$i]['config']  = array(
        array('name' => 'app_id',           'type' => 'text',   'value' => ''),
        array('name' => 'paysign_key',      'type' => 'text',   'value' => ''),
        array('name' => 'sign_type',        'type' => 'text',   'value' => 'sha1'), 
        array('name' => 'partner_key',      'type' => 'text',   'value' => ''),
        array('name' => 'app_sercert',      'type' => 'text',   'value' => ''),
        array('name' => 'parener_id',       'type' => 'text',   'value' => ''),
    ); 
    return;
}

/**
 * 类
 */
class wxpay
{

    /**
     * 构造函数
     *
     * @access  public
     * @param
     *
     * @return void
     */
    function wxpay()
    {
    }

    function __construct()
    {
        $this->wxpay();
    }

    /**
     * 生成支付代码
     * @param   array   $order      订单信息
     * @param   array   $payment    支付方式信息
     */
    function get_code($order, $payment)
    {
        if (!defined('EC_CHARSET'))
        {
            $charset = 'utf-8';
        }
        else
        {
            $charset = EC_CHARSET;
        }   

        //定义配置常量
        define('APPID' ,     $payment['app_id']);  //appid
        define('APPKEY' ,    $payment['paysign_key']); //paysign key
        define('SIGNTYPE',   $payment['sign_type']); //method
        define('PARTNERKEY', $payment['partner_key']);//通加密串
        define('APPSERCERT', $payment['app_sercert']); 
        define('PARTNERID',  $payment['parener_id']); 
        include_once(ROOT_PATH . "includes/modules/wxpay/WxPayHelper.php"); 
 
        $commonUtil = new CommonUtil();
        $wxPayHelper = new WxPayHelper();  
        $wxPayHelper->setParameter("bank_type", "WX");
        $wxPayHelper->setParameter("body", '马尼尔商品');
        $wxPayHelper->setParameter("partner", PARTNERID);
        $wxPayHelper->setParameter("out_trade_no", $order['order_sn']);
        $wxPayHelper->setParameter("total_fee", $order['order_amount']*100);
        $wxPayHelper->setParameter("fee_type", "1");
        $wxPayHelper->setParameter("notify_url", return_url(basename(__FILE__, '.php')));
        $wxPayHelper->setParameter("spbill_create_ip", real_ip());
        $wxPayHelper->setParameter("input_charset", "GBK");
        $package = $wxPayHelper->create_biz_package(); 

        echo '<script language="javascript">
        function callpay()
        {
            WeixinJSBridge.invoke("getBrandWCPayRequest",'.$package.',function(res){
            WeixinJSBridge.log(res.err_msg);
            alert(res.err_code+res.err_desc+res.err_msg);
            });
        }
        </script> ';
        $button = '<button type="button" class="btn_white" onclick="callpay()">微信支付</button>';

        return $button;
    } 

    /**
    *  响应操作
    */
    function respond()
    {
        if ( isset($_GET) )
        {
            //支付信息
            $sql = 'SELECT * FROM ' . $GLOBALS['ecs']->table('payment') .
            " WHERE pay_code = 'wxpay' AND enabled = 1"; 
            $payment = $GLOBALS['db']->getRow($sql);
            $payment = unserialize_config($payment['pay_config']);

            //=======================
            //  注意这里要作一个判断,  返回回来的值是否是微信支付成功后返回的值
           //========================  

            $order_sn = trim($_GET['out_trade_no']);  
            $order_id = $GLOBALS['db']->getOne("SELECT order_id FROM " . $GLOBALS['ecs']->table('order_info') . " WHERE order_sn = '$order_sn'");  
            $log_id = $GLOBALS['db']->getOne("SELECT log_id FROM " . $GLOBALS['ecs']->table('pay_log') . "  WHERE order_id = '$order_id'"); 
                    /* 改变订单状态 */
            order_paid($log_id, 2);

            return true;
        }
        else
        {
            return false;
        } 
    }
 
}

?>

 文中涉及到的附件下载:

wxpay.php.rar

wxpay