ecshop商品页商品属性分类选择的制作教程

合集下载

流程图 Ecshop架构分析 商品属性列表添加商品属性

流程图 Ecshop架构分析 商品属性列表添加商品属性

添加商品属性界面设计
工作流和业务流
简述
本功能主要描述添加一个商品属性的过程。

点击添加商品属性的按钮,通过ID 查询出需要修改的商品属性的信息,将信息显示到表单中,由用户修改完成后,再提交到处理页面,由处理页面负责将数据接收,组合成更新使用的SQL语句,将数据更新至数据库表中,确认更新完成后,返回列表页面,完成更新。

字段说明:
属性名称:单行文本,必填项,同一分类下不允许同名。

所属商品类型:下拉列表,必填项
属性组:下拉列表,当设置了属性分组后才显示
能否进行检索:单选,默认为:不需要检索。

用于设置商品分类的检索条件和进行数据缓存。

相同属性的商品是否关联:单选,默认为:否。

用于相关商品运算规则。

属性是否可选:单选,默认为唯一属性。

录入方式:单选,默认为手工录入。

手工录入:单行文本方式;列表选择:下拉列表方式;多行文本:textarea类型。

可选值列表:多行文本。

通过换行分隔字符串,为下拉列表方式提供可选值。

如何给ecshop添加可折叠和双排的分类列表

如何给ecshop添加可折叠和双排的分类列表

如何给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简单三步实现导航商品分类二级菜单

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; }。

Ecshop教程_在首页或列表页显示商品简单描述

Ecshop教程_在首页或列表页显示商品简单描述

Ecshop教程_在首页或列表页显示商品简单描述
熟悉ECSHOP的朋友都知道,在后台商品编辑的地方有一个录入“商品简单描述”的框框,
但是录入的“商品简单描述”没有很好的在前台显示出来,而只是在商品详细页的 description 里,供搜索引擎读取。

有用户问了,我想在其他页面(例如首页或者列表页)把这个“商品简单描述”显示出来,该怎么办呢?
下面说一下修改教程(以 2.7.2版官方默认模板为例):
1、在ECSHOP首页显示商品简单描述:
依次打开/themes/default/library/recommend_hot.lbi ,/themes/default/library/recommend_new.lbi ,/themes/default/library/recommend_best.lbi 文件
对每个文件都执行如下操作:
找到
在它上面增加一行
再打开/themes/default/library/recommend_promotion.lbi 文件
找到
在它上边增加一行
2、在ECSHOP列表页显示商品简单描述:
关于列表页,显示模式为“list” 和“text” 的时候,已经有“商品简单描述” 的显示了。

只是在显示模式为“grid”的时候没有显示罢了,下面给“grid” 模式也增加一下:
打开 /themes/default/library/goods_list.lbi 文件
找到
在它下面增加。

ECshop使用手册

ECshop使用手册

13.邮件群发管理——邮件订阅管理
13.邮件群发管理——邮件订阅管理
13.邮件群发管理——邮件队列管理
1.商品管理——商品类型
1.商品管理——商品类型
注意~:如果不选择“单选属性”,就不能添加商品的规格,也就不能设置规格库存了~
1.商品管理——商品类型
1.商品管理——商品类型
1.商品管理——商品类型
为各个规格的库存总数
1.商品管理——商品回收站
1.商品管理——图片批量处理
1.商品管理——商品批量上传
3.订单管理——发货单/退货单列表
添加虚拟卡添加虚拟卡
4.广告管理——广告位置
添加虚拟卡添加虚拟卡
4.广告管理——广告列表
前台表现
添加虚拟卡添加虚拟卡
5.报表统计表
添加虚拟卡添加虚拟卡
@该菜单都是各种不同类型的网点数据统计,不再一一叙述
6.文章管理——文章分类
添加虚拟卡添加虚拟卡
6.文章管理——文章分类
11.数据库管理——数据表优化
11.数据库管理——SQL查询
11.数据库管理——转换数据
11.数据库管理——转换数据
12.推荐管理——推荐设置
12.推荐管理——推荐设置
新增UBB格式
12.推荐管理——推荐设置
12.推荐管理——分成管理
前台显示
13.邮件群发管理——关注管理
13.邮件群分类
添加虚拟卡添加虚拟卡
6.文章管理——文章列表
6.文章管理——文章列表
6.文章管理——文章自动发布
6.文章管理——在线调查
7.会员管理——会员等级
7.会员管理——会员列表
7.会员管理——会员列表
7.会员管理——会员列表

ECSHOP后台模板设置说明

ECSHOP后台模板设置说明

后台模板设置手册1,修改产品图片尺寸,在后台商店设置-显示设置里改按这样的标准2,参考首页的设置模板截图模板管理-设置模板3 头部内容修改,头部文件有三个模板管理-库项目管理page_header.lbi page_header_index.lbi page_header_flow.lbi 分别是首页其他页购物车会员页如果要删除logo后面的那个只为更好的生活的话只要删除这里的代码即可<img class="logo_r_a" src="../images/logo_r.gif" />如果是会员注册页面则没有以上代码顺便说句,logo在后台商店设置里上传连接还是头部文件修改图片连接是themes/yihaodian/images/shangcheng.gif和themes/yihaodian/images/shangcheng1.gif4 播放器修改打开库项目管理index_ad.lbi修改即可这里的#是连接,src后面的是图片路径,都是模板目录images里,也就是themes/yihaodian/images 里面的,直接ftp替换即可,这里要说一句,因为一号店是要判断分辨率所以一个轮播要准备两个不同尺寸的广告,大图分别是700*300与550*300像素,小图分别是256*144与182*144像素。

