ecshop flash 分类型管理
- 格式:docx
- 大小:37.46 KB
- 文档页数:2
如何给ecshop添加可折叠和双排的分类列表/post/68.html对于ecshop二次开发----添加可折叠列表的功能其实大部分都是对模板做些调整,加上一些js脚本就可以了。
我们分两步来完成,一是调整模板生成方便我们js操作的html结构,二是书写js脚本,完成功能。
一、调整模板:我们这次要调整的还是category_tree.lbi文件,以前生成的分类是放到<dl>里面,部分div的概念,我们用js对<dl><dd>这些标签的操作没有用<div>来的方便,所以我们书写下面代码,把我们一级分类做成一个”id-header”的div,把分类下的二级分类放到一个”id-centent”下的div里面。
这样调整后我们就可以通过js动态的改变二级分类div的现实不显示来完成菜单的折叠功能了。
当然在改变之前我们要给分类前面加入一个img来显示折叠的+和-号,代码如下:<dt> <img id="{$cat.id}-images"onclick="changedisplaystate('{$cat.id}-content', '{$cat.id} -images');" src="images/green/minus.gif" alt="" /> <ahref="{$cat.url}"> <!--{if $cat.category_img}--> <imgsrc="{$cat.category_img}" alt="{$|escape:html}"/> <!-- {else } --> {$|escape:html} <!-- {/if} --> </a></dt>下面给出模板调整后的代码:<div id="category_tree"style="background-color:#ffffff;"> <!--{foreachfrom=$categories item=cat}--><dlstyle="background-color:#ffffff;"><div id="{$cat.id}-header" style="display:block;float:left;background-color:#ffffff;"><dtstyle="background-color:#ffffff;"> <imgid="{$cat.id}-images"onclick="changedisplaystate('{$cat.id}-content', '{$cat.i d}-images');" src="images/green/minus.gif" alt="" /> <a href="{$cat.url}"> <!--{if$cat.category_img}--> <imgsrc="{$cat.category_img}" alt="{$|escape:html}"/> <!-- {else }--> {$|escape:html} <!-- {/if}--> </a> </dt></div><div id="{$cat.id}-content" style="background-color:#ffffff;"><ddstyle="background-color:#fff;"> <!--{foreachfrom=$cat.cat_id item=child}--> <li style="float: left;line-height: 22px; overflow: hiddenhidden; padding: 0px 5px; width:44%;"> <ahref="{$child.url}">{$|escape:html}</a></li><!--{/fo reach}--> </dd></div></dl> <!--{/foreach}--></div>二、添加js脚本加入动态控制正如前面的代码所写,在每个折叠的img的onclick都调用”changedisplaystate(’{$cat.id}-content’,'{$cat.id}-images’);”,下面我们来实现这个函数,这个函数就是根据穿的id-content和id-images来调整他们的属性,比如展开的时候就是把id-content这个div的css style 里面的display改成block,这样div就可以显示,然后把id-images的src 改成minus的图片,完成整个折叠的过程,下面是代码:<script type="text/javascript">// 获取指定名字元素function$(d){ return document.getElementById(d);} //改变选择的状态,并且换图片functionchangedisplaystate(id,imgUrl){ if($(id).style.display=='none') { $(id).style.display = 'block'; $(imgUrl).src ='images/green/minus.gif'; } else{ $(id).style.display = 'none'; $(imgUrl).src ='images/green/plus.gif'; }}</script>三、完善全部打开和合并上面的代码完成之后我们可以完成大部分的功能,但是刚开始所有的分类都是展开的,如果客户想全部合上,让客户一个个点击合并是不是用户体验太差了,你可以再这个category里面加上一个按钮改成全部打开或者全部,然后在那个打开和合并的image的onclick里面调用changeAllDisplayState函数,下面给出这个函数的具体代码,他是便利categeory下面所有的div,如果是id—content就改变它的display属性,变成block后者none,然后改变里面所有id-images为minus或者plus图片,完成这些也就完成了整个category的打开和合并了,废话少说,上代码://改变所有的状态,并且换图片//parentID为分类的那个层,应该是category,后面的state是要改变成的状态,为none或者block function changeAllDisplayState(parentID,state){ l=$(parentID).getElemen tsByTagName('div'); c=[]; for(i=0;i<l.length;i++){ h=l.i d; if(h.substr(h.indexOf('-')+1,h.length)=='content') { l.style.display = state; categoryID =h.substr(0,h.indexOf('-')-1); imageID =categoryID+"-images"; if(state =='none') { $(imageID).src ='images/green/minus.gif'; } else { $(imgUrl).src ='images/green/plus.gif'; } } }}Tags: ecshop二次开发php项目外包php项目开发ecshop可折叠分类列表ecshop双排分类列表。
ecshop简单三步实现导航商品分类二级菜单1.在page_header.lbi对应的位置(你想显示导航的位置)插入(注意下面的themes/模板名称/util.php中的模板名称改成你模板文件夹的名称) ? php require_once(themes/模板名称/util.php); ? div class = h1.在page_header.lbi对应的位置(你想显示导航的位置)插入(注意下面的"themes/模板名称/util.php"中的"模板名称"改成你模板文件夹的名称)<?phprequire_once("themes/模板名称/util.php");><div class="header-menu"><p {if $navigator_list.config.index eq 1} class="cur" {/if}><a href="../index.php">{$lang.home}</a></p><ul><!-- {foreach name=nav_middle_list from=$navigator_list.middle item=nav} --><li onMouseOver="sw_nav(this,1);" onMouseOut="sw_nav(this,0);" {if $nav.active eq 1} class="curs"{/if}><a href="{$nav.url}" {if $nav.opennew eq 1}target="_blank" {/if}>{$}</a><?php$subcates = get_subcate_byurl($GLOBALS['smarty']->_var['nav']['url']);if($subcates!=false){if(count($subcates)>0){echo "<div class='sub_nav'>";if($subcates){foreach($subcates as $cate){echo "<a href='".$cate['url']."' class='level_1'>".$cate['name']."</a>";}}echo "</div><iframe frameborder='0' scrolling='no' class='nomask'></iframe>";}}></li><!-- {/foreach} --></ul><script type="text/javascript">//初始化主菜单function sw_nav(obj,tag){var subdivs = obj.getElementsByTagName_r("DIV"); var ifs = obj.getElementsByTagName_r("IFRAME");if(subdivs.length>0){if(tag==1){subdivs[0].style.display = "block";ifs[0].style.display = "block";}else{subdivs[0].style.display = "none";ifs[0].style.display = "none";}}}</script></div>2.在CSS文件中插入.header-menu p{ float:left;padding:1px 12px 1px 0;margin-top:-2px;}.header-menu ul li{float:left;padding:1px 12px 1px 12px;margin-top:-2px;}.header-menu ul li a,.header-menu p a{color: #333;display:block;}.header-menu ul li a:hover,.header-menu p a:hover{color:#888;}.header-menu ul li.curs{background:#999;}.header-menu ul li.curs a{color:#fff;}.sub_nav{ background:#999;width:110px; position:absolute; z-index:5003; display:none;margin-left:-12px;}.nomask{ background:#fff; width:110px; height:50px; position:absolute; z-index:5002;display:none;margin-left:-12px;}.sub_nav a.level_1{ display:block;color:#fff;padding:6px 6px 6px 13px;font:11px Tahoma,Verdana,PMingLiU,Arial;border-bottom:1px dotted #D1D1D1;*border-bottom:1px dotted #D1D1D1 !important;*border-bottom:1px solid #A8A8A8;}.sub_nava.level_1:hover{color:#fff;background:#55B46C;text-decoration:none;}3.把以下代码编辑成(util.php)解压出来拷贝到模板目录下<?phpfunction get_subcate_byurl($url){$rs = strpos($url,"category");if($rs!==false){preg_match("/\d+/i",$url,$matches);$cid = $matches[0];$cat_arr = array();$sql = "select * from ".$GLOBALS['ecs']->table('category')." where parent_id=".$cid." and is_show=1";$res = $GLOBALS['db']->getAll($sql);foreach($res as $idx => $row){$cat_arr[$idx]['id'] = $row['cat_id'];$cat_arr[$idx]['name'] = $row['cat_name'];$cat_arr[$idx]['url'] = build_uri('category', array('cid' => $row['cat_id']), $row['cat_name']);$cat_arr[$idx]['children'] = get_clild_list($row['cat_id']);}return $cat_arr;else{return false;}}function get_clild_list($pid){//开始获取子分类$sql_sub = "select * from ".$GLOBALS['ecs']->table('category')." where parent_id=".$pid." and is_show=1";$subres = $GLOBALS['db']->getAll($sql_sub);if($subres){foreach ($subres as $sidx => $subrow){$children[$sidx]['id']=$subrow['cat_id'];$children[$sidx]['name']=$subrow['cat_name'];$children[$sidx]['url']=build_uri('category', array('cid' => $subrow['cat_id']), $subrow['cat_name']);}}else{$children = null; }return $children; }。
[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网站项目软件需求规格说明书拟制陈强日期2010-12-6 评审人日期批准日期签发日期changshahuri IT Co., Ltd.长沙华瑞软件学院All rights reserved版权所有侵权必究目录1. 简介 (3)1.1. 编写目的 (3)让您更了解ECSHOP的各方面功能,以及对ECSHOP更深的了解。
(3)1.2. 适用范围 (3)1.2.1. 软件名称 (3)1.2.2. 软件功能 (3)1.2.3. 软件应用 (4)1.3. 定义及关键词 (4)1.4. 参考资料 (5)1.5. 项目流程 (5)登录总体概述 (5)1.6. 软件概述 (6)1.6.1. 项目介绍 (6)1.6.2. 产品环境介绍 (6)1.7. 软件模块 (7)1.8. 角色ACTORS (8)2. 功能需求 (9)2.1. 需求分析 (9)2.1.1. 商品前台展示 (9)2.1.2. 商品后台管理 (13) (22)2.1.3. 会员管理 (22)2.1.4. 订单管理 (30)2.1.5. 后台权限管理 (41)表目录表1. 关键词 (4)1. 简介1.1. 编写目的让您更了解ecshop的各方面功能,以及对ecshop更深的了解。
1.2. 适用范围1.2.1. 软件名称ECShop 英文全称为e-Commerce Shop,中文全称为ECShop 网上商店管理系统,简称ECShop1.2.2. 软件功能1.前台:用户注册模块、用户登录模块、用户中心模块、购物车管理模块、商品展示模块、留言板模块。
(1)前台会员注册客户想要进行网上购物就必须先进行注册(当然作为游客购物,可以直接联系管理进行购物)(2)前台会员登录客户想要购买商品需要先进行登录(3)用户中心此模块包括欢迎页、用户信息、我的订单、收货地址、我的留言、缺货登记、我的评论、资金管理、我的积分。
欢迎页:显示会员上次登录的信息及有关积分、订单的一些信息。
ECSHOP数据表字段说明s_account_log //用户账目日志表s_ad //广告表(位置,类型,名称,链接,图片,开始,结束,广告主相关信息,点击是否显示)s_ad_position //广告位(名称,宽,高,描述,样式)s_admin_action //管理权限分配(父类ID,权限代码)s_admin_log //管理日志(登陆时间,登陆ID,操作描述,IP)s_admin_message //管理留言(发送id,接收id,发送日期,阅读日期,是否已读,是否删除,标题,内容)s_admin_user //管理员管理(用户名,email,密码,加入时间,最后登陆时间,最后登陆IP,权限等)s_adsense //广告相关统计(来源广告,来源位置,点击)s_affiliate_log // 管理日志(登陆时间,登录管理员ID,操作描述,IP)s_agency //广告相关统计(来源广告,来源位置,点击)s_area_region //配送区域关联(配送区域ID,具体地址ID)s_article //文章(分类ID,标题,内容,作者,作者email,关键字, 类型,是否显示,添加时间,文件地址,打开类型)s_article_cat //文章分类(名称,类型,关键字,描述,排序,是否导航显示)s_attribute //文章(分类ID,标题,内容, 作者, 作者email,关键字,类型,是否显示)s_auction_log //商品拍卖表s_auto_manage //推广链接的记录信息s_bonus_type //红包(名称,金额, 发放起日期,发放结束期,使用起始日期, 使用结束日期, 发放类型, 金额下限,(按订单发放),金额上限)s_booking_goods //缺货登记(登记用户ID,email,电话,商品ID,描述,数量,登记时间,是否已处理,处理管理员,处理时间,处理备注)s_brand //品牌(名称,logo,描述, 链接,排序,是否显示)s_card // 祝福贺卡(名称,图片,费用,免费额度,描述)s_cart//购物车(用户ID,session_id,商品ID,商品编号,商品名称,市场价,购买价,数量,属性,是否真实商品,扩展代码,父类ID, 类型,是否赠品,能否处理)s_category //商品分类(名称,关键字,描述,父类ID,排序,是否有子类,模板文件,数量单位,是否导航显示)s_collect_goods //收藏(用户ID,商品ID,收藏时间)s_comment //评论(类型,类型ID,email,用户名,内容,评星,添加时间,IP,状态, 父类ID)s_cronss_email_lists_email_sendlists_error_logs_favourable_activitys_feedback //用户留言(父类ID,用户ID,用户名,内容,评星,添加时间,IP,状态,父类ID)s_friend_link//友情链接(名称,链接,logo,排序)s_goods //商品(分类ID,名称,点击,品牌ID,供应商名称,库存,重量,市场价,售价,fitting_price(?), 促销开始日期,结束日期, 警告数量,关键字, 简介,描述,缩略图,图, 原图,是否成为赠品,扩展代码,是否上架,是否单独销售,是否关联,配件关联,是否赠品,能否世为赠品,单位,添加时间,排序,是否回收,精品,新品,推荐,热销,红包ID,更新日期,商品类型, 商品备注,首页轮播)s_goods_activitys_goods_article //商品文章关联(gid,aid)s_goods_attr //商品属性(商品ID,图片,描述,缩略图, 原图)s_goods_cats_goods_gallery //商品相册(商品ID,图片,描述,缩略图,原图)s_goods_type //商品类型(名称,状态)s_group_goodss_keywordss_link_goods //商品关联(商品ID,关联ID,单双向)s_mail_templates //邮件样式(代码,是否html,名称, 样式,最后修改日期)s_member_price //会员价(商品ID,会员等级,会员价)s_navs_order_action //订单处理(订单ID,商品ID,商品名称,商品编号,商品数量,市场价,订单价,商品属性,配送数量,是否真实商品,扩展代码,父类ID,是否赠品)s_order_goods //订单一商品(订单ID,商品ID,商品名称,商品编号,商品数量,市场价,订单价,商品属性,配送数量,是否真实商品,扩展代码, 父类ID,是否赠品)s_order_info //订单详细信息s_pack // 包装(名称,图片,费用,免费额,描述)s_pay_log //支付记录s_payment //支付工具(代码,名称,费用,描述,排序, 配置,状态,is_cod(?))s_plugins //插件(代码,版本,库,签名, 安装日期)s_region //地方数据s_searchengines_sessions //保存session的s_sessions_datas_shipping //配送(代码,名称,描述,保价费,状态)s_shipping_area //配送区域(序列配置)s_shop_config //设置(父类ID,代码,类型,范围,文件夹,值)s_snatch_log // 夺宝奇兵出价记录s_stats //访问记录(时间,IP,访问次数,浏览器,系统,语言,地区,来源域名,来源地址,关键字,进入链接)s_tag //用户标签s_template //模板区域(文件名,区域,模板库,排序,id,数量,类型,模板)s_topics_user_account //会员账户(用户ID,管理员,总额,添加时间,支付时间,管理备注,用户备注,处理类型,支付工具,是否支付)s_user_addresss_user_bonuss_user_ranks_userss_virtual_cards_votes_vote_logs_vote_options_wholesale案例网站:/。
ECSHOP数据库结构详细说明ECSHOP数据库结构详细说明(1)表的结构`ecs_account_log`==用户账目日志表CREATE TABLE IF NOT EXISTS `ecs_account_log` (`log_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号',`user_id` mediumint(8) unsigned NOT NULL COMMENT '用户登录后保存在session中的id号,跟users表中的user_id对应', `user_money` decimal(10,2) NOT NULL COMMENT '用户该笔记录的余额',`frozen_money` decimal(10,2) NOT NULL COMMENT '被冻结的资金',`rank_points` mediumint(9) NOT NULL COMMENT '等级积分,跟消费积分是分开的',`pay_points` mediumint(9) NOT NULL COMMENT '消费积分,跟等级积分是分开的',`change_time` int(10) unsigned NOT NULL COMMENT '该笔操作发生的时间',`change_desc` varchar(255) NOT NULL COMMENT '该笔操作的备注,一般是,充值或者提现。
也可是是管理员后台写的任何在备注',`change_type` tinyint(3) unsigned NOT NULL COMMENT '操作类型,0为充值,1为提现,2为管理员调节,99为其他类型', PRIMARY KEY (`log_id`),KEY `user_id` (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户帐号情况记录表,包括资金和积分等' AUTO_INCREMENT=42 ;-- --------------------------------------------------------------------------------------------------------------------------------------------------------------------表的结构`ecs_ad` 广告表(位置,类型,名称,链接,图片,开始,结束,广告主相关信息,点击,是否显示)CREATE TABLE IF NOT EXISTS `ecs_ad` (`ad_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号',`position_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '0,站外广告;从1开始代表的是该广告所处的广告位,同表ad_position中的字段position_id的值',`media_type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '广告类型,0,图片;1,flash;2,代码;3,文字', `ad_name` varchar(60) NOT NULL COMMENT '该条广告记录的广告名称',`ad_link` varchar(255) NOT NULL COMMENT '广告链接地址', `ad_code` text NOT NULL COMMENT '广告链接的表现,文字广告就是文字或图片和flash就是它们的地址,代码广告就是代码内容',`start_time` int(11) NOT NULL DEFAULT '0' COMMENT '广告开始时间',`end_time` int(11) NOT NULL DEFAULT '0' COMMENT '广告结束时间',`link_man` varchar(60) NOT NULL COMMENT '广告联系人',`link_email` varchar(60) NOT NULL COMMENT '广告联系人的邮箱',`link_phone` varchar(60) NOT NULL COMMENT '广告联系人的电话',`click_count` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '该广告点击数',`enabled` tinyint(3) unsigned NOT NULL DEFAULT '1'COMMENT '该广告是否关闭,1,开启;0,关闭;关闭后广告将不再有效,直至重新开启',PRIMARY KEY (`ad_id`),KEY `position_id` (`position_id`),KEY `enabled` (`enabled`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='广告列表配置表,包括站内站外的图片,文字,flash,代码广告' AUTO_INCREMENT=6 ;-- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------表的结构`ecs_admin_action`==管理权限分配(父类ID,权限代码)CREATE TABLE IF NOT EXISTS `ecs_admin_action` (`action_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号',`parent_id` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '该id项的父id,对应本表的action_id字段', `action_code` varchar(20) NOT NULL COMMENT '代表权限的英文字符串,对应汉文在语言文件中,如果该字段有某个字符串,就表示有该权限',PRIMARY KEY (`action_id`),KEY `parent_id` (`parent_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='管理员权限列表树' AUTO_INCREMENT=104 ;-- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------表的结构`ecs_admin_log`==管理日志(登陆时间,登陆管理员ID,操作描述,IP)CREATE TABLE IF NOT EXISTS `ecs_admin_log` (`log_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号',`log_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '写日志时间',`user_id` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '该日志所记录的操作者id,同ecs_admin_user的user_id',`log_info` varchar(255) NOT NULL COMMENT '管理操作内容', `ip_address` varchar(15) NOT NULL COMMENT '管理者登录ip', PRIMARY KEY (`log_id`),KEY `log_time` (`log_time`),KEY `user_id` (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='管理员操作日志表' AUTO_INCREMENT=158 ;-- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------表的结构`ecs_admin_message`==管理员留言(发送者ID,接收者ID,发送日期,阅读日期,是否已读,是否删除,标题,内CREATE TABLE IF NOT EXISTS `ecs_admin_message` (`message_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号',`sender_id` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '发送该留言的管理员id,同ecs_admin_user的user_id', `receiver_id` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '接收消息的管理员id,同ecs_admin_user的user_id,如果是给多个管理员发送,则同一个消息给每个管理员id发送一条',`sent_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '留言发送时间',`read_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '留言阅读时间',`readed` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '留言是否阅读,1,已阅读;0,未阅读',`deleted` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '留言是否已经是否已经被删除,1,已删除;0,未删除', `title` varchar(150) NOT NULL COMMENT '留言的主题',`message` text NOT NULL COMMENT '留言的内容',PRIMARY KEY (`message_id`),KEY `sender_id` (`sender_id`,`receiver_id`),KEY `receiver_id` (`receiver_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='管理员留言记录表' AUTO_INCREMENT=7 ;-- -------------------------------------------------------- 表的结构`ecs_admin_user`==管理员管理(用户名,email ,密码,加入时间,最后登陆时间,最后登陆IP,权限等)CREATE TABLE IF NOT EXISTS `ecs_admin_user` (`user_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号,管理员代号',`user_name` varchar(60) NOT NULL COMMENT '管理员登录名',`email` varchar(60) NOT NULL COMMENT '管理员邮箱',`password` varchar(32) NOT NULL COMMENT '管理员登录秘密加密串',`add_time` int(11) NOT NULL DEFAULT '0' COMMENT '管理员添加时间',`last_login` int(11) NOT NULL DEFAULT '0' COMMENT '管理员最后一次登录时间',`last_ip` varchar(15) NOT NULL COMMENT '管理员最后一次登录ip',`action_list` text NOT NULL COMMENT '管理员管理权限列表', `nav_list` text NOT NULL COMMENT '管理员导航栏配置项',`lang_type` varchar(50) NOT NULL,`agency_id` smallint(5) unsigned NOT NULL COMMENT '该管理员负责的办事处的id,同ecs_agency的agency_id字段。
电子商务平台(网上商城)系统特色功能介绍目录1. 系统特点 (4)1.1. 技术架构 (4)1.2. 开放的插件机制 (4)1.3. 功能Ajax化 (5)1.4. 安全高效 (5)1.5. 搜索引擎友好性 (6)2. 商品展示 (7)2.1. 商品分类与品牌 (7)2.2. 商品类型与属性 (7)2.3. 推荐商品 (9)2.4. 商品详情页 (10)2.4.1. 相关商品 (10)2.4.2. 配件 (11)2.4.3. 关联文章 (11)2.4.4. 购买过该商品的人还买过的商品 (11)2.5. RSS Feeds和T ag (11)3. 购物流程 (12)3.1. 智能化的购物流程 (12)3.2. 聪明的配送方式 (13)4. 推广促销 (13)4.1. 拍卖 (13)4.2. 夺宝奇兵 (14)4.3. 团购 (14)4.4. 灵活多样的优惠活动 (14)4.5. 推荐提成 (15)4.6. 会员信用额度 (15)4.7. 销售专题 (16)5. 会员系统 (16)5.1. 会员数据整合 (16)5.2. 积分兑换 (16)6. 网店管理 (17)6.1. 报表统计 (17)6.2. 办事处 (20)6.3. 短信 (20)6.4. 计划任务 (20)7. 结束语 (21)1.系统特点1.1.技术架构采用PHP、Ajax技术开发,系统可运行于Linux、Windows等多种操作系统平台。
系统采用MVC(Module, View Controller)三层架构设计,从根本上保证了系统的健壮性与可扩展性。
图表11.2.开放的插件机制对于电子商务网站来说支付与配送是业务流程中至关重要的一个环节,也正是网上支付与各物流公司的兴起促使了电子商务快速的发展。
抛弃了传统的固定公式,由用户来设置各种参数的方式,而是采用了一个开放式的插件机制来管理各种支付和配送方式。
对于网上商店网站的站长来说,建立一个社区是一种提高网店的用户黏度的有效手段,这样也就带来了一个问题,如何将社区的用户与网店的用户进行整合。
Flash分类型管理
先给后台添加二级栏目.
在语言文件languages/zh_cn/admin/common.php中添加
$_LANG['flashplays'] = '子页面广告管理';( flashplays为自定义,区分首页flash定义名)
然后在管理中心数组文件中(admin/includes/inc_menu.php文件)
添加$modules['11_system']['flashplays'] = 'flashplays.php?act=list';
分别复制flashplay.php文件和flashplay_list.htm文件.改名称为
($modules['11_system']['flashplays'] = 'flashplays.php?act=list';)中的=后面的文件名.
并在flashplays.php文件中改变模板页面名称
在后台进行修改:复制flashplay.php文件成为子页面flash程序页面.并且必须复制页面语言包,languages/zh_cn/admin/flashplay.php文件并且和子页面flash程序页面名称一样.
/*分析*/
在flashplays.php程序页面入库和查询xml文件的数组语句加上一个类型.(估计数据库也要插一条字段. 数据库和xml文件的关系.???)
后台添加图片的时候要有类型选择下拉列表.(在flashplays.php页面进行查询数据库.)
在添加页面flashplay_adds.htm模板页面进行foreach循环显示.传递name值为类型id
Ps: ecshop$_CFG数组主要是放置一些系统参数,并且全站共享的数据,在使用的时候,
ecshop里面常常以$GLOBALS['_CFG']全局变量的模式来处理。
ecshop 的$GLOBALS['_CFG'],主要是在includes/init.php中出现并且初始化,$_CFG = load_config();load_config()函数负责将参数取出来。
includeslib_common.php 文件中包含了这个ecshop 函数。
($sql="SELECT cat_id, cat_name FROM " . $GLOBALS['ecs']->table("category");
$type = $db->getRow($sql);
$sort = 0;
$rt = array('act'=>'add','img_url'=>$url,'img_src'=>$src, 'img_sort'=>$sort,'img_type'=>$type['name']);)
( // 插入新数据
array_unshift($flashdb, array('src'=>$src, 'url'=>$_POST['img_url'], 'text'=>$_POST['img_text'] ,'sort'=>$_POST['img_sort']),'type'=>$_POST['img_type']);)
(foreach ($t as $key => $val)
{
$val[4] = isset($val[4]) ? $val[4] : 0;
$flashdb[] = array('src'=>$val[1],'url'=>$val[2],'text'=>$val[3],'sort'=>$val[4],'type'=>$val[5]);
})
( if (!empty($flashdb))
{
$xml = '<?xml version="1.0" encoding="' . EC_CHARSET . '"?><bcaster>';
foreach ($flashdb as $key => $val)
{
$xml .= '<item item_url="' . $val['src'] . '" link="' . $val['url'] . '" text="' . $val['text'] . '" sort="' . $val['sort'] . '"type="' . $val['type'] '"/>';
}
$xml .= '</bcaster>';
file_put_contents(ROOT_PATH . DATA_DIR . '/flash_data.xml', $xml);
})
前台:$smarty->assign('index_ad', $_CFG['index_ad']);
if ($_CFG['index_ad'] == 'cus')
{
$sql = 'SELECT ad_type, content, url FROM ' . $ecs->table("ad_custom") . ' WHERE ad_status = 2 AND limit 0,2';
$ad = $db->getRow($sql, true);
$smarty->assign('ad', $ad);
}
Ps:查询条件要加上自己在数据库添加的字段值为要跳转的分类的ID 以来区分不同页面的不用flash显示.
:如果打开flash_data.xml文件如果有数据的情况下想往里面加入数据会出下拉选项???????
..晚上记的听歌曲Song。