如何获取及更新oc category 添加属性中商品属性及推荐值

君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
京东API接口整理
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口查看: 6561|回复: 9
注册时间最后登录阅读权限10积分7精华0帖子
新手上路, 积分 7, 距离下一级还需 43 积分
分类表:cate_id , cate_name, parent_id
& && && && && && & 1& && &&&数码产品& && &&&0
& && && && && && & 2& && && &手机& && && && &&&1
& && && && && && & 3& && &&&平板电脑& && &&&1
& && && && && && & ..& && && && &..& && && && && & ..
商品表:pro_id , pro_name , pro_price , cate_id
& && && && && && & 1& && &iphone4s& && &&&4999& && &&&2
& && && && && && & 2& && &note2& && && && & 4999& && &&&2
& && && && && && & ..& && &&&....& && && && && & ...& && && && & ..
属性表:att_id , att_name
& && && && && & 1& && && & 品牌
& && && && && & 2& && && & 屏幕尺寸
& && && && && & 3& && && & 系统
& && && && && & ..& && && && &...& && && &
商品属性表:pro_att_id , pro_id , att_id, att_value
& && && && && && && && && &1& && && && &&&1& && && &&&1& && && &苹果
& && && && && && && && && &2& && && && &&&1& && && &&&2& && && & 3.5
& && && && && && && && && &3& && && && &&&2& && && && &1& && && &三星
小弟想请教下如何实现类似这种多属性筛选效果:见如下图
11:34:45 上传
就是想问下SQL怎么写,逻辑上这么实现?越想越模糊了。万分感谢!
注册时间最后登录阅读权限200积分624精华0帖子
本帖最后由 淘气宝宝 于
12:49 编辑
淘宝网拥有国内最具商业价值的海量数据。截至当前,每天有超过30亿的店铺、商品浏览记录,10亿在线商品数,上千万的成交、收藏和评价数据。如何从这些数据中挖掘出真正的商业价值,进而帮助淘宝、商家进行企业的数据化运营,帮助消费者进行理性的购物决策,是淘宝数据平台与产品部的使命。为此,我们进行了一系列数据产品的研发,比如为大家所熟知的量子统计、数据魔方和淘宝指数等。尽管从业务层面来讲,数据产品的研发难度并不高;但在“海量”的限定下,数据产品的计算、存储和检索难度陡然上升。本文将以数据魔方为例,向大家介绍淘宝在海量数据产品技术架构方面的探索。淘宝海量数据产品技术架构数据产品的一个最大特点是数据的非实时写入,正因为如此,我们可以认为,在一定的时间段内,整个系统的数据是只读的。这为我们设计缓存奠定了非常重要的基础。图1 淘宝海量数据产品技术架构按照数据的流向来划分,我们把淘宝数据产品的技术架构分为五层(如图1所示),分别是数据源、计算层、存储层、查询层和产品层。位于架构顶端的是我们的数据来源层,这里有淘宝主站的用户、店铺、商品和交易等数据库,还有用户的浏览、搜索等行为日志等。这一系列的数据是数据产品最原始的生命力所在。在数据源层实时产生的数据,通过淘宝自主研发的数据传输组件DataX、DbSync和Timetunnel准实时地传输到一个有1500个节点的Hadoop集群上,这个集群我们称之为“云梯”,是计算层的主要组成部分。在“云梯”上,我们每天有大约40000个作业对1.5PB的原始数据按照产品需求进行不同的MapReduce计算。这一计算过程通常都能在凌晨两点之前完成。相对于前端产品看到的数据,这里的计算结果很可能是一个处于中间状态的结果,这往往是在数据冗余与前端计算之间做了适当平衡的结果。不得不提的是,一些对实效性要求很高的数据,例如针对搜索词的统计数据,我们希望能尽快推送到数据产品前端。这种需求再采用“云梯”来计算效率将是比较低的,为此我们做了流式数据的实时计算平台,称之为“银河”。“银河”也是一个分布式系统,它接收来自TimeTunnel的实时消息,在内存中做实时计算,并把计算结果在尽可能短的时间内刷新到NoSQL存储设备中,供前端产品调用。容易理解,“云梯”或者“银河”并不适合直接向产品提供实时的数据查询服务。这是因为,对于“云梯”来说,它的定位只是做离线计算的,无法支持较高的性能和并发需求;而对于“银河”而言,尽管所有的代码都掌握在我们手中,但要完整地将数据接收、实时计算、存储和查询等功能集成在一个分布式系统中,避免不了分层,最终仍然落到了目前的架构上。为此,我们针对前端产品设计了专门的存储层。在这一层,我们有基于MySQL的分布式关系型数据库集群MyFOX和基于HBase的NoSQL存储集群Prom,在后面的文字中,我将重点介绍这两个集群的实现原理。除此之外,其他第三方的模块也被我们纳入存储层的范畴。存储层异构模块的增多,对前端产品的使用带来了挑战。为此,我们设计了通用的数据中间层——glider——来屏蔽这个影响。glider以HTTP协议对外提供restful方式的接口。数据产品可以通过一个唯一的URL获取到它想要的数据。以上是淘宝海量数据产品在技术架构方面的一个概括性的介绍,接下来我将重点从四个方面阐述数据魔方设计上的特点。关系型数据库仍然是王道关系型数据库(RDBMS)自20世纪70年代提出以来,在工业生产中得到了广泛的使用。经过三十多年的长足发展,诞生了一批优秀的数据库软件,例如Oracle、MySQL、DB2、Sybase和SQL Server等。图2 MyFOX中的数据增长曲线尽管相对于非关系型数据库而言,关系型数据库在分区容忍性(Tolerance to Network Partitions)方面存在劣势,但由于它强大的语义表达能力以及数据之间的关系表达能力,在数据产品中仍然占据着不可替代的作用。淘宝数据产品选择MySQL的MyISAM引擎作为底层的数据存储引擎。在此基础上,为了应对海量数据,我们设计了分布式MySQL集群的查询代理层——MyFOX,使得分区对前端应用透明。图3 MyFOX的数据查询过程目前,存储在MyFOX中的统计结果数据已经达到10TB,占据着数据魔方总数据量的95%以上,并且正在以每天超过6亿的增量增长着(如图2所示)。这些数据被我们近似均匀地分布到20个MySQL节点上,在查询时,经由MyFOX透明地对外服务(如图3所示)。图4 MyFOX节点结构值得一提的是,在MyFOX现有的20个节点中,并不是所有节点都是“平等”的。一般而言,数据产品的用户更多地只关心“最近几天”的数据,越早的数据,越容易被冷落。为此,出于硬件成本考虑,我们在这20个节点中分出了“热节点”和“冷节点”(如图4所示)。顾名思义,“热节点”存放最新的、被访问频率较高的数据。对于这部分数据,我们希望能给用户提供尽可能快的查询速度,所以在硬盘方面,我们选择了每分钟15000转的SAS硬盘,按照一个节点两台机器来计算,单位数据的存储成本约为4.5W/TB。相对应地,“冷数据”我们选择了每分钟7500转的SATA硬盘,单碟上能够存放更多的数据,存储成本约为1.6W/TB。将冷热数据进行分离的另外一个好处是可以有效提高内存磁盘比。从图4可以看出,“热节点”上单机只有24GB内存,而磁盘装满大约有1.8TB(300 * 12 * 0.5 / 1024),内存磁盘比约为4:300,远远低于MySQL服务器的一个合理值。内存磁盘比过低导致的后果是,总有一天,即使所有内存用完也存不下数据的索引了——这个时候,大量的查询请求都需要从磁盘中读取索引,效率大打折扣。NoSQL是SQL的有益补充在MyFOX出现之后,一切都看起来那么完美,开发人员甚至不会意识到MyFOX的存在,一条不用任何特殊修饰的SQL语句就可以满足需求。这个状态持续了很长一段时间,直到有一天,我们碰到了传统的关系型数据库无法解决的问题——全属性选择器(如图5所示)。图5 全属性选择器这是一个非常典型的例子。为了说明问题,我们仍然以关系型数据库的思路来描述。对于笔记本电脑这个类目,用户某一次查询所选择的过滤条件可能包括“笔记本尺寸”、“笔记本定位”、“硬盘容量”等一系列属性(字段),并且在每个可能用在过滤条件的属性上,属性值的分布是极不均匀的。在图5中我们可以看到,笔记本电脑的尺寸这一属性有着10个枚举值,而“蓝牙功能”这个属性值是个布尔值,数据的筛选性非常差。在用户所选择的过滤条件不确定的情况下,解决全属性问题的思路有两个:一个是穷举所有可能的过滤条件组合,在“云梯”上进行预先计算,存入数据库供查询;另一个是存储原始数据,在用户查询时根据过滤条件筛选出相应的记录进行现场计算。很明显,由于过滤条件的排列组合几乎是无法穷举的,第一种方案在现实中是不可取的;而第二种方案中,原始数据存储在什么地方?如果仍然用关系型数据库,那么你打算怎样为这个表建立索引?这一系列问题把我们引到了“创建定制化的存储、现场计算并提供查询服务的引擎”的思路上来,这就是Prometheus(如图6所示)。图6 Prom的存储结构从图6可以看出,我们选择了HBase作为Prom的底层存储引擎。之所以选择HBase,主要是因为它是建立在HDFS之上的,并且对于MapReduce有良好的编程接口。尽管Prom是一个通用的、解决共性问题的服务框架,但在这里,我们仍然以全属性选择为例,来说明Prom的工作原理。这里的原始数据是前一天在淘宝上的交易明细,在HBase集群中,我们以属性对(属性与属性值的组合)作为row-key进行存储。而row-key对应的值,我们设计了两个column-family,即存放交易ID列表的index字段和原始交易明细的data字段。在存储的时候,我们有意识地让每个字段中的每一个元素都是定长的,这是为了支持通过偏移量快速地找到相应记录,避免复杂的查找算法和磁盘的大量随机读取请求。图7 Prom查询过程图7用一个典型的例子描述的Prom在提供查询服务时的工作原理,限于篇幅,这里不做详细描述。值得一提的是,Prom支持的计算并不仅限于求和SUM运算,统计意义上的常用计算都是支持的。在现场计算方面,我们对Hbase进行了扩展,Prom要求每个节点返回的数据是已经经过“本地计算”的局部最优解,最终的全局最优解只是各个节点返回的局部最优解的一个简单汇总。很显然,这样的设计思路是要充分利用各个节点的并行计算能力,并且避免大量明细数据的网络传输开销。
用中间层隔离前后端上文提到过,MyFOX和Prom为数据产品的不同需求提供了数据存储和底层查询的解决方案,但随之而来的问题是,各种异构的存储模块给前端产品的使用带来了很大的挑战。并且,前端产品的一个请求所需要的数据往往不可能只从一个模块获取。举个例子,我们要在数据魔方中看昨天做热销的商品,首先从MyFOX中拿到一个热销排行榜的数据,但这里的“商品”只是一个ID,并没有ID所对应的商品描述、图片等数据。这个时候我们要从淘宝主站提供的接口中去获取这些数据,然后一一对应到热销排行榜中,最终呈现给用户。图8 glider的技术架构有经验的读者一定可以想到,从本质上来讲,这就是广义上的异构“表”之间的JOIN操作。那么,谁来负责这个事情呢?很容易想到,在存储层与前端产品之间增加一个中间层,它负责各个异构“表”之间的数据JOIN和UNION等计算,并且隔离前端产品和后端存储,提供统一的数据查询服务。这个中间层就是glider(如图8所示)。缓存是系统化的工程除了起到隔离前后端以及异构“表”之间的数据整合的作用之外,glider的另外一个不容忽视的作用便是缓存管理。上文提到过,在特定的时间段内,我们认为数据产品中的数据是只读的,这是利用缓存来提高性能的理论基础。在图8中我们看到,glider中存在两层缓存,分别是基于各个异构“表”(datasource)的二级缓存和整合之后基于独立请求的一级缓存。除此之外,各个异构“表”内部可能还存在自己的缓存机制。细心的读者一定注意到了图3中MyFOX的缓存设计,我们没有选择对汇总计算后的最终结果进行缓存,而是针对每个分片进行缓存,其目的在于提高缓存的命中率,并且降低数据的冗余度。大量使用缓存的最大问题就是数据一致性问题。如何保证底层数据的变化在尽可能短的时间内体现给最终用户呢?这一定是一个系统化的工程,尤其对于分层较多的系统来说。图9 缓存控制体系图9向我们展示了数据魔方在缓存控制方面的设计思路。用户的请求中一定是带了缓存控制的“命令”的,这包括URL中的query string,和HTTP头中的“If-None-Match”信息。并且,这个缓存控制“命令”一定会经过层层传递,最终传递到底层存储的异构“表”模块。各异构“表”除了返回各自的数据之外,还会返回各自的数据缓存过期时间(ttl),而glider最终输出的过期时间是各个异构“表”过期时间的最小值。这一过期时间也一定是从底层存储层层传递,最终通过HTTP头返回给用户浏览器的。缓存系统不得不考虑的另一个问题是缓存穿透与失效时的雪崩效应。缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。在数据魔方里,我们采用了一个更为简单粗暴的方法,如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。缓存失效时的雪崩效应对底层系统的冲击非常可怕。遗憾的是,这个问题目前并没有很完美的解决方案。大多数系统设计者考虑用加锁或者队列的方式保证缓存的单线程(进程)写,从而避免失效时大量的并发请求落到底层存储系统上。在数据魔方中,我们设计的缓存过期机制理论上能够将各个客户端的数据失效时间均匀地分布在时间轴上,一定程度上能够避免缓存同时失效带来的雪崩效应。结束语正是基于本文所描述的架构特点,数据魔方目前已经能够提供压缩前80TB的数据存储空间,数据中间层glider支持每天4000万的查询请求,平均响应时间在28毫秒(6月1日数据),足以满足未来一段时间内的业务增长需求。尽管如此,整个系统中仍然存在很多不完善的地方。一个典型的例子莫过于各个分层之间使用短连接模式的HTTP协议进行通信。这样的策略直接导致在流量高峰期单机的TCP连接数非常高。所以说,一个良好的架构固然能够在很大程度上降低开发和维护的成本,但它自身一定是随着数据量和流量的变化而不断变化的。我相信,过不了几年,淘宝数据产品的技术架构一定会是另外的样子。
注册时间最后登录阅读权限10积分7精华0帖子
新手上路, 积分 7, 距离下一级还需 43 积分
哥,这么强大的东西,技术没到家,看不懂更不会。:funk:
注册时间最后登录阅读权限30积分211精华0帖子
中级会员, 积分 211, 距离下一级还需 289 积分
兄弟,看你这截图是在ec_shop里的吧,你先看看ec_shop里面是怎么处理的嘛,打印一下sql语句看看嘛!
注册时间最后登录阅读权限10积分6精华0帖子
新手上路, 积分 6, 距离下一级还需 44 积分
薳志 发表于
兄弟,看你这截图是在ec_shop里的吧,你先看看ec_shop里面是怎么处理的嘛,打印一下sql语句看看嘛! ...
截图是京东吧~
注册时间最后登录阅读权限20积分190精华0帖子
注册会员, 积分 190, 距离下一级还需 10 积分
我也想知道这个怎么做
注册时间最后登录阅读权限20积分190精华0帖子
注册会员, 积分 190, 距离下一级还需 10 积分
我刚看了一下ecshop的,和这个差不多,可以研究一下echsop的
注册时间最后登录阅读权限50积分671精华0帖子
高级会员, 积分 671, 距离下一级还需 329 积分
本帖最后由 -技术成就梦想 于
20:52 编辑
创建一张商品类型表 type 【注意:不是栏目category】
然后再创建一张商品属性表
做一个添加商品类型的页面,还有增加商品属性的页面
点击增加商品属性的时候选择商品类型(当然商品属性表里要有一个对应商品类型的ID)一对多表的设计
然后属性值得类容存储方式&&1 下拉框 2 input框 3 textarea长文本框
然后还要有一个字段来存储&&当选择该属性属于下拉框 输入值得时候,就应该确定这个下拉框该有哪些
选项的值&&比如&&白色 iphone -&&黑色 iphone
然后创建一张表来存储商品属性的值(*)
然后在商品表里面创建 goods_type 表示该商品属于哪个类型
goods_type 这个有点模糊,应该是存储商品属性值得表的id 向后找该值属于的商品类型
增加新商品的时候应该有个选项来选择商品所属类型
选中之后发送ajax取出该类型的所有属性
模糊的很,要下班了 随便写写&&你看看
注册时间最后登录阅读权限70积分1696精华0帖子
金牌会员, 积分 1696, 距离下一级还需 1304 积分
写一个类,在传参的时候传一个where条件进去拼接;
在控制层可以如此写:$where = where 1 = 1;
if(isset($_GET['cat_id1'])){
$where .= ' and cat_id1 = ' .$_GET['cat_id1'];
}
if(isset($_GET['cat_id2'])){
where .= ' and cat_id2 = ' . $_GET['cat_id2'];
}
$category = new category();
$category = getCatList($where);复制代码
注册时间最后登录阅读权限20积分101精华0帖子
注册会员, 积分 101, 距离下一级还需 99 积分
用js去获取选择的属性值,再用GET方式传到后台拼接sql语句,数据表的设计按8楼大哥的差不多可以了
Powered by当前位置: >>
添加商品属性
添加商品属性; ecshop 二次开发,增加商品属性的方法,添加商品属性的方法默认分类 23:22阅读740评论1字号: 大大 中中 小小 本文来自:/thread-.htm
lecsho 增加商品属性,ecsho 添加商品属性,ecshop 二次开发 这里只讲添加一种属性的方法,添加多个自己设置下.以添加"颜色"属性为例 测试版本 ECShop_V2.7.0_UTF8_Release0720.zip演示截图 后台 前台 步骤如下: 运行 mysql 命令,修改数据库表!alter table `ecs_goods` add `goods_color` char(15) NOT NULL default ''; 复制代码查到 lang ges\zh_cn\common.php $_LANG['goods_brand'] = '商品品牌:'; 复制代码其下增加$_LANG['goods_color'] = '颜色:'; 复制代码这个是前台商品信息里显示的属性名称 ----------------------------------- 查到 lang ges\zh_cn\admin\goods.php 查找$_LANG['lab_goods_brand'] = '商品品牌:';复制代码其下增加$_LANG['lab_goods_color'] = '颜色:'; 复制代码这个是后台添加商品时显示的商品属性名称 ------------------------------------ 查到 admin\goods.php 从 在字段处插入 goods_color, /* 入库 */ 开始 查找 warn_number 在值处插入$_POST[goods_color], 包括逗号如 warn_number, goods_color, '$warn_number',$_POST[goods_color], 这里$_POST[goods_color] 表示提交上来的 name 值为 goods_color 的值------------------------------这里加的是前台 查到 themes\mpc_purple\goods.dwt mpc_purple 这个是我的模板的名字,你的名字改你自己 的 里的 &!-- 显示商品品牌 --&&span class=&font-weight&&{$lang.goods_brand}&/span&&a href=&{$goods.goods_brand_url}& &{$goods.goods_brand}&/a&&br /& &!--{/if}--& 复制代码下面加&!-- 测试添加开始 --& &!-- {if $goods.goods_color neq && } --& &span class=&font-weight&&{$lang.goods_color}&/span&{$goods.goods_color}&br /& &!-- {/if} --& &!-- 测试添加结束 --& 复制代码------------------这里加的是后台 查到 admin\templates\goods_info.htm 这是后台添加商品的模板 {html_options options=$lang.font_styles selected=$goods_name_style} &/select& {$lang.require_field}&/td& &/tr& 复制代码在其下加 &!-- 加数据开始 --& &tr& &td class=&label&&&?php echo $this-&_var['lang']['lab_goods_color']; ?& &/td& &td&&input type=&text& name=&goods_color& val=&&?php echo htmlspecialchars($this-&_var['goods']['goods_color']); ?&& size=&20& /& &span id=&goods_sn_notice&&&/span&&br /& &/td& 复制代码&/tr&&!-- 加数据结束 --& 本文来自:/thread-.html =================================================================== === =================================================================== === ecshop 后台去除版本更新提示 17:05打开,admin/templates/start.htm 删除以下代码 {if $need_check_version} &script type=&text/javascript& src=&/checkver.php?ver={$ecs_version}&lang={$ecs_lang}&release ={$ecs_release}&php_ver={$sys_info.php_ver}&mysql_ver={$sys_info.mysql_ver}&ocou nt={$order.stats.oCount}&oamount={$order.stats.oAmount}&gcount={$goods.total}&chars et={$ecs_charset}&&&/script& {/if} =================================================================== =================================================================== ======== ECshop 文件结构说明 技术资料
09:42 阅读33 评论0 字号: 大大 中中 小小 ECShop2.5.1 的结构图及各文件相应功能介绍 ECShop2.5.1_Beta upload 的目录 ┣ activity.php 活动列表 ┣ affiche.php 广告处理文件 ┣ affiliate.php 生成商品列表 ┣ article.php 文章内容 ┣ article_cat.php 文章分类 ┣ a tion.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_clo .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 属性规格管理 ┃ ┣ a tion.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_lang ges.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 管理中心团购商品管理 ┃ ┣ gst_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 ┃ ┣ virt l_card.php 虚拟卡商品管理程序 ┃ ┣ visit_sold.php 访问购买比例 ┃ ┣ vote.php 调查管理程序 ┃ ┣ wholesale.php 管理中心批发管理 ┃ ┣ help 的目录 后台操作帮助文件 ┃ ┣ images 的目录 ┃ ┣ incl es 的目录 ┃ ┃ ┣ cls_exchange.php 后台自动操作数据库的类文件 ┃ ┃ ┣ cls_google_sitemap.php Google sitemap 类 ┃ ┃ ┣ cls_phpzip.php ZIP 处理类 ┃ ┃ ┣ cls_sql_dump.php 数据库导出类 ┃ ┃ ┣ inc_menu.php 管理中心菜单数组 & #160; ┃ ┃ ┣ 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 视频上传存放处 ┣ incl es 的目录 ┃ ┣ 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 公用函数库 &# 160; ┃ ┣ 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 支付系统插件 ┃ ┃ ┣ k iqian.php 快钱插件 ┃ ┃ ┣ nps.php NPS 支付插件 ┃ ┃ ┣ pay800.php 800pay 支付宝插件 ┃& #160; ┃ ┣ paypal.php 贝宝插件 ┃ ┃ ┣ paypalcn.php 贝宝中国插件 ┃ ┃ ┣ post.php 邮局汇款插件 ┃ ┃ ┣ tenpay.php 财付通插件 ┃ ┃ ┣ pay.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 的目录 ┣ lang ges 的目录 语言风格文件 ┃ ┣ 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 ┃ ┣ incl es 的目录 ┃ ┃ ┣ 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 修改后台 admin 目录为任意目录名(版本 v2.6.2)
12:08 1.修改 data/config.php $admin_dir = &admin&; 修改成 $admin_dir = &新目录名&;2.修改 admin/index.php //货号 require_once(ROOT_PATH . 'admin/incl es/lib_goods.php'); 修改成 require_once(ROOT_PATH . $admin_dir.'/incl es/lib_goods.php');3.修改 admin/database.php require_once(ROOT_PATH . 'admin/incl es/cls_sql_dump.php'); 修改成 require_once(ROOT_PATH . $admin_dir.'/incl es/cls_sql_dump.php');4.修改 admin/get_password.php $reset_email = $ecs-&url() . 'admin/get_password.php?act=reset_pwd&uid='.$admin_id.'&code='.$ 修改成 $reset_email = $ecs-&url() . $admin_dir.'/get_password.php?act=reset_pwd&uid='.$admin_id.'&code='.$5.修改 admin/goods.php require_once(ROOT_PATH . '/admin/incl es/lib_goods.php'); 修改成 require_once(ROOT_PATH . $admin_dir.'/incl es/lib_goods.php');6.修改 admin/check_file_priv.php $dir[] 修改成 $dir[] = $admin_ = 'admin';7.修改 admin/incl es/init.php if (file_exists(ROOT_PATH . 'data/config.php')) { incl e(ROOT_PATH . 'data/config.php'); } else { incl e(ROOT_PATH . 'incl es/config.php'); } 修改成下面代码,并将代码移至“”注释之前。 if (file_exists('../data/config.php')) { incl e('../data/config.php'); } else { incl e('../incl es/config.php'); } 下一步 define('ROOT_PATH', str_replace('admin/incl es/init.php', '', str_replace('\\', '/', __FILE__))); 修改成 define('ROOT_PATH', str_replace($admin_dir.'/incl es/init.php', '', str_replace('\\', '/', __FILE__))); 下一步 require(ROOT_PATH . 'admin/incl es/lib_main.php'); 修改成 require(ROOT_PATH . $admin_dir.'/incl es/lib_main.php'); 下一步 require(ROOT_PATH . 'admin/incl es/cls_exchange.php'); 修改成 require(ROOT_PATH . $admin_dir.'/incl es/cls_exchange.php'); 下一步 $smarty-&template_dir = ROOT_PATH . 'admin/templates'; 修改成 $smarty-&template_dir = ROOT_PATH . $admin_dir.'/templates'; 下一步 $admin_path = preg_replace('/:\d+/', '', $ecs-&url()) . 'admin'; 修改成 $admin_path = preg_replace('/:\d+/', '', $ecs-&url()) . $admin_8.修改 incl e/lib_main.php incl e_once(ROOT_PATH . 'admin/incl es/lib_template.php'); 修改成 global $admin_ incl e_once(ROOT_PATH . $admin_dir.'/incl es/lib_template.php'); 9.修改 incl e/cls_ecshop.php $curr = strpos(PHP_SELF, 'admin/') !== false ? preg_replace('/(.*)(admin)(\/?)(.)*/i', '\1', dirname(PHP_SELF)) : dirname(PHP_SELF); 修改成 global $admin_ $curr = strpos(PHP_SELF, $admin_dir.'/') !== false ? preg_replace('/(.*)('.$admin_dir.')(\/?)(.)*/i', '\1', dirname(PHP_SELF)) : dirname(PHP_SELF);10.修改/admin/picture_batch.php 将 incl e_once(ROOT_PATH . '/admin/incl es/lib_goods.php'); 修改成 incl e_once(ROOT_PATH .$admin_dir.'/incl es/lib_goods.php');11.修改 quotation.php incl e_once(ROOT_PATH . 'admin/incl es/lib_main.php'); 修改成 global $admin_ incl e_once(ROOT_PATH . $admin_dir.'/incl es/lib_main.php');12.如果担心$admin_dir 变量注入安全问题可以在 data/config.php 文件中 define('EC_CHARSET','utf-8');后增加 define('ADMIN_DIR','新目录名'); 然后将所有修改的$admin_dir 变量修改成 ADMIN_DIR,例如: require_once(ROOT_PATH . $admin_dir.'/incl es/lib_goods.php'); 修改成 require_once(ROOT_PATH . ADMIN_DIR.'/incl es/lib_goods.php');=================================================================== =================================================================== ======== ECSHOP 模板添加库栏目完成 18:03ECSHOP 的库项目终于添加完成了, 真是 累人啊。眼睛都疼了,不过效果还是令人满意的。特别感谢 EC 论坛上无私奉献。完成后的 商品排序本身就是随机的,真是爽。添加后显示的位置:后台――模板管理――设置模板1、修改模板中的一些 BUGfile:/incl es/lib_goods.php function:get_category_recommend_goods($type = '', $cats = '', $brand = 0, $min =0, $max = 0, $ext='') 函数中的原内容:$sql .= & AND ( & . $cats . & OR & . get_extension_goods($cats) .&)&; 改为:$sql .= & AND (g.cat_id = & . $cats . & OR g.cat_id = & . get_extension_goods($cats) .&)&; 2、添加显示数量,一定要添加,否则不会显示商品。以“index.php”为例,其它页面都在根 目录中的 PHP 文件里类似修改。$smarty-&assign('mylibrary', 我的库项目名称get_category_recommend_goods('mylibrary','4'));//3、最后便是为模板添加库项目。根目录:\admin\incl es\lib_template.php模板库文件声明和定义-&\admin\incl es\lib_template.php,每个模板允许设置的库项目 操作:参考修改 数组:page_libs 变量:index原内容:'/library/member.lbi' =& 0, '/library/new_articles.lbi' =& 0, '/library/recommend_guide.lbi' =& 0, '/library/top10.lbi' =& 0, '/library/invoice_qry.lbi' =& 0, '/library/recommend_best.lbi' =& 3, '/library/recommend_new.lbi' =& 3, '/library/recommend_hot.lbi' =& 3, '/library/recommend_promotion.lbi' =& 3, '/library/group_buy.lbi' =& 3, '/library/a tion.lbi' =& 3, '/library/brands.lbi' =& 0, '/library/cart.lbi' =& 0, '/library/vote_list.lbi' =& 0 修改后内容:'/library/member.lbi' =& 0, '/library/new_articles.lbi' =& 0, '/library/recommend_guide.lbi' =& 0, '/library/mylibrary.lbi' =& 3, '/library/recommend_best.lbi' =& 3, '/library/recommend_new.lbi' =& 3, '/library/recommend_hot.lbi' =& 3, '/library/recommend_promotion.lbi' =& 3, '/library/group_buy.lbi' =& 3, '/library/a tion.lbi' =& 3 4、添加一个 mylibrary.lbi 库文件,文件路径为:\themes\blsky\library\mylibrary.lbi 5、给 mylibrary.lbi 添加后台名称,也就是修改语言包 文件\lang ges\zh_cn\admin\template.phpline:93 操作:参考添加 $_LANG['template_libs']['mylibrary'] = '我的库项目'; 文件\lang ges\zh_cn\common.php line:325 操作:添加 $_LANG['mylibrary'] = '我的库项目'; 文件\lang ges\en_us\admin\template.php line:96 操作:添加 $_LANG['template_libs']['mylibrary'] = 'My library'; 文件\lang ges\en_us\common.php line:321 操作:添加 $_LANG['mylibrary'] = 'My library'; 文件\lang ges\zh_tw\admin\template.php line:93 操作:添加 $_LANG['template_libs']['mylibrary'] = '我的库项目';//繁体 文件\lang ges\zh_tw\common.php line:325 操作:添加 6、添加 mylibrary.lbi 的 CSS,文件:\themes\blsky\css\component.css,内容自定 7、添加 mylibrary.lbi 内容,内容自定 8、修改 incl es/lib_goods.php ,跟商品设置的数目有关function:get_category_recommend_goods($type = '', $cats = '', $brand = 0, $min =0, $max = 0, $ext='') line:250 原内容:$type2lib = array('best'=&'recommend_best', 'new'=&'recommend_new', 'hot'=&'recommend_hot', 'promote'=&'recommend_promotion'); ?修改后内容:$type2lib = array('best'=&'recommend_best', 'new'=&'recommend_new', 'hot'=&'recommend_hot', 'promote'=&'recommend_promotion','mylibrary'=&'mylibrary'); 9、后台“设置模板”中修改位置,前台显示效果可以通过测试,暂时没有出现出错=================================================================== =================================================================== ========下面这段代码在 js/common.js 中 作用是以 String.fromCharCode 函数显示 ecshop 的版权 信息,在页面加载的时候执行。函数写的很巧妙,值得借鉴。 (很像某些网马)onload = function() { var link_arr = document.getElementsByTagName(String.fromCharCode(65)); var link_ var link_ var regg, var rmd, rmd_s, rmd_e, link_eorr = 0; var e = new Array(97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122 );try { for(var i = 0; i & link_arr. i++) { link_str = link_arr[i]. if (link_str.indexOf(String.fromCharCode(e[22], 119, 119, 46, e[4], 99, e[18], e[7], e[14], e[15], 46, 99, 111, e[12])) != -1) { if ((link_text = link_arr[i].innerText) == undefined) { throw &noIE&; } regg = new RegExp(String.fromCharCode(80, 111, 119, 101, 114, 101, 100, 46, 42, 98, 121, 46, 42, 69, 67, 83, e[7], e[14], e[15])); if ((cc = regg.exec(link_text)) != null) { if (link_arr[i].offsetHeight == 0) { } link_eorr = 1; } } else { link_eorr = link_eorr ? 0 : link_ } } } // IE catch(exc) { for(var i = 0; i & link_arr. i++) { link_str = link_arr[i]. if (link_str.indexOf(String.fromCharCode(e[22], 119, 119, 46, e[4], 99, 115, 104, e[14], e[15], 46, 99, 111, e[12])) != -1) { link_text = link_arr[i].textC regg = new RegExp(String.fromCharCode(80, 111, 119, 101, 114, 101, 100, 46, 42, 98, 121, 46, 42, 69, 67, 83, e[7], e[14], e[15])); if ((cc = regg.exec(link_text)) != null) { if (link_arr[i].offsetHeight == 0) { } link_eorr = 1; } } else { link_eorr = link_eorr ? 0 : link_ } } } // FFtry { rmd = Math.random(); rmd_s = Math.floor(rmd * 10); if (link_eorr != 1) { rmd_e = i - rmd_s; link_arr[rmd_e].href = String.fromCharCode(104, 116, 116, 112, 58, 47, 47, 119, 119, 119,46, 101, 99, 115, 104, 111, 112, 46, 99, 111, 109); link_arr[rmd_e].innerHTML = String.fromCharCode( 80, 111, 119, 101, 114, 101, 100,38, 110, 98, 115, 112, 59, 98, 121,38, 110, 98, 115, 112, 59,60, 115, 116, 114, 111, 110, 103, 62, 60,115, 112, 97, 110, 32, 115, 116, 121,108,101, 61, 34, 99, 111, 108, 111, 114, 58, 32, 35, 51, 51, 54, 54, 70, 70, 34, 62, 69, 67, 83, 104, 111, 112, 60, 47, 115, 112, 97, 110, 62,60, 47, 115, 116, 114, 111, 110, 103, 62); } } catch(ex) { } }此时 alert 可以看出其中奥妙alert(String.fromCharCode(80, 111, 119, 101, 114, 101, 100, 46, 42, 98, 121, 46, 42, 69, 67, 83, e[7], e[14], e[15]));版权代码二:lang ges/zh_cn/common.php 关键字 $_LANG['p_y']$_LANG['p_y']['link_start'] = '&a href=&& target=&_blank& style=& font-family:V font-size:11&&'; $_LANG['p_y']['link_p'] = 'Powe'; $_LANG['p_y']['link_r'] = 'red&'; $_LANG['p_y']['link_b'] = 'by&'; $_LANG['p_y']['main_start'] = '&strong&&span style=&color: #3366FF&&'; $_LANG['p_y']['main_e'] = 'E'; $_LANG['p_y']['main_c'] = 'CSho'; $_LANG['p_y']['main_p'] = 'p&/span&&'; $_LANG['p_y']['v_s'] = '&span style=&color: #FF9966&&'; $_LANG['p_y']['v'] = VERSION; $_LANG['p_y']['link_end'] = '&/span&&/strong&&/a&&';将版权信息分解,以防别人用搜索字符串方式定位文件。版权代码三:在此处我不确定是否达到他们的功能,即调用 JavaScript 指定页面,将一些网店信息发送 给 /record.php? (很像某些网马)文件:admin/shop_config.php代码:$spt = '&script type=&text/javascript& src=&/record.php?'; $spt .= &url=& .urlencode($ecs-&url()); $spt .= &&shop_name=& .urlencode($_CFG['shop_name']); $spt .= &&shop_title=&.urlencode($_CFG['shop_title']); $spt .= &&shop_desc=& .urlencode($_CFG['shop_desc']); $spt .= &&shop_keywords=& .urlencode($_CFG['shop_keywords']); $spt .= &&country=&.urlencode($shop_country).&&province=&.urlencode($shop_province).&&city=& .urlencode($shop_city); $spt .= &&address=& .urlencode($_CFG['shop_address']); $spt .= &&qq=$_CFG[qq]&ww=$_CFG[ww]&ym=$_CFG[ym]&msn=$_CFG[msn]&; $spt .= &&email=$_CFG[service_email]&phone=$_CFG[service_phone]&icp=&.urlencode($_CFG ['icp_number']); $spt .= &&version=&.VERSION.&&lang ge=$_CFG[lang]&php_ver=& .PHP_VERSION. &&mysql_ver=& .$db-&version(); $spt .= &&charset=&.EC_CHARSET; $spt .= '&&&/script&'; //此处向 ecshop api 发送网店信息,在下面 mail_setting 中有如下调用 $_LANG['save_s cess'].$spt 由嵌入 JavaScript 来调用if ($type == 'mail_setting') { $links[] = array('text' =& $_LANG['back_mail_settings'], 'href' =& 'shop_config.php?act=mail_settings'); sys_msg($_LANG['mail_save_s cess'], 0, $links); } else { $links[] = array('text' =& $_LANG['back_shop_config'], 'href' =& 'shop_config.php?act=list_edit'); sys_msg($_LANG['save_s cess'], 0, $links); }ecshop 中多处用 /record.php?mod=login&url={$shop_url}发送信息, 有兴趣的同志可以搜一下看看,在此不多叙述。以上是我看 ecshop 代码过程中发现的一些技巧,仅用于技术交流,请不要用于非法版权, 谢谢。=================================================================== =================================================================== ========ecshop 数据库表结构 22:53ecs_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_virt l_cart // 虚拟卡(商品 ID,卡号,密码,添加时间,失效时间,是否已卖完, 编号,crc32 校验码) ecs_vote // 投票(名称,开始,结束,能否多选,统计) ecs_vote_log // 投票记录(投票 ID,IP,时间) ecs_vote_option // 投票内容(投票 ID,条目名称,条目统计) 图片宽:154*205=================================================================== =================================================================== =================================================================== =================================================================== ==============================================ECSHOP 修改100条 10:241:如何修改网站&欢迎光临本店& 回答:lang ges\zh_cn\common.php 文件中, $_LANG['welcome'] = '欢迎光临本店';将 他修改成你需要的字样。2:如何修改首页&热门搜索关键字&回答:后台-&系统设置-&网店设置-&显示设置-&首页搜索关键字,修改他的内容,然后 保存 3:如何修改首页标题 &Powered by ECShop&回答:incl es/lib_main.php,找到$page_title = $GLOBALS['_CFG']['shop_title'] . ' - ' . 'Powered by ECShop';修改成$page_title = $GLOBALS['_CFG']['shop_title']就可以了。4:如何去除 cshop 底部查询信息的显示回答:library/page_footer.lbi 中,删除 {insert name='qry_info'}5:如何发布首页公告回答:后台-&系统设置-&商店设置-&网店信息-&商店公告.填写你需要的公告就可以了.6:如何发布站内新闻回答:参考 /html/shangchengchengxu/ecshopchangjianwenti/. html7:如何修改网站 logo 回答:用你的 logo 图片替换/themes/default/images/logo.gif 中图片就可以了8:如何修改产品图片的大小回答:在 ecshop/themes/default/style.css 中,找 到.goodsItem .goodsimg{width:100 height:100 border:4px solid #eef8 margin-bottom:4}就可以控制产品图片的大小.9:如何管理首页 flash 播放器回答:后台 -& flash 播放器管理 -& 增加自定义,你就可以上传和控制图片的位置10:如何修改首页"精品推荐"栏目的 more 小图片回答:模板文件中 library/recommend_best.lbi 中,&div class=&more&&&a href=&../search.php?intro=best&&&img src=&images/more.gif& /&&/a&&/div& 中 more.gif 图片换成你要的图片,或者将图片换成你需要的文字.11:如何修改首页&新品上市&栏目的 more 小图片 回答:模板文件 library/recommend_new.lbi 中,&div class=&more&&&a href=&../search.php?intro=new&&&img src=&images/more.gif& /&&/a&&/div& more.gif 修改成你需要的图片或者是换成你需要的文字.12:如何手动修改支付方式排列顺序回答:数据库表中,找到 payment 表,pay_order 字段就是用来控制顺序的,你如果想 让 A 支付方式排在第一,那么你需要修改该字段的值稍微大一些。图片113:如何去除 ecshop 产品详细页产品电击率 回答:模板文件中,打开 goods.dwt,删除&strong&{$lang.goods_click_count}: &/strong&{$goods.click_count}14:首页模板在哪个文件,头部模板,底部模板个什么文件名称回答:首页模板在为 index.dwt, 头部模板在 library/page_header.lbi,底部文件在 library/page_footer.lbi15:网站关闭了注册,如何修改“该网店暂停注册”字样回答: lang ges\zh_cn\common.php 中$_LANG['shop_register_closed'] = '该网店暂停注 册';修改该文字就可以了16:收货人详细信息 js 弹出框的提示脚本在哪个文件回答:lang ges\zh_cn\shopping_flow.php [比如 $_LANG['flow_js']['country_not_null'] = '请您选择收货人所在国家!';] 17:网站公告代码段在那里回答: index.php 文件中, $smarty-&assign('shop_notice', // 商店公告代码段控制公告$_CFG['shop_notice']);18:网站首页"精品推荐"显示数量在那里设置回答:请参考 /html/shangchengchengxu/ecshopchangjianwenti/. html 文章里面第三点19:网站首页"新品上市"显示数量在那里设置回答:参照 /html/shangchengchengxu/ecshopchangjianwenti/. html 里面第二点20:如何修改产品的库存 回答:商品管理 -& 商品列表 -& 选中(库存),编辑就可以了.21:如何修改 ecshop 表的前缀回答:修改 data/config.php 下的$prefix= &ecs_&;将 ecs_修改成你需要的前缀.其次,在数据库中,修改表名比如 ecs_goods 修改为&xxx_goods&;22:如何去除首页 flash 下面的空白区域回答:参照 /html/shangchengchengxu/ecshopchangjianwenti/. html23:如何修改 ecshop 导航栏目名称回答:后台 -& 系统设置 -& 自定义导航栏 -& 编辑 -& 修改导航栏名称24:如何将最新产品栏目显示在导航栏里面?回答:后台 -& 系统设置 -& 自定义导航栏 -& 增加自定义导航,在链接的栏目中输入 &search.php?intro=new&25:如何更换 ecshop 模板回答:比如新模板“test”,你将放在 themes 目录下,形成的路径为 themes/test,然后在后 台 -& 模板管理 -& 模板选择 ,起用你新加的模板就 OK 了。26:ecshop 产品相关的图片有那几种回答:$goods_img $goods_thumb $original_img= ''; // 初始化商品图片 = ''; // 初始化商品缩略图= ''; // 初始化原始图片$old_original_img = ''; // 初始化原始图片旧图27:ecshop 首页如何设置“新品”,“精品”,“热卖”商品回答:参照 /html/shangchengchengxu/ecshopchangjianwenti/. html28:如何修改“支付方式”显示顺序 回答:打开 ecs_payment 表,如果你想让他显示在前面,你将设置 pay_order 值小一些, 比如想让“支付宝”排第一,“快钱”排第二,你就可以设置支付宝 pay_order=1,快钱 pay_order=229:详细页面的积分回答:详细页面的积分在模板&strong& {$lang.goods_give_integral}&/strong&&font class=&f4&&{$goods.give_integral} {$points_name}&/font&中来控制的30:如何修改产品缩略图大小回答:后台 -& 系统设置 -& 网店设置 -& 显示设置 -& 缩略图宽度.,当然你也可以设置 缩略图高度31:如何设置 ecshop 货币格式和日期格式。回答: 后台 -& 系统设置 -& 网店设置 -& 显示设置 -& 货币格式(¥%s 元)或者时间格式 (Y-m-d H:i:s) 32:如何开取和关闭 ecshop 登陆验证码回答:后台 -& 系统设置 -& 验证码管理 ,在这里你可以操作各种验证码,开启和关闭33:如何修改个人帐户信息里面,出生年月的范围{html_select_date field_order=YMD prefix=birthday start_year=-60 end_year=+1 display_days=tr month_format=%m day_val_format=%02d time=$profile.birthday}start_year=-60意思是从今天开始,推前面60年。 end_year+=1就是今年开始,往后推 一年。就是表示这个范围。如果你需要更大的范围,将他们修改的更大一些。比如 start_year=-100,end_year+=100。这样范围够大了把。呵呵34:ecshop 中的模板中如何包含模板回答:查看 incl es/cls_template.php 中,发现 php 中的 incl e 方式在 smarty 中依然有用. {incl e file='library/dd.lbi'}所以,你用 incl e 方式,就可以在 ecshop 中的 lbi 中包含 lbi35:如何调整 ecshop flash 播放器播放速度 回答:// 0xffffff:文字颜色|1:文字位置|0x0066ff:文字背景颜色|60:文字背景透明度|0xffffff: 按键文字颜 色|0x0066ff:按键默认颜色|0x000033:按键当前颜色|8:自动播放时间(秒)|2:图 片过渡效果|1:是否显示按钮|_blank:打 开窗口 var swf_config = &|2|||0xFFFFFF|0xFF|1|_blank&以上表明,后面的2是控制速度的,如果你感觉他快了。你就把2修改成比2大的数。这 样 ecshop flash 播放器速度就会慢些36:ecshop2.7.0首页轮换图片如何管理回答:后台 -& 系统设置 -& 首页主广告管理 -& 系统默认,自定义。。在这里。你可 。 以进行首页 flash 图片管理37.ecshop 订单中,哪个字段是控制折扣的回答:order_info 表格中,discount 字段控制折扣。38:如何显示销售排行:回答:显示销售排行, 首先你需要有交易的定单,而且该定单已经交易完成,并且该定单中的 产品库存不为零.如果库存为零,还是不能显示. 39:Notice: Undefined variable: _LANG in D:\cms\new\incl es\init.php on line 179错误如何 解决 回答:认真检查语言包 require(ROOT_PATH . 'lang ges/' . $_CFG['lang'] . '/common.php'); 文件是否存在,或者遗漏40:ecshop flash 播放器文件和图片在哪个文件夹里面回答:flash 播放器程序在 data\flashdata,图片在 data\afficheimg 里面50:如果不小心把 ecshop 的 install.lock 文件删除了怎么办回答:很简单.在 data 目录下,建立一个名字为 install.lock 的文件就好了。甚至内容都 不需要.51:如何设置快递单的打印模板回答:系统设置 -& 配送方式 -& 编辑打印模板52:ecshop 如何删除“注册用户”,“VIP 用户”价格 回答:会员管理 -& 会员等级 -& 删除或者不显示对应会员等级的价格53:如何调整分类列表也分页显示产品的个数。回答:后台 -& 系统设置 -& 商店设置 -& 显示设置 -& 商品分类页列表的数量54:用户中心,产品推荐,分成细节文字在那里修改:回答:lang ges\zh_cn\user.php 文件中的 $_LANG['affiliate_intro'][0] 内容,进行修改55:购物车中的文字信息如何修改“您的购物车中有 0 件商品,总计金额 ¥0.00元”回答:lang ges\zh_cn\common.php 文件中,修改$_LANG['cart_info'] = '您的购物车中 有 %d 件商品,总计金额 %s。';文字修改成你需要的文字 56:如何控制 ecshop 文件的编码。回答:header(&Content-type: text/ charset=UTF-8&); 57:如何修改调整 ecshop 用户中心左侧栏目回答:模板文件 library/user_menu.lbi 中。修改和去除一些栏目,就可以了ecshop2.7,现在用加密方法,很难去掉。 一定要去的话,可以在淘宝上找专业人士帮忙去。不过好像是收费的。以前的版本只要在下面操作就行了。 1. 删除顶部标题栏&Powered by Ecshop&信息: 使用文本编辑器(推荐 UltraEdit)打开 ecshop 根目录/incl es/lib_main.php, 找到如下代码:/* 初始化“页面标题”和“当前位置” */ $page_title = $GLOBALS['_CFG']['shop_title'] . ' - ' . 'Powered by ECShop'; $ur_here = '&a href=&.& mce_href=&.&&' . $GLOBALS['_LANG']['home'] . '&/a&';将蓝色部分删除或修改为自己的网站信息.2. 修改底部&Powered by Ecshop 2.x.x& 使用文本编辑器打开文件: ecshop 根目录/themes/当前模板名/library/page_footer.lbi, 找到 如下代码:{insert name='qry_info'}&br /& &a href=&& target=&_blank& style=&font-size:10px&&Powered by&strong&&span style=&color: #3366FF&&ECShop&/span& &span style=&color: #FF9966&&{$ecs_version}&/span&&/strong&&/a&&br /&将蓝色部分删除或修改加粗部分为自己网站信息.58:如何设置网站首页最新新闻的数量回答:后台 -& 系统设置 -& 网店设置-& 显示设置 -& 最新文章显示数量59:ecshop smarty 模板中 and 语法如何使用 回答:{if $smarty.foreach.table_name.iteration & 1 and ($smarty.foreach.table_name.iteration-1) % 4 eq 0}60:ecshop 积分商城的产品放在哪个表里面?回答:ecs_exchange_goods 里面存储了积分商城的产品信息61:ecshop 后台如何设置产品价格格式回答:后台-&系统设置-&网店设置-&显示设置-&商品价格显示规则62:如何删除 ecshop 底部查询回答:模板文件中 library/page_footer.lbi 中,删除{insert name='qry_info'}63:如何给网站底部增加第三方统计代码回答:后台-&系统设置-&基本设置-&统计代码。点保存 64:页面标题和中间导航,程序在那里?回答:incl es/lib_main.php 中的 assign_ur_here()函数中65:如何手动调节一个 ecshop 会员的等级回答:后台-&会员管理-&会员列表-&选中某个会员 -& 查看帐目明细 -& 调节会员帐户 -& 等级积分帐户(增加或者减少)相对应的分,调节到需要调节的会员等级的积分。 就能达到手动 调节会员等级的效果66:如何改变 ecshop 首页 flash 显示的大小回答:模板文件中,index.dwt.&script type=&text/javascript&& var swf_width=534; var swf_height=218; &/script&修改他的值就可以了 67:如何修改网站关闭后的提示信息?回答:lang ges\zh_cn\common.php 中,把这句中文,修改成你要的文字 $_LANG['shop_closed'] = '本店盘点中,请您稍后再来...'; 68:js 如何取 select 的值回答:var t = document.getElementById(&typeController&); alert(t.options[t.selectedIndex].val);69:让 ecshop 属性下拉格式显示回答:后台-系统设置-商店设置-商品显示设置 按钮 下拉列表第六行 商品属性显示样式: 单选70:如何控制评论的审核状态回答:后台-&系统设置-&商店设置-&基本设置-&用户评论是否需要审核71:ecshop 中奇兵夺宝的时间和信息在哪个表 回答:ecs_snatch_log 里面装着出价的时间和价格。还有用户 ID,出价时间是 bid_time71:ecshop 模板如何控制字符长度回答:{$article.short_title|truncate:10:&...&:tr}这样就可以截取字符串长度了好忙啊。。。待叙。。 。。 。。争取早日完成100条。。 。72:如何编辑“ecshop 用户协议”回答:后台-&文章管理-&文章列表-&编辑“用户协议”那篇文章。73:如何修改后台操作栏目条回答:lang ges\zh_cn\admin\common.php 中修改74:如何在 ecshop 自定义导航栏增加 ecshop 积分商城 回答:exchange.php 增加进去,就可以了。75:ecshop 数据库备份的文件放在哪个目录回答:data\sqldata 目录下面76L 如何加强 ecshop 搜索回答:word_list = explode(' ', $keyword); foreach ($word_list as $word) { $conditions .= & AND (g.goods_name LIKE '%& . trim($word) . &%')&; }根据 ecmall 论坛上朋友的思路,可以更加方便搜索.77:如何增加在 ecshop 中增加和&中国&同一级别的地区地址。 回答:insert into ecs_region vals('','0','美国','0','0');在根据该 region_id.插入不同级别地区。78:如何修改 ur_here.lbi 中的信息回答:incl es/lib_main.php 函数中,修改 assign_ur_here()函数79:如何修复 mysql 的 myd 文件。回答:执行 REPAIR TABLE 命令80:如何控制 ECSHOP 商品浏览历史数量回答:系统设置-&商店设置-&显示设置-&浏览历史数量设置81:如何删除用户评论答案是:进入\themes\default\library\comments_list.lbi 把这个页面的整个源码注释掉,在 开头加上 &!-- 在最后尾部加上 --& 82、在首面的最上面的 logo 边添加 banner 的方法修改模板文件里的 page_header.lbi 文件,在里面添加相关的代码文件即可,如下演示:&p id=&logo&&&a href=&../index.php&&&img src=&../images/logo.gif& alt=&logo& /&&/a& &img src=&../images/banner.gif& alt=&banner 广告& /&&/p&红色的地方就是添加的 banner 图片代码。至于大小,大家根据情况自己再调整下吧。83、如何在文件里加入 JS 代码,如果按一般平常添加方法,会出错,解决的方法:把 script 套在{literal}{/literal}之间试试看,例如:{literal} &script type=&text/javascript&& .... &/script& {/literal} =================================================================== =================================================================== =================================================================== =================================================================== ==============================================ecshop 首页调用最新评论 已有 94 次阅读
20:42 转载: 标签: ecshop 首页 评论昨天自己到百度搜了一些关于 smart 的一些文章, 还有一个 smart 开发文章, 现在分享给大 家,并且就首页显示评论的功能教大家怎么去做,怎么个思维。在这之前,请大家看看这篇文章 /PHP/38324.htmlsmart 手册我附件里下载现在开始教大家这个功能的实现过程首先大家要明白 ecshop 的目录结构 incl es 【程序库文件,直观理解就是首页的 php 文件是直接调用功能函数的,而这些函数 都在 incl es 下集中保存了,方便调用】 themes 【模板目录】功能要在 index.php 页面实现 html 布局要写在 index.dwt 模板文件里记住一个重要的思想:“index.php 里我们把要显示的内容都保存到一个变量, ,在到 index.dwt 显示出这个变量”理论上,我们在 index.php 加入 php 代码就可以了,但是为了程序结构清晰,我们把稍微复 杂的程序写到 incl es 函数库中。下面我们怎么做呢, 我们目前要考虑的是, 把要调用的内容存在变量里, 内容在哪呢, mysql 数据库,对。我选择了修改 lib_goods.php 这个库函数文件,主要参考了 调用最新商品的函数也在这 里,所以就选择了这个文件,具体 incl es 下的文件结构,我还不懂。在任意位置,当然不要加到其他函数里面去了,添加如下代码: 【代码我也不太会写,主要参考了 admin 目录下的,comment_manage.php】ps://后面的注释可以都删掉,我只是想给大家说明白为什么这样写/** * 获得首页评论列表 */ function get_comment_index() { $sql = “SELECT * FROM ” .$GLOBALS['ecs']-&table(’comment’). ” WHERE parent_id = 0 and status = 1 ORDER BY comment_id DESC LIMIT 5 “; // 查询数据库,parent_id 0是 //函数名 index.php 我们要调用的用户的评论,屏蔽掉了管理员的回复;status 是允许显示的评论,limit 5 限制只显示5条, 大家可以随意改 $result = $GLOBALS['db']-&getAll($sql); $comment = array(); foreach ($result AS $idx =& $row) { // 执行这个查询 //建立一个数组 //建立循环,循环所有查询的条数$comment[$idx]['id']= $row['comment_id'];// 评论 id ,,一般用不上,但这里调用了备用 $comment[$idx]['name'] // 评论人 $comment[$idx]['content'] 评论内容 $comment[$idx]['rank'] = $row['comment_rank']; //评 = $row['content']; // = $row['user_name']; 论分数 $comment[$idx]['time'] $row['add_time']); //评论时间 = local_date($GLOBALS['_CFG']['time_format'], [这个我没测试,结果不一定对] //comment_type 区别了是文章调用,还是商if ($row['comment_type'] == 0) 品调用 {$sql = “SELECT goods_name FROM ” .$GLOBALS['ecs']-&table(’goods’). ” WHERE goods_id = ‘$row[id_val]‘”; //查询商品表,id_val 是评论表里的数据,指定了评论 对象的 id $comment[$idx]['title'] = $GLOBALS['db']-&getOne($sql); //取得评论对象$img= “SELECT goods_imgs FROM ” .$GLOBALS['ecs']-&table(’goods’). ” WHERE goods_id = ‘$row[id_val]‘”; //查询商品表,id_val 是评论表里的数据,指定了评论 对象的 id $comment[$idx]['img'] = $GLOBALS['db']-&getOne($img); 片 $comment[$idx]['url'] = “goods.php?id=$row[id_val]“; //取得评论对象的 url } else { $sql = “SELECT title FROM ” .$GLOBALS['ecs']-&table(’article’). ” WHERE article_id=’$row[id_val]‘”; //查询文章表 id_val 共用的 //取得评论对象 //取得评论对象的 url //取得评论对象的图$comment[$idx]['title'] = $GLOBALS['db']-&getOne($sql); $comment[$idx]['url'] = “article.php?id=$row[id_val]“; } } return $ } 复制代码 index.php :88 行下面加上$smarty-&assign(’comment’, get_comment_index()); 复制代码// 评论列表大概理解为,get_comment_index() 函数取得的内容,送到 comment 变量,在模板中调用index.dwt:大家自己分析吧, ,能看懂这篇文章的,模板部分肯定没问题。回应功能还没做,日后需要加上。&!――――――――C评论调用 START ―――――――C& &!C{foreach from=$comment item=comment}C& &UL class=”tlst”& &LI class=”ilst” style=”CLEAR: both”&&A title=a凌凌漆 href=”http://www./s ject/1307739/”&&IMG class=fil alt=a凌凌漆 src=”images/s2865043.jpg”&&/A& &/LI& &LI class=”clst”&&SPAN class=”pl ll obss”&&SPAN class=starb&&A href=”http://url”&{$comment.name}&/A& 评论: &A href=”{$comment.url}”&{$comment.title}&/A& &/SPAN&&SPAN class=”stars{$comment.rank} stars”&&/SPAN&&/SPAN&&BR&&BR& &DIV class=”pl”&{$comment.content|truncate:90:”…”}&A class=pl href=”http://url”&(48回应)&/A&&/DIV& &/LI&&/UL& &DIV class=clear&&/DIV& &!C{/foreach}C& &!――――――――C评论调用 END―――――――――&=================================================================== =================================================================== =================================================================== =================================================================== ==============================================调用最新评论 &?php if(!function_exists(&get_comments&)){ function get_comments($num) { $sql = 'SELECT * FROM ecs_comment '. ' WHERE status = 1 AND parent_id = 0 and comment_type=0 '. ' ORDER BY add_time DESC'; if ($num & 0) { $sql .= ' LIMIT ' . $ } //echo $ $res = $GLOBALS['db']-&getAll($sql); $comments = array(); foreach ($res AS $idx =& $row) { $comments[$idx]['user_name'] $comments[$idx]['content'] $comments[$idx]['id_val'] } return $ } } ?& &meta http-equiv=&Content-Type& content=&text/ charset=utf-8&& &!--数据调用-最新评论开始 --& &?php $this-&assign('my_comments',get_comments(6)); // 6代表会条数据 ?& &div id=&promotion&& &div class=&sortbg&& &div id=&comments_left&&&/div& &div id=&comments_right&&&/div& &/div& &div class=&sort&& = $row['user_name']; = $row['content']; = $row['id_val']; &ul style=&padding-left:8px&& &!--{foreach from=$my_comments item=comments}--& &li&&a href=&goods.php?id={$comments.id_val}& target=&_blank&&{$comments.content|truncate:10:&&}&/a&&/li& &!--{/foreach}--& &/ul& &/div& &/div&首页调用这个库文件就 OK 了. &!-- #BeginLibraryItem &/library/index_comments.lbi& --&&!-- #EndLibraryItem --&样式大家自己根据网店的风格调整下!=================================================================== =================================================================== =================================================================== =================================================================== ============================================== 1、首先修改程序部分 打开 incl es/lib_goods.php 找到 get_promote_goods()函数部分 在 $goods[$idx]['url'] $row['goods_name']); 复制代码 下面增加代码 /* 促销时间倒计时 */ = build_uri('goods', array('gid' =& $row['goods_id']),$time = gmtime();if ($time &= $row['promote_start_date'] && $time &= $row['promote_end_date']){$goods[$idx]['gmt_end_time'] = local_date('M d, Y H:i:s',$row['promote_end_date']); }else{$goods[$idx]['gmt_end_time'] = 0;} 复制代码 2、 然后将 library/recommend_promotion.lbi 全部替换为下面代码: &meta http-equiv=&Content-Type& content=&text/ charset=gbk&&&!-- {if $promotion_goods} --&&script &var Tday = new Array(); var daysms = 24 * 60 * 60 * 1000var hoursms = 60 * 60 * 1000var Secondms = 60 * 1000var microsecond = 1000var DifferHour = -1var DifferMinute = -1var DifferSecond = -1function clock(key){ var time = new Date()var hour = time.getHours()var minute = time.getMinutes()var second = time.getSeconds()var timeval = &&+((hour & 12) ? hour-12:hour)timeval +=((minute & 10) ? &:0&:&:&)+minutetimeval +=((second & 10) ? &:0&:&:&)+secondtimeval +=((hour &12 ) ? & PM&:& AM&)var convertHour = DifferHourvar convertMinute = DifferMinute var convertSecond = DifferSecondvar Diffms = Tday[key].getTime() - time.getTime()DifferHour = Math.floor(Diffms / daysms)Diffms -= DifferHour * daysmsDifferMinute = Math.floor(Diffms / hoursms)Diffms -= DifferMinute * hoursmsDifferSecond = Math.floor(Diffms / Secondms)Diffms -= DifferSecond * Secondmsvar dSecs = Math.floor(Diffms / microsecond) if(convertHour != DifferHour) a=&&font color=red&&+DifferHour+&&/font&天&;if(convertMinute != DifferMinute) b=&&font color=red&&+DifferMinute+&&/font&时&;if(convertSecond != DifferSecond) c=&&font color=red&&+DifferSecond+&&/font&分&d=&&font color=red&&+dSecs+&&/font&秒&if (DifferHour&0) {a=a}else {a=''}document.getElementById(&leftTime&+key).innerHTML = a + b + c + //显示倒计时信 息 }&/script&&div id=&sales& class=&f_l clearfix&&&h1&&a href=&../search.php?intro=promotion&&&img src=&images/more.gif& /&&/a&&/h1&&div class=&clearfix goodBox&&&!--{foreach from=$promotion_goods key=key item=goods name=&promotion_foreach&}--&{if $smarty.foreach.promotion_foreach.index &= 3}&div class=&goodList&&&a href=&{$goods.url}&&&img src=&{$goods.thumb}& border=&0& alt=&{$goods.name|escape:html}&/&&/a&&br /&&p&&a href=&{$goods.url}& title=&{$goods.name|escape:html}&&{$goods.short_name|escape:html}&/a&&/p&{$lang.promote_price}&font class=&f1&&{$goods.promote_price}&/font&&br&&font class=&f4& id=&leftTime{$key}&&{$lang.please_waiting}&/font&&/div&{/if}&script&Tday[{$key}] = new Date(&{$goods.gmt_end_time}&);window.setInterval(function(){clock({$key});}, 1000); &/script&&!--{/foreach}--&&/di

我要回帖

更多关于 category 加属性 的文章

 

随机推荐