4,轮播右侧这里的内容在库项目管理index_right.lbi修改5 品类中心,直接在后台替换广告即可品牌旗舰,是直接调用的商品品牌6 公告和新闻与友情链接公告和新闻这里是在cat_articles.lbi里面调用的时尚资讯和3G资讯友情链接是在index.dwt文件中7.切换区域分别调用促销,新品,精品,热卖(商品编辑设置促销价),销售排行(按购买量自动)其中促销产品在商品编辑中设置促销价格如果出现下面画红框的这种情况,图片批量处理一下就行8,产品区域这部分左侧的几个,都是一样的原理这个是固定广告,在后台广告列表替换这个图片就行,下面几个是一样的原理9 切换产品区域在这里设置,会自动判断子分类,并实现切换,是怎么自动判断的原理?10 产品区域右侧同左侧一样是固定的广告图片其中r1代表第一张,r2代表第二张,r3代表第三张11 底部区域库项目管理page_footer.lbi去版本教程:/article-285.html/viewthread.php?tid=1122426&highlight=%C8%A5%B0%E6%C8%A812 顶级分类里的播放器广告这里需要看分类id 之后记住id数字广告列表里找cate_开头,数字结尾的广告,直接把这个数字改成分类id即可。

Ecshop使用说明流程图

Ecshop使用说明流程图

Ecshop 使用说明流程图及分析一、功能模块概述电子商务商品管理订单管理会员管理管理员管理文章管理系统设置商品列表添加商品商品分类商品品牌商品回收站订单列表订单查询订单状态变更删除订单会员列表添加新会员会员等级会员评论资金管理管理员列表管理员权限文章分类文章列表商店设置配送方式地区列表友情链接验证码管理自定义导航栏商品类型二、商品管理2.1商品列表通过查询数据库中的商品信息,将相关信息显示在页面上,并提供相应操作连接。

添加编辑复制 放入回收站搜索查看2.1.1商品列表所含功能说明商品列表商品列表添加商品商品编辑商品复制商品回收站商品查询2.1.2商品列表流程商品列表查询未放入回收站的商品信息输出数组至页面根据页面布局输出商品列表组合SQL语句,查询未放入回收站的商品获取返回的数组,传递到模版按规则显示数据简述:本功能主要实现显示出商品信息的功能,通过点击商品列表的链接,使用PHP查询没有放入回收站的商品信息,将返回值存储到数组中,通过模版引擎将数组传送到视图,利用模版引擎的格式输出查询到的数据。

2.1.3添加商品流程添加商品填写商品信息提交至处理页面保存到数据库并跳转至列表页添加商品填写表单信息提交到处理页面接收数据并存储到数组中组合插入数据的SQL语句将数据存储到相应的数据表中跳转到商品列表页面简述:本功能主要描述添加一件商品的过程。

点击添加商品按钮,调出需要填写的表单,表单填写完成后,通过提交,将数据提交到处理页面,由处理页面负责设置数组接收提交的数据,组合成插入的SQL语句,将数据写入到数据库表中,确认添加完成后跳转到商品列表页面,完成数据插入。

2.1.4商品编辑编辑商品修改商品信息提交至处理页面保存到数据库并跳转至列表页编辑商品修改表单信息提交到处理页面接收数据并存储到数组中组合更新数据的SQL语句将数据存储到相应的数据表中跳转到商品列表页面获取指定的商品信息获取商品ID根据商品ID查询出需要修改的商品信息按照规定的表单位置显示商品信息简述:本功能主要描述修改一件商品信息的过程。

在ECSHOP的任意页面调用商品属性

在ECSHOP的任意页面调用商品属性

在ECSHOP的任意页面调用商品属性ECSHOP网店服务中心 / 2012-01-04看到标题有的人觉得这个很复杂,其实这个没那么复杂,直接用下面的方法,就可以在ECSHOP的任意页面调用商品属性一)、打开includes\lib_insert.php文件,在最后面增加一个函数:function insert_attr($arr){static $static_resNULLr /> $aid= isset($arr['aid'])?$arr['aid']:0;$gid= isset($arr['gid'])?$arr['gid']:0;if($aid==0) return '';if ($static_res[$aid][$gid] === NULL){if($gid>0){$static_res[$aid][$gid] = $GLOBALS['db']->getOne('select attr_value from ' . $GLOBALS['ecs']->table('goods_attr') . " where attr_id ='$aid' and goods_id='$gid' ");}else{$static_res[$aid][$gid] = $GLOBALS['db']->getOne('select attr_name from ' . $GLOBALS['ecs']->table('attribute') . " where attr_id ='$aid' ");}}return $static_res[$aid][$gid];}注意要加在 ?> 的前面二)、接下来就可以直接在ECSHOP模板中(dwt文件、lib文件皆可)中调用,调用方法:{insert name='attr' aid=属性id gid=商品编号} 调用商品的属性值{insert name='attr' aid=属性id} 调用商品的属性是不是很简单,经过上面修改代码或增加代码后,就可以在ECSHOP的任意页面调用商品属性了。

ECSHOP商品分类树显示商品数量,显示分类下商品数在分类

ECSHOP商品分类树显示商品数量,显示分类下商品数在分类

修改includes/lib_goods.php,改写下两个函数。

/*** 获得指定分类同级的所有分类以及该分类下的子分类** @access public* @param integer $cat_id 分类编号* @return array*/function get_categories_tree($cat_id = 0){if ($cat_id > 0){$sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cat_id'";$parent_id = $GLOBALS['db']->getOne($sql);}else{$parent_id = 0;}/*判断当前分类中全是是否是底级分类,如果是取出底级分类上级分类,如果不是取当前分类及其下的子分类*/$sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('category') . " WHERE parent_id = '$parent_id' AND is_show = 1 ";if ($GLOBALS['db']->getOne($sql) || $parent_id == 0){/* 获取当前分类及其子分类 */$sql = 'SELECT cat_id,cat_name ,parent_id,is_show ' .'FROM ' . $GLOBALS['ecs']->table('category') ."WHERE parent_id = '$parent_id' AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";$res = $GLOBALS['db']->getAll($sql);$sql = "SELECT cat_id, COUNT(*) AS goods_num " ." FROM " . $GLOBALS['ecs']->table('goods') . " AS g " ." GROUP BY cat_id";$res2 = $GLOBALS['db']->getAll($sql);$newres = array();foreach($res2 AS $row){$newres[$row['cat_id']] = $row['goods_num'];}foreach ($res AS $row){if ($row['is_show']){$cat_arr[$row['cat_id']]['id'] = $row['cat_id'];$cat_arr[$row['cat_id']]['num'] = !empty($newres[$row['cat_id']]) ? $newres[$row['cat_id']] : 0;$cat_arr[$row['cat_id']]['name'] = $row['cat_name'];$cat_arr[$row['cat_id']]['url'] = build_uri('category',array('cid' => $row['cat_id']), $row['cat_name']);if (isset($row['cat_id']) !NULLbr /> {$cat_arr[$row['cat_id']]['cat_id'] =get_child_tree($row['cat_id']);}}}}if(isset($cat_arr)){return $cat_arr;}}function get_child_tree($tree_id = 0){$three_arr = array();$sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('category') . " WHERE parent_id = '$tree_id' AND is_show = 1 ";if ($GLOBALS['db']->getOne($sql) || $tree_id == 0){$child_sql = 'SELECT cat_id, cat_name, parent_id, is_show ' .'FROM ' . $GLOBALS['ecs']->table('category') ."WHERE parent_id = '$tree_id' AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";$res = $GLOBALS['db']->getAll($child_sql);$sql = "SELECT cat_id, COUNT(*) AS goods_num " ." FROM " . $GLOBALS['ecs']->table('goods') . " AS g " ." GROUP BY cat_id";$res2 = $GLOBALS['db']->getAll($sql);$newres = array();foreach($res2 AS $row){$newres[$row['cat_id']] = $row['goods_num'];}foreach ($res AS $row){if ($row['is_show'])$three_arr[$row['cat_id']]['num'] = !empty($newres[$row['cat_id']]) ? $newres[$row['cat_id']] : 0;$three_arr[$row['cat_id']]['id'] = $row['cat_id'];$three_arr[$row['cat_id']]['name'] = $row['cat_name'];$three_arr[$row['cat_id']]['url'] = build_uri('category',array('cid' => $row['cat_id']), $row['cat_name']);if (isset($row['cat_id']) != NULL){$three_arr[$row['cat_id']]['cat_id'] =get_child_tree($row['cat_id']);}}}return $three_arr;}2.修改ecshop模板的库文件category_tree.lib库,写入num变量。

ecshop教程商品类型

ecshop教程商品类型

ECSHOP开发中心-商品类型说明:这个功能主要是对商品类型的添加和编辑以及对商品属性的添加和编辑。

一、添加商品类型进入后台 -> 商品管理 -> 商品类型,界面如图所示:1.商品类型名称:是指所要添加的商品类型名比如办公用品。

2.属性分组:每行一个商品属性组。

排序也将按照自然顺序排序。

也就是把商品的很多种属性分成更详细的组,方便用户检索。

二、编辑商品类型主要是修改已有的商品类型。

点编辑按扭进行编辑修改,内容同上。

三、添加商品属性属性列表-> 添加属性,界面如图所示:1.属性名称:是指某一商品类型的属性名,比如添加书的属性作者(必填项)2.所属商品类型:是指这个属性属于哪一类商品(必填项)3.能否进行检索:分为:不需要检索、关键字检索和范围检索说明:①不需要该属性成为检索商品条件的情况请选择不需要检索;②需要该属性进行关键字检索商品时选择关键字检索;③如果该属性检索时希望是指定某个范围时,选择范围检索。

4.相同属性值的商品是否关联:可以选择是或者否5. 属性是否可选:分为:唯一属性、单选属性、复选属性说明:①选择"唯一属性"时,商品的该属性值只能设置一个值,用户只能查看该值。

②选择"单选/复选属性"时,可以对商品该属性设置多个值,同时还能对不同属性值指定不同的价格加价,用户购买商品时需要选定具体的属性值。

6.该属性值的录入方式:分为:手工录入、从列表中选择和多行文本框说明:①手工录入:是指自己手工输入;②从列表中选择:是指在可选值列表(7)里输入属性值;③多行文本框:也是需要自己把属性录入到多行文本框里。

最后效果:添加完的属性列表效果如图所示:四、设置商品属性进入商品列表 -> 选择要设置属性的商品 -> 商品属性,如图所示:设置完成如图所示:前台显示效果,如下图所示:。

ecshop怎么样做到不同的分类选择不同的模板文件

ecshop怎么样做到不同的分类选择不同的模板文件

ecshop怎么样做到不同的分类选择不同的模板文件ECShop在开源的同时,也给很多功能带来了麻烦,尤其是不懂代码的朋友,有些功能比较好,而有些功能,像织梦dede程序和PHPCMS能很容易实现的,在EC中反而成了难题,真是头疼啊。

最近遇到的项目是:ecshop怎么样做到不同的分类选择不同的模板文件,先不谈自己的思路,下面举几个网友提供的思路给大家参考下先:【方法一】:1:给category表增加template字段2:在category.php编辑的时候。

分别编辑分类下不同的模板3:在前台category.php显示对应的指定模板(来自百度知道)【方法二】:如果你想手动控制。

就可以直接在category.php里面设置。

if($cat_id == '1'){模板1}else{模板2}如果你想通过数据库灵活控制。

你必须增加一个模板字段。

然后在category.php动态取的模板.大概思路就是这样的(来自搜搜问问)【方法三】:1、修改category.php在45行以下添加如下代码$dwt = 'category'.$cat_id.'.dwt';2、大概在396行,修改$smarty->display('category.dwt', $cache_id);为$smarty->display($dwt, $cache_id);在模版目录对应分类id建立模版文件例如category1.dwt(来自新浪博客)参照了以上思路之后,我们得出下面的代码:YOOZHAN优站一句名言:你,简单了,你的世界就简单了;你,简单了,事情就简单了。

【方法四】:1.首先,在数据库表ecs_category里增加一个字段,style_moban,属性就与style一样就可以了,修改admin\templates\category_info.htm文件<这里是在后台增加相关表格的意思>{$lang.cat_style}:{$lang.notice_style}{$lang.cat_style_moban}:{$lang.notice_style_moban}2.修改admin\category.php (后台数据写入)第一处:$cat['style'] = !empty($_POST['style']) ? trim($_POST['style']) : '';$cat['style_moban'] = !empty($_POST['style_moban']) ? trim($_POST['style_moban']) : '';第二处:$cat['style'] = !empty($_POST['style']) ? trim($_POST['style']) : '';$cat['style_moban'] = !empty($_POST['style_moban']) ? trim($_POST['style_moban']) : '';3.修改语言库(后台语言调用)languages\zh_cn\admin\category.php第一处:$_LANG['cat_style'] = '分类的样式表文件';$_LANG['cat_style_moban'] = '分类的模版文件';第二处:$_LANG['notice_style'] = '您可以为每一个商品分类指定一个样式表文件。

ecshop首页调用指定分类的推荐热卖和新品

ecshop首页调用指定分类的推荐热卖和新品

大家都知道ecshop首页的推荐、热卖和新品三个板块的商品都是从所有商品里读取出来的。

如果我想“在ecshop首页调用指定分类的推荐、热卖和新品?”该怎么办呢,下面教你一种方法:找到ecshop的includes/lib_goods.php,把sql语句改一下,与category表关联即可将$sql = 'select g.goods_id,g.goods_name, g.goods_name_style,g.market_price, g.shop_price as org_price, g.promote_price, ' .修改为$sql = 'select g.goods_id,g.cat_id,c.parent_id,g.goods_name, g.goods_name_style, g.market_price, g.shop_price as org_price, g.promote_price, ' .继续找到'left join ' . $globals['ecs']-&gt;table('brand') . ' as b on b.brand_id = g.brand_id ' .在它下面加一句'left join ' . $globals['ecs']-&gt;table('category') . ' as c on c.cat_id = g.cat_id ' .然后将if (!empty($cats)){$sql .= and ( . $cats . or . get_extension_goods($cats) .);}改为if (!empty($cats)){$sql .= and (c.parent_id = . $cats. or . get_extension_goods($cats) .);}这个是和分类表建立关联,调出商品所在分类的上级分类然后在index.php中增加下面代码$smarty-&gt;assign('chot_goods_35', get_category_recommend_goods('hot','35')); //指定分类下的热销商品注意这个35是一级分类的id,然后在模板中调用即可&lt;!--{foreach from=$chot_goods_35 item=goods}--&gt;&lt;div style=padding-top: 8px; class=new-tr&gt;&lt;a target=_blank href={$goods.url}&gt;&lt;img width=116 height=130 border=0 alt={$|escape:html} src={$goods.thumb}&gt;&lt;/a&gt;&lt;div&gt;&lt;a target=_blank href={$goods.url}&gt;{$|escape:html}&lt;/a&gt;&lt;br&gt;&lt;span style=color: rgb(102, 102, 102); text-decoration: line-through;&gt;市场价:{$goods.market_price}&lt;/span&gt;&lt;br&gt;特卖价:&lt;span style=color: rgb(255, 0, 0);&gt;{$goods.shop_price}&lt;/span&gt;&lt;br&gt;&lt;span class=font-gmm&gt;&lt;a href=javascript:addtocart({$goods.id})&gt;立即抢购&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=new-line&gt;&lt;/span&gt;&lt;/div&gt;&lt;!--{/foreach}--&gt;同理,新品,推荐都可以调,只要把hot改为new 或者best就可以了。

商品属性设计

商品属性设计

第一种方案:
有这样4个表
属性表
编号属性名
1 品牌
2 颜色
3 尺码
属性值表
编号属性编号属性值
1 1 品牌A
2 1 品牌B
3 2 黑色
4 2 白色
5 3 XL
6 3 XXL
商品表
编号名称价格
1 商品A 5
2 商品b 16
商品属性表
编号商品编号属性编号属性名属性值编号属性值
1 1 1 品牌 1 品牌A
2 1 2 颜色
3 黑色
3 1 2 颜色
4 白色
4 1 3 颜色
5 XL
5 1 3 颜色
6 XXL
6 2 1 品牌 1 品牌B
7 2 2 颜色 3 黑色
8 2 2 颜色 4 白色
9 2 3 颜色 5 XL
10 2 3 颜色 6 XXL
樓主的商品屬性這樣設計是沒錯的,還缺少的是SKU的描述,如衣服靴子是一個很典型的例子,可以有
款式+尺碼+顏色來決定SKU的組成。

有些時候,某些商品是沒有顏色或尺碼的,如充值卡類,就沒有存在顏色和尺碼,但存在面額這屬性,
可以有面額+商品類別決定SKU的組成。

其他以此類推。

select a.id, from `goods` a
left join `goods_attr` b on a.id = b.goods_id left join `goods_attr` c on a.id = b.goods_id where b.tid=1 and c.tid=2
Ecshop案例
品牌表
分类表
属性表
属性值表
商品表
商品属性值表。

交易网站上商品分类与标签的设置方法

交易网站上商品分类与标签的设置方法

交易网站上商品分类与标签的设置方法随着电子商务的快速发展,越来越多的人选择在交易网站上购买商品。

作为卖家,如何设置商品分类和标签成为了一个重要的问题。

本文将介绍一些常用的方法和技巧,帮助卖家更好地设置商品分类和标签,提高商品的曝光度和销售量。

一、商品分类的设置在交易网站上,商品分类是买家浏览和搜索商品的主要方式之一。

因此,合理设置商品分类非常重要。

1. 了解目标受众首先,卖家需要了解自己的目标受众是谁,他们对商品分类有什么需求和偏好。

例如,如果你的目标受众是年轻人,那么可以设置一些时尚、潮流的分类,如服饰、鞋包等。

如果目标受众是家庭主妇,那么可以设置一些家居用品、厨房用具等分类。

2. 简洁明了商品分类应该简洁明了,避免过度细分。

太多的分类可能会让买家感到困惑,不知道应该选择哪一个分类。

因此,卖家可以根据自己的商品种类和数量,合理设置几个主要分类,并在此基础上进行细分。

3. 参考竞争对手了解竞争对手的商品分类也是一个不错的方法。

通过观察竞争对手的分类设置,可以了解市场上的主流分类和买家的需求。

但是,卖家应该避免完全模仿竞争对手,要根据自己的实际情况进行调整和优化。

二、商品标签的设置除了商品分类,商品标签也是提高商品曝光度和销售量的重要手段。

合理设置商品标签可以帮助买家更快地找到自己想要的商品。

1. 关键词选择在设置商品标签时,卖家应该选择与商品相关的关键词。

关键词应该具有代表性和热门度,以吸引更多的买家。

例如,如果你卖的是手机配件,可以选择一些热门的关键词,如“手机壳”、“充电器”等。

2. 多样性和细分为了让商品更容易被搜索到,卖家可以设置多个标签,并进行细分。

例如,对于一款手机壳,可以设置多个标签,如“时尚手机壳”、“保护手机壳”、“透明手机壳”等。

这样,买家可以根据自己的需求更准确地搜索到商品。

3. 跟踪分析设置完商品标签后,卖家应该密切跟踪分析标签的效果。

通过观察哪些标签被买家频繁使用,可以了解买家的需求和偏好,并根据实际情况进行调整和优化。

ecshop后台商品属性选择改成多选框的形式

ecshop后台商品属性选择改成多选框的形式

ecshop 商品属性选择使用多选框的形式============ 1,修改 /admin/includes/lib_goods.php =========中的function build_attr_html($cat_id, $goods_id = 0){}函数改为如下/*** 根据属性数组创建属性的表单** @access public* @param int $cat_id 分类编号* @param int $goods_id 商品编号* @return string*/function build_attr_html($cat_id, $goods_id = 0){$attr = get_attr_list($cat_id, $goods_id);$tmpAttr = array();$tmpindex = array();foreach ($attr AS $tmpk => $tmpv){if ($tmpv['attr_type'] == 1 || $tmpv['attr_type'] == 2){if( !in_array('a'.$tmpv['attr_id'], $tmpindex) ){$tmpindex[] = 'a'.$tmpv['attr_id'];$attr_values = explode("\n", $tmpv['attr_values']);$tmpAttr['a'.$tmpv['attr_id']]['attr_type'] = $tmpv['attr_type'] ;$tmpAttr['a'.$tmpv['attr_id']]['attr_name'] = $tmpv['attr_name'] ;$tmpAttr['a'.$tmpv['attr_id']]['attr_input_type'] = $tmpv['attr_input_type'] ; $tmpAttr['a'.$tmpv['attr_id']]['attr_id'] = $tmpv['attr_id'] ;foreach ($attr_values AS $lk){$lk = trim(htmlspecialchars($lk));$tmpAttr['a'.$tmpv['attr_id']]['selectlist'][$lk]=array('select_name'=>$lk,'is_checked '=>0);}}$vk = trim(htmlspecialchars($tmpv['attr_value']));$tmpAttr['a'.$tmpv['attr_id']]['selectlist'][$vk]['attr_id']=$tmpv['attr_id'];$tmpAttr['a'.$tmpv['attr_id']]['selectlist'][$vk]['attr_name']=$tmpv['attr_name'];$tmpAttr['a'.$tmpv['attr_id']]['selectlist'][$vk]['attr_input_type']=$tmpv['attr_input _type'];$tmpAttr['a'.$tmpv['attr_id']]['selectlist'][$vk]['attr_values']=$tmpv['attr_values'];$tmpAttr['a'.$tmpv['attr_id']]['selectlist'][$vk]['attr_value']=$tmpv['attr_value'];$tmpAttr['a'.$tmpv['attr_id']]['selectlist'][$vk]['attr_price']=$tmpv['attr_price'];$tmpAttr['a'.$tmpv['attr_id']]['selectlist'][$vk]['is_checked']=1;}else{$tmpAttr[] = $tmpv;}}$html = '<table width="100%" id="attrTable">';$spec = 0;$tix = 0;foreach ($tmpAttr AS $key => $val){$html .= "<tr><td class='label'>";if ($val['attr_type'] == 1 || $val['attr_type'] == 2){$html .="$val[attr_name]</td><td style=\"border:1px solid #cdcdcd;\">";}else{$html .= "$val[attr_name]</td><td><input type='hidden' name='attr_id_list[]' value='$val[attr_id]' />";}if ($val['attr_input_type'] == 0){$html .= '<input name="attr_value_list[]" type="text" value="' .htmlspecialchars($val['attr_value']). '" size="40″ /> ';}elseif ($val['attr_input_type'] == 2){$html .= '<textarea name="attr_value_list[]" rows="3″cols="40″>' .htmlspecialchars($val['attr_value']). '</textarea>';}elseif( $val['attr_type'] != 1 && $val['attr_type'] != 2 ){$html .= '<select name="attr_value_list[]">';$html .= '<option value="">' .$GLOBALS['_LANG']['select_please']. '</option>';$attr_values = explode("\n", $val['attr_values']);foreach ($attr_values AS $opt){$opt = trim(htmlspecialchars($opt));$html .= ($val['attr_value'] != $opt) ?'<option value="' . $opt . '">' . $opt . '</option>' :'<option value="' . $opt . '" selected="selected">' . $opt .'</option>';}$html .= '</select> ';}else{$html .= '<div>';foreach ($val['selectlist'] AS $selkey => $selvalue){$tix++;$html .="<div style=\"float:left; width:190px;\"><table><tr><td><input type='checkbox' id='checkset_$tix'". ($selvalue['is_checked'] ? "checked" : "" ) ." onclick=\"setattrdisable(this,'$tix','selectvalue_','selectprice_','selectattr_')\">". $selvalue['select_name']."&nbsp;&nbsp;&nbsp;&nbsp;";$html .="<input id='selectvalue_".$tix."' type='hidden' name='attr_value_list[]' value=\"".$selvalue['select_name']."\" ". ($selvalue['is_checked'] ? "" : 'disabled' ) ." > </td>";$html .="<td>".$GLOBALS['_LANG']['spec_price'].' <input type="text" name="attr_price_list[]" value="' . $selvalue['attr_price'] . '" size="5″ maxlength="10″'. ($selvalue['is_checked'] ? "" : 'disabled' ) .' id="selectprice_'.$tix.'" />'."<input type='hidden' id='selectattr_".$tix."' name='attr_id_list[]' value='$val[attr_id]' ". ($selvalue['is_checked'] ? "" : 'disabled' ) ." /> </td></tr></table></div>";}$html .= '</div>';}$html .= ($val['attr_type'] == 1 || $val['attr_type'] == 2) ? " ":' <input type="hidden" name="attr_price_list[]" value="0″ />';$html .= '</td></tr>';}$html .= '</table>';return $html;}======== 2,修改 admin/templates/goods_info.htm 加一个js函数上去 ============function setattrdisable(obj,ix,sv,sp,sa){document.getElementById(sv+ix).disabled = obj.checked ? false : true;document.getElementById(sp+ix).disabled = obj.checked ? false : true;document.getElementById(sa+ix).disabled = obj.checked ? false : true;}。

ecshop详情页获得当前商品所属分类ID和调用同分类下的商品

ecshop详情页获得当前商品所属分类ID和调用同分类下的商品

Ecshop详情页获得当前商品所属分类ID和调用同分类下的商品ECSHOP开发中心()在根目录goods.php中找到$smarty->assign('goods_rank', get_goods_rank($goods_id));在这段下面加入/*获得当前栏目id*/$sql= "select cat_id from ".$GLOBALS['ecs']->table('goods')."where goods_id='".$goods_id."'";$thiscat_id = $GLOBALS['db']->getOne($sql);/*获得当前栏目id end*/栏目ID有了,接下来只需要根据ID取得商品就好了,打开includes/lib_goods.php在最下面加入,其实这个跟获取指定栏目下的商品是一样的代码,只不过这个ID是根据产品获取的,如果我们把id写死那就是指定分类下的商品了。

代码如下:/*** 获得同分类下的商品** @access public* @param integer $cat_id 分类ID* @param integer $num 数量* @param string $from 来自web/wap的调用* @param string $order_rule 指定商品排序规则* @return array*/function samecat_goods($cat_id = '', $num = ''){$sql = 'Select g.goods_id, g.cat_id,c.parent_id, g.goods_name, g.goods_name_style, g.market_price, g.shop_price AS org_price, g.promote_price, ' ."IFNULL(er_price, g.shop_price * '$_SESSION[discount]') AS shop_price, ". "promote_start_date, promote_end_date, g.goods_brief, g.goods_thumb, goods_img, " . "g.is_best, g.is_new, g.is_hot, g.is_promote " .'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' .'LEFT JOIN ' . $GLOBALS['ecs']->table('category') . ' AS c ON c.cat_id = g.cat_id ' . "LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp "."ON mp.goods_id = g.goods_id AND er_rank = '$_SESSION[user_rank]' ". "Where g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 ".$sql .= " AND (c.parent_id =" . $cat_id. " OR g.cat_id = " . $cat_id ." OR g.cat_id ".db_create_in(array_unique(array_merge(array($cat_id), array_keys(cat_list($cat_id, 0, false))))) .")";$sql .= " ORDER BY rand()";$sql .= " LIMIT $num";$res = $GLOBALS['db']->getAll($sql);$goods = array();foreach ($res AS $idx => $row){$goods[$idx]['id'] = $row['article_id'];$goods[$idx]['id'] = $row['goods_id'];$goods[$idx]['name'] = $row['goods_name'];$goods[$idx]['brief'] = $row['goods_brief'];$goods[$idx]['brand_name'] = $row['brand_name'];$goods[$idx]['goods_style_name'] =add_style($row['goods_name'],$row['goods_name_style']);$goods[$idx]['short_name'] = $GLOBALS['_CFG']['goods_name_length'] > 0 ?sub_str($row['goods_name'], $GLOBALS['_CFG']['goods_name_length']) :$row['goods_name'];$goods[$idx]['goods_name'] = $row['goods_name'];$goods[$idx]['short_style_name'] =add_style($goods[$idx]['short_name'],$row['goods_name_style']);$goods[$idx]['market_price'] = price_format($row['market_price']);$goods[$idx]['shop_price'] = price_format($row['shop_price']);$goods[$idx]['thumb'] = empty($row['goods_thumb']) ? $GLOBALS['_CFG']['no_picture'] : $row['goods_thumb'];$goods[$idx]['goods_img'] = empty($row['goods_img']) ?$GLOBALS['_CFG']['no_picture'] : $row['goods_img'];$goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']),$row['goods_name']);}return $goods;}值得注意的是,代码中有这么一句$sql .= " ORDER BY rand()";这句是让商品随机排序,或者说是随机调用了几个商品,因为我们不想让同分类商品下面调出来的猜你还喜欢的商品都是一样的。

Ecshop商城商品属性筛选插件制作方法

Ecshop商城商品属性筛选插件制作方法

Ecshop商城商品属性筛选插件制作方法分享这两天用ecshop制作一个商城站时想把里面的商品属性值做成很多大商城常见的可选择分类那种,搜了不少没有提供这方面教程的,找到的也不能使用。

有的都是作为插件卖的,竟然没人分享出来,自己研究了下搞定了,免费分享给每位遇到同样问题的朋友,希望能帮助到你。

修改步骤:1、将下面这个图片上传到themes/您当前模板/images文件夹里面,这里我命名为test.gif。

如果你自己改为其他文件名,那么在下面的修改中就要保持一致。

2、找到themes/您当前模板/goods.dwt文件,做如下修改:找到下面这段代码:<!-- {* 开始循环所有可选属性*} --><!-- {foreach from=$specification item=spec key=spec_key} --><li class="padd loop"><strong>{$}:</strong><br /><!-- {* 判断属性是复选还是单选*} --><!-- {if $spec.attr_type eq 1} --><!-- {if $cfg.goodsattr_style eq 1} --><!-- {foreach from=$spec.values item=value key=key} --><label for="spec_value_{$value.id}"><input type="radio" name="spec_{$spec_key}" value="{$value.id}" id="spec_value_{$value.id}" {if $key eq 0}checked{/if} onclick="changePrice()" />{$bel} [{if $value.price gt 0}{$lang.plus}{elseif $value.price lt 0}{$lang.minus}{/if} {$value.format_price|abs}] </label><br /><!-- {/foreach} --><input type="hidden" name="spec_list" value="{$key}" /><!-- {else} --><select name="spec_{$spec_key}" onchange="changePrice()"><!-- {foreach from=$spec.values item=value key=key} --><option label="{$bel}" value="{$value.id}">{$bel} {if $value.price gt 0}{$lang.plus}{elseif $value.price lt 0}{$lang.minus}{/if}{if $value.price neq 0}{$value.format_price}{/if}</option><!-- {/foreach} --></select><input type="hidden" name="spec_list" value="{$key}" /><!-- {/if} --><!-- {else} --><!-- {foreach from=$spec.values item=value key=key} --><label for="spec_value_{$value.id}"><input type="checkbox" name="spec_{$spec_key}" value="{$value.id}" id="spec_value_{$value.id}" onclick="changePrice()" />{$bel} [{if $value.price gt 0}{$lang.plus}{elseif $value.price lt 0}{$lang.minus}{/if} {$value.format_price|abs}] </label><br /><!-- {/foreach} --><input type="hidden" name="spec_list" value="{$key}" /><!-- {/if} --></li><!-- {/foreach} --><!-- {* 结束循环可选属性*} -->将上面这段代码替换为以下代码:<!-- {* 开始循环所有可选属性*} --><li style="border:1px solid #FBD2D2; float:left; width:315px; margin-left:5px; background:#FCF0F0; padding:10px;"><!-- {foreach from=$specification item=spec key=spec_key} -->{$}:<div class="catt"><!-- {* 判断属性是复选还是单选*} --><!-- {if $spec.attr_type eq 1} --><!-- {if $cfg.goodsattr_style eq 1} --><!-- {foreach from=$spec.values item=value key=key} --><a {if $key eq 0}class="cattsel"{/if} onclick="changeAtt(this)" href="javascript:;" name="{$value.id}" title="{$bel}">{$bel}<input style="display:none" id="spec_value_{$value.id}" type="radio" name="spec_{$spec_key}" value="{$value.id}" {if $key eq 0}checked{/if} /></a><!-- {/foreach} --><input type="hidden" name="spec_list" value="{$key}" /><!-- {else} --><select name="spec_{$spec_key}"><!-- {foreach from=$spec.values item=value key=key} --><option label="{$bel}" value="{$value.id}">{$bel} {if $value.price gt 0}{$lang.plus}{elseif $value.price lt 0}{$lang.minus}{/if}{if $value.price neq 0}{$value.format_price}{/if}</option><!-- {/foreach} --></select><input type="hidden" name="spec_list" value="{$key}" /><!-- {/if} --><!-- {else} --><!-- {foreach from=$spec.values item=value key=key} --><label for="spec_value_{$value.id}"><input type="checkbox" name="spec_{$spec_key}" value="{$value.id}" id="spec_value_{$value.id}" onclick="changePrice()" />{$bel} [{if $value.price gt 0}{$lang.plus}{elseif $value.price lt 0}{$lang.minus}{/if} {$value.format_price|abs}] </label><br /><!-- {/foreach} --><input type="hidden" name="spec_list" value="{$key}" /><!-- {/if} --></div><!-- {/foreach} --></li><!-- {* 结束循环可选属性*} -->再找到下面这段代码:/*** 接收返回的信息*/function changePriceResponse(res){if (res.err_msg.length > 0){alert(res.err_msg);}else{document.forms['ECS_FORMBUY'].elements['number'].value = res.qty;if (document.getElementById('ECS_GOODS_AMOUNT'))document.getElementById('ECS_GOODS_AMOUNT').innerHTML = res.result;}}在上面这段代码下增加以下代码:/*** 颜色选择器*/function changeAtt(t) {stChild.checked='checked';for (var i = 0; i<t.parentNode.childNodes.length;i++) {if (t.parentNode.childNodes[i].className == 'cattsel') {t.parentNode.childNodes[i].className = '';}}t.className = "cattsel";changePrice();}3、打开themes/您当前模板/style.css,将下面的代码增加到最后(如果您的模板调用的css文件不是style.css,那么将下面的代码加到您调用的那个css文件里面去):/*--------------颜色选择器CSS添加-------------*/#goodsInfo .catt {width:100%;height:auto;overflow:hidden;padding-bottom:5px;}#goodsInfo .catt a {border: #c8c9cd 1px solid;text-align: center;background-color: #fff;margin-right:5px;margin-top:6px;padding-left: 10px;padding-right: 10px;display: block;white-space: nowrap;color: #666;text-decoration: none;float:left;}#goodsInfo .catt a:hover {border:#ff6701 2px solid;margin: -1px;margin-right:4px;margin-top:5px;}#goodsInfo .catt a:focus {outline-style:none;}#goodsInfo .catt .cattsel {border:#ff6701 2px solid;margin: -1px;background: url(images/test.gif) no-repeat bottom right;margin-right:4px;margin-top:5px;}#goodsInfo .catt .cattsel a:hover {border: #ff6701 2px solid;margin:-1px;background: url(images/test.gif) no-repeat bottom right;}/**/好了,更新完毕!然后再说说属性的添加方法:1、在后台商品管理下的商品类型里面,先添加您的一个商品类型,比如包包,然后给这个类型添加可能出现的所有属性,比如,颜色和尺寸(需要客户购买时候选择的属性,添加的时候要选择单选属性,然后值选择从列表里面选择),然后把所以可能用到的颜色和尺寸添加到列表里面。

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

ecshop商品页商品属性分类选择的制作教程来源:郑州月嫂作者: 2013-02-20 09:33这两天用ecshop制作一个商城站时想把里面的商品属性值做成很多大商城常见的可选择分类那种,搜了不少没有提供这方面教程的,找到的也不能使用。

有的都是作为插件卖的,竟然没人分享出来,自己研究了下搞定了,决定在A5免费分享给每位遇到同样问题的朋友,希望能帮助到你。

修改步骤:1、将下面这个图片上传到 themes/您当前模板/images文件夹里面,这里我命名为test.gif。

如果你自己改为其他文件名,那么在下面的修改中就要保持一致。

2、找到 themes/您当前模板/goods.dwt文件,做如下修改:找到下面这段代码:<!-- {* 开始循环所有可选属性 *} --><!-- {foreach from=$specification item=spec key=spec_key} --><li class="padd loop"><strong>{$}:</strong><br /><!-- {* 判断属性是复选还是单选 *} --><!-- {if $spec.attr_type eq 1} --><!-- {if $cfg.goodsattr_style eq 1} --><!-- {foreach from=$spec.values item=value key=key} --> <label for="spec_value_{$value.id}"><input type="radio" name="spec_{$spec_key}" value="{$value.id}" id="spec_value_{$value.id}" {if $key eq 0}checked{/if} onclick="changePrice()" />{$bel} [{if $value.price gt 0}{$lang.plus}{elseif $value.price lt 0}{$lang.minus}{/if} {$value.format_price|abs}] </label><br /> <!-- {/foreach} --><input type="hidden" name="spec_list" value="{$key}" /> <!-- {else} --><select name="spec_{$spec_key}" onchange="changePrice()"><!-- {foreach from=$spec.values item=value key=key} --> <option label="{$bel}" value="{$value.id}">{$bel} {if $value.price gt 0}{$lang.plus}{elseif$value.price lt 0}{$lang.minus}{/if}{if $value.price neq 0}{$value.format_price}{/if}</option><!-- {/foreach} --></select><input type="hidden" name="spec_list" value="{$key}" /> <!-- {/if} --><!-- {else} --><!-- {foreach from=$spec.values item=value key=key} --><label for="spec_value_{$value.id}"><input type="checkbox" name="spec_{$spec_key}" value="{$value.id}" id="spec_value_{$value.id}" onclick="changePrice()" />{$bel} [{if $value.price gt 0}{$lang.plus}{elseif $value.price lt 0}{$lang.minus}{/if} {$value.format_price|abs}] </label><br /> <!-- {/foreach} --><input type="hidden" name="spec_list" value="{$key}" /><!-- {/if} --></li><!-- {/foreach} --><!-- {* 结束循环可选属性 *} -->将上面这段代码替换为以下代码:<!-- {* 开始循环所有可选属性 *} --><li style="border:1px solid #FBD2D2; float:left; width:315px; margin-left:5px; background:#FCF0F0; padding:10px;"><!-- {foreach from=$specification item=spec key=spec_key} -->{$}:<div class="catt"><!-- {* 判断属性是复选还是单选 *} --><!-- {if $spec.attr_type eq 1} --><!-- {if $cfg.goodsattr_style eq 1} --><!-- {foreach from=$spec.values item=value key=key} --><a {if $key eq 0}class="cattsel"{/if} onclick="changeAtt(this)" href="java script:;" name="{$value.id}" title="{$bel}">{$bel}<input style="display:none" id="spec_value_{$value.id}" type="radio" name="spec_{$spec_key}" value="{$value.id}" {if $key eq 0}checked{/if} /></a><!-- {/foreach} --><input type="hidden" name="spec_list" value="{$key}" /><!-- {else} --><select name="spec_{$spec_key}"><!-- {foreach from=$spec.values item=value key=key} --><option label="{$bel}" value="{$value.id}">{$bel} {if $value.price gt 0}{$lang.plus}{elseif $value.price lt 0}{$lang.minus}{/if}{if $value.price neq 0}{$value.format_price}{/if}</option><!-- {/foreach} --></select><input type="hidden" name="spec_list" value="{$key}" /><!-- {/if} --><!-- {else} --><!-- {foreach from=$spec.values item=value key=key} --><label for="spec_value_{$value.id}"><input type="checkbox" name="spec_{$spec_key}" value="{$value.id}" id="spec_value_{$value.id}" onclick="changePrice()" />{$bel} [{if $value.price gt 0}{$lang.plus}{elseif $value.price lt 0}{$lang.minus}{/if} {$value.format_price|abs}] </label><br /><!-- {/foreach} --><input type="hidden" name="spec_list" value="{$key}" /><!-- {/if} --></div><!-- {/foreach} --></li><!-- {* 结束循环可选属性 *} -->再找到下面这段代码:/*** 接收返回的信息*/function changePriceResponse(res){if (res.err_msg.length > 0){alert(res.err_msg);}else{document.forms['ECS_FORMBUY'].elements['number'].value = res.qty;if (document.getElementById('ECS_GOODS_AMOUNT'))document.getElementById('ECS_GOODS_AMOUNT').innerHTML = res.result;}}在上面这段代码下增加以下代码:/*** 颜色选择器*/function changeAtt(t) {stChild.checked='checked';for (var i = 0; i<t.parentNode.childNodes.length;i++) {if (t.parentNode.childNodes[i].className == 'cattsel') {t.parentNode.childNodes[i].className = '';}}t.className = "cattsel";changePrice();}3、打开themes/您当前模板/style.css,将下面的代码增加到最后(如果您的模板调用的css文件不是style.css,那么将下面的代码加到您调用的那个css文件里面去):/*--------------颜色选择器CSS添加-------------*/#goodsInfo .catt {width:100%;height:auto;overflow:hidden;padding-bottom:5px;}#goodsInfo .catt a {border: #c8c9cd 1px solid;text-align: center;background-color: #fff;margin-right:5px;margin-top:6px;padding-left: 10px;padding-right: 10px;display: block;white-space: nowrap;color: #666;text-decoration: none;float:left;}#goodsInfo .catt a:hover {border:#ff6701 2px solid;margin: -1px;margin-right:4px;margin-top:5px;}#goodsInfo .catt a:focus {outline-style:none;}#goodsInfo .catt .cattsel {border:#ff6701 2px solid;margin: -1px;background: url(images/test.gif) no-repeat bottom right;margin-right:4px;margin-top:5px;}#goodsInfo .catt .cattsel a:hover {border: #ff6701 2px solid;margin:-1px;background: url(images/test.gif) no-repeat bottom right;}/**/好了,更新完毕!然后再说说属性的添加方法:1、在后台商品管理下的商品类型里面,先添加您的一个商品类型,比如包包,然后给这个类型添加可能出现的所有属性,比如,颜色和尺寸(需要客户购买时候选择的属性,添加的时候要选择单选属性,然后值选择从列表里面选择),然后把所以可能用到的颜色和尺寸添加到列表里面。

相关文档
最新文档