Ecshop商城商品属性筛选插件制作方法
ECSHOP商品关键词模糊分词搜索插件,商品列表关键字加红功能

"ON mp.goods_id = g.goods_id AND er_rank = '$_SESSION[user_rank]' ".
"WHERE g.is_delete = 0 AND g.is_on_sale = 1 AND g.is_alone_sale = 1 $attr_in ".
"WHERE is_delete = 0 AND is_on_sale = 1 AND is_alone_sale = 1 " ; } else { /*获得符合条件的商品总数*/
$sql = "SELECT COUNT(*) FROM $select AS P " .
"WHERE is_delete = 0 AND is_on_sale = 1 AND is_alone_sale = 1 " ; } $count = $db->getOne($sql); $max_page = ($count> 0) ? ceil($count / $size) : 1; if ($page > $max_page) { $page = $max_page; } if($select=="()")//当关键词为空时,没有拆分关键词,所以用于union的$select为空,仍需要调用goods表{ /*查询商品*/
2、修改search.php文件第382行到403行
/*获得符合条件的商品总数*/
ecshop优化之Robots设置技巧

ecshop优化之Robots设置技巧使用过ecshop的朋友都会知道ECSHOP有严重的重复收录过多的问题,很多朋友的网站实际产品加文章数量仅仅1000来个,查询链接居然有3,4千,google甚至会有上万。
重复链接因为Title一样,所以常常会被搜索引擎惩罚导致收录差,对于这个问题,SEOer们是必须要解决的,以下发表ecshop模板堂ecshop模板堂的解决经验,欢迎点评。
分析会有哪些重复链接产生1.就ecshop模板堂使用的情况,首先是产品页和文章页会有很多的页面以 ?from=rss 结束如 /goods-1.html?from=rss这个的解决方法有二,一是通过删除rss信息订阅功能,二是Robots设置ecshop模板堂ecshop模板堂选择的是第二种所以ecshop模板堂在Robots里加了一条禁止搜索引擎索引的语句:Disallow: /*rss*这句的意思是只要根目录下的链接带“rss”就不索引,除非你的网站会有带页面地址里正好出现rss这连续三个子母,这个语句都可以解决这个问题。
2.分类页里的动态链接分类页里充斥了大量的动态链接包括属性筛选的链接排序的链接显示方式的链接接下来ecshop模板堂们逐一击破首先是属性筛选的链接如/category-1-min80-max90-attr0.html这个是筛选里面的价格的筛选包括其他属性的链接,ecshop模板堂们发现规律就是都会出现“min” “max” “attr”三个词,分别是最小,最大,属性值和上面的,ecshop模板堂们在Robots加了一跳禁止抓取包括这三个词的语句:Disallow: /*min*Disallow: /*max*Disallow: /*attr*然后,排序的链接和显示方式的链接ecshop模板堂们点击后同样会出现类似一长串,其中仍然包括“min” “max” “attr”三个词因而上面Robots的设置已经可以解决这样就完了吗?没有,虽然ecshop模板堂们设置了Robots的抓取,但为了让蜘蛛爬行更方面直接,ecshop模板堂们需要做另外一个工作,就是限制爬行找到模板文件里对应的属性筛选和产品列表的模板文件(ecshop 模板堂自己的是cat_filter.lbi和goods_list.lbi)找到属性筛选、排序、显示方式的链接代码,在其里增加一句rel=”nofollow”,意思就是限制爬行robots的作用在于禁止抓取,而nofollow则在于禁止爬行,双管齐下很好的引导了蜘蛛和搜索引擎3.其它的一些重复动态链接ecshop模板堂ecshop模板堂发现的其它重复链接还包括品牌商品里的显示方式如ecshop模板堂在Robots同样加了三句Disallow: /*min*Disallow: /*max*Disallow: /*attr*就解决了不同显示方式还有不同链接的重复收录问题以上ecshop模板堂所提到的并未包含所有的动态链接,但给大家做了一个不错的参考,因为万变不离其宗,朋友们可以依据ecshop模板堂提到的方法和思路慢慢的把自己的Robots写完整,同时适当的使用nofollow在模板里限制蜘蛛的爬行注意的是对于已经收录了大量的重复链接,您进行以上提到的修改,搜索引擎并不能快速做出反应,对待新的页面会限制收录重复页面,但对于已经收录的重复链接,搜索引擎需要花了一段时间取消收录而重新收录主页面,ecshop模板堂的经验是至少需要2个月。
流程图 Ecshop架构分析 商品属性列表添加商品属性

添加商品属性界面设计
工作流和业务流
简述
本功能主要描述添加一个商品属性的过程。
点击添加商品属性的按钮,通过ID 查询出需要修改的商品属性的信息,将信息显示到表单中,由用户修改完成后,再提交到处理页面,由处理页面负责将数据接收,组合成更新使用的SQL语句,将数据更新至数据库表中,确认更新完成后,返回列表页面,完成更新。
字段说明:
属性名称:单行文本,必填项,同一分类下不允许同名。
所属商品类型:下拉列表,必填项
属性组:下拉列表,当设置了属性分组后才显示
能否进行检索:单选,默认为:不需要检索。
用于设置商品分类的检索条件和进行数据缓存。
相同属性的商品是否关联:单选,默认为:否。
用于相关商品运算规则。
属性是否可选:单选,默认为唯一属性。
录入方式:单选,默认为手工录入。
手工录入:单行文本方式;列表选择:下拉列表方式;多行文本:textarea类型。
可选值列表:多行文本。
通过换行分隔字符串,为下拉列表方式提供可选值。
dedcms织梦实现自定义字段进行产品筛选(类似于购物商城参数筛选)

dedcms织梦实现⾃定义字段进⾏产品筛选(类似于购物商城参数筛选)企业⽹站中如果⼀些产品有很多不同的交叉属性,就需要⽤到:1、后台为该产品添加⼀些⾃定义的筛选字段 2、前台根据这些字段逐层筛选更⽅便客户找到他需要的产品(⽂章)本插件(⽂件)完全不动dedecms 任何核⼼⽂件;需要增加和修改的地⽅为:1、进⾏筛选的动态php页⾯;本篇在wwwroot/plus 下⾯增加 pcba.php页⾯;2、在模板⽬录下增加⽤于显⽰的模板⽂件;本篇在wwwroot/templets/default/ 下⾯增加 list_PCBA_with_type.htm 页⾯;3、在/include/⽂件价下找到 extend.func.php ⽂件增加⼀些函数本⽂仅作抛砖引⽟(功能已实现),希望⼤家⼀起来完善(美化)该插件;本⼈⽔平有限,还有很多不⾜之处;不过以下代码已经能将核⼼功能完成,也很实⽤(很多⽹友需要⽤到的)1、在wwwroot/plus 下⾯增加 pcba.php页⾯;代码如下:------------------------------------------------------------------------------------------<?phprequire_once("../ouyp/config.php");require_once(DEDEINC."/dedetag.class.php");require_once(dirname(__FILE__).'/../include/common.inc.php');require_once(DEDEINC."/extend.func.php");$currentUrl = $_SERVER["REQUEST_URI"];//根据当前URL中包含的查询字符串进⾏进⾏筛选并返回所有符合条件的板卡的ID值,以逗号分隔function returnQueryIDS($url){$data = array();$parameter = explode('&',end(explode('?',$url)));$addquery = count($parameter);foreach($parameter as $val){$tmp = explode('=',$val);$data[$tmp[0]] = $tmp[1];}$query = $query."and".$tmp[0];if($addquery == '1'){foreach ($data as $key => $value) {$value = urldecode($value);$query = "SELECT * FROM `#@__pcba` WHERE FIND_IN_SET('$value',$key)";}}else {$firstquery = array_slice($data,0,1);$otherquery = array_slice($data,1);foreach ($firstquery as $key => $value) {$value = urldecode($value);$query = "SELECT * FROM `#@__pcba` WHERE FIND_IN_SET('$value',$key)";}foreach ($otherquery as $key => $value) {$value = urldecode($value);$query = $query." and FIND_IN_SET('$value',$key)";}}$orderby = ' order by aid desc ';$query = $query.$orderby;if($addquery !== 0){global $dsql;$array = array();$dsql->SetQuery($query);$dsql->Execute();while($row = $dsql->GetArray()){$aids = array_push($array,$row['aid']);}$aids = join(",",$array);}else{$aids = 0;}return $aids;}//根据⽹址查询的字段返回所有符合条件的板卡ID值集合,并输出ID值集合中所有的产品returnPCBAArc(returnQueryIDS($currentUrl));require_once(DEDETEMPLATE.'/default/list_PCBA_with_type.htm');-------------------------------------------------------------------------------------------2、在wwwroot/templets/default/ 下⾯增加 list_PCBA_with_type.htm 页⾯核⼼显⽰代码如下:<div style="width:750px; float:left; padding-left:10px; height:150px; padding-top:7px; text-align:left; clear:both"> <table width="99%" border="0" cellspacing="0" cellpadding="0"><tr><td valign="top" width="120px">板卡架构:</td><td valign="top"><?php returnFieldValuesPHP($currentUrl,"jiagou","1"); ?></td></tr><tr><td valign="top"> CPU 核⼼:</td><td valign="top"> <?php returnFieldValuesPHP($currentUrl,"hexin","1"); ?></td></tr><tr><td valign="top">应⽤领域</td><td valign="top"><?php returnFieldValuesPHP($currentUrl,"hangye","1"); ?></td></tr><tr><td valign="top">板卡尺⼨</td><td valign="top"><?php returnFieldValuesPHP($currentUrl,"type_size","1"); ?></td></tr><tr><td valign="top"> </td><td valign="top"> </td></tr></table></div>-----------------------------------------------------------------------------------------3、在/include/⽂件价下找到 extend.func.php ⽂件增加以下函数------------------------------------------------------------//根据传递过来的多个以逗号拼接的产品ID,形成数组、查询并返回相应的产品function returnPCBAArc($qstr,$orderby='id',$desc ='desc'){global $dsql;if(!empty($qstr)){$arcids = preg_replace("#[^0-9,]#", '', preg_replace("#,#", ',', $qstr));$query = "SELECT * FROM `#@__archives` WHERE id in($arcids) order by $orderby $desc";$dsql->SetQuery($query);$dsql->Execute();while($row = $dsql->GetArray()){$url = GetOneArchiveUrl($row['id']);$aTitle = $row['title'];$picURL = $row['litpic'];$gonghao = $row['gonghao'];$size = $row['size'];$gaisu = $row['gaisu'];$keydesc = $row['keydesc'];$msg .="<DIV style='float:left; border-right:1px #d0d9e2 solid; border-bottom:1px #d0d9e2 solid; width:332.6px;' >";$msg .="<UL class="productline_2"><LI><DIV class="font14" style=overflow:hidden><SPAN style='FONT-WEIGHT: bold'id=BrandList_ctl06_lblSeriesName><a href=$url class='title' title='$aTitle'>$aTitle</a></SPAN> </DIV><DIV class="pic"><a href=$url> <img class='lazy' style='BORDER:none;WIDTH: 150px;' data-original=$picURL src='/templets/default//js/grey.gif' /> </a></DIV>";$msg .="<DIV style='HEIGHT: 90px; OVERFLOW: hidden' class="intro"><SPAN id=BrandList_ctl06_lblSeriesDescription><P> <STRONG>$keydesc </STRONG><BR>$gaisu</P></SPAN></DIV><SPAN class="text_o"><a href=$url class="title">了解详情></A> </SPAN><div class="sc_size"><div style=width: 80px class="left">功耗及尺⼨:</div><span onmouseout=$(this).removeClass('size_a'); onmouseover=$(this).addClass('size_a'); class="size">$gonghao W </span> <span class="size">$size mm</span> </div></LI></UL></DIV>";}}print($msg);}//将数组转化为查询筛选字符串,类似&a=111&b=222function array_implode($glue, $separator, $array) {if ( ! is_array( $array ) ) return $array;$string = array();foreach ( $array as $key => $val ) {if ( is_array( $val ) )$val = implode( ',', $val );$string[] = "{$key}{$glue}{$val}";}return implode( $separator, $string );}-----------------------------------------------------------------------第三个函数最为关键//获取⾃定义字段所有值并附带链接function returnFieldValuesPHP($currentURl,$customField,$type='',$id='17'){global $dsql;if(!empty($customField)){$fname = $customField;$row = $dsql->GetOne("SELECT fieldset,'' as maintable,addtable,issystem FROM `#@__channeltype` WHERE id='$id'");$fieldset = $row['fieldset'];$trueTable = $row['addtable'];$dtp = new DedeTagParse();$dtp->SetNameSpace("field", "<", ">");$dtp->LoadSource($fieldset);foreach($dtp->CTags as $ctag){if(strtolower($ctag->GetName())==strtolower($fname)) break;}//将当前路径数组化$parameter = explode('&',end(explode('?',$currentURl)));$addquery = count($parameter);foreach($parameter as $val){$tmp = explode('=',$val);$data[$tmp[0]] = $tmp[1];}$rowValue = explode(",",$ctag->GetAtt('default'));$filename = "pcba.php";foreach($rowValue as $key=>$value){if($addquery !== 0){//检查当前路径中是否已经存在某个查询的⾃定义字段选项,如存在则重新赋值,否则直接⽤"&"添加查询字段if(array_key_exists($customField, $data)){$data[$customField] = $value;//将路径数组重新⽣成路径$newdata = array();$newdata = $data;$firstquery = array_slice($newdata,0,1);$otherquery = array_slice($newdata,1,5);foreach($firstquery as $k1 =>$v1){$fURl = $filename."?".$k1."=".$v1;}if(count($otherquery) !== 0){next(implode("&", $otherquery));$query = array_implode( '=', '&', $otherquery);//print_r($query);$newURl = $fURl."&".$query ;}else{$newURl = $fURl;}}else{$newURl = $currentURl."&".$customField."=".$value;}}else{$newURl = $filename."?".$customField=$value;}$va = "<a href=".$newURl.">".$value."</a> ";echo $va;}}}4、在后台增加相应的⾃定义字段,本⽰例增加的字段为:jiagou,hexin,hangye,type_size ,均为checkBox多选类型思路:1、pcba.php 页⾯作⽤:根据地址栏URL⾥⾯的筛选字段及值,找到所有符合条件的产品2、extend.func.php ⾥⾯增加的 3个扩展函数⽤于⽐对当前URL⾥⾯筛选的条件(字段)的,如⽤户要筛选的字段不在URL⾥⾯则增加、如⽤户要筛选的字段在URL⾥⾯已存在则替换字段的值,并显⽰在页⾯;。
ecshop商品详细页如何添加“售后服务”、“支付方式”等栏目

ecshop商品详细页如何添加“售后服务”、“支付方式”等栏目秦皇岛商之翼旗下ECSHOP开发中心()ecshop默认商品详细页只有‘商品描述’和‘商品属性’2个分类,在有些时候为了更清除描述商品和提供给用户更多的商品信息需要添加其它分类。
ecshop默认的分类做好了切换,所以只需要复制以下代码就可以完成分类的添加。
打开goods.dwt页面,找到如下代码红色部分设置分类名称,复制一个<h2>标签就可以添加一个分类名。
如添加一个名称为‘售后服务’,代码如下<h3 style="padding:0 5px;"><div id="com_b" class="history clearfix"><h2>{$lang.goods_brief}</h2><h2 class="h2bg">{$lang.goods_attr}</h2><!-- {if $package_goods_list} --><h2 class="h2bg" style="color:red;">{$lang.remark_package}</h2><!-- {/if} --><h2 class="h2bg">售后服务</h2></div></h3>class="h2bg"设置选中状态样式分类名称添加了,还需要添加内容才能通过切换浏览到‘售后服务’的内容,找到以下代码<blockquote><table width="100%" border="0" cellpadding="3" cellspacing="1"bgcolor="#dddddd"><!-- {foreach from=$properties item=property_group key=key} --><tr><th colspan="2" bgcolor="#FFFFFF">{$key|escape}</th></tr><!-- {foreach from=$property_group item=property} --><tr><td bgcolor="#FFFFFF" align="left"width="30%"class="f1">[{$|escape:html}]</td><td bgcolor="#FFFFFF" align="left" width="70%">{$property.value}</td></tr><!-- {/foreach}--><!-- {/foreach}--></table></blockquote><blockquote>标签包围的就是切换名称对应的内容,顺序和名称的一样至此全部修改完成其实就是在总类增加个菜单,底部是<blockquote> 调用【ECSHOP开发中心】。
ecshop商品详情页添加任意字段的方法

ecshop商品详情页添加任意字段的方法一、在数据库添加字段,会手写的就后台添加,不会就进入phpmyadmin默认的就行。
这是通用的写法ALTER TABLE `kbt_goods` ADD `goods_gift` VARCHAR( 500 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `is_check` ;表名做下修改即可。
二、修改admin/good.php找到/* 处理商品数据 */$shop_price = !empty($_POST['shop_price']) ? $_POST['shop_price'] : 0;后面依葫芦画瓢添加近自己字段。
找到/* 入库 */if ($is_insert){if ($code == '')同样依葫芦画瓢添加近自己字段,找到"goods_gift = '$goods_gift'," .同样依葫芦画瓢添加近自己字段。
三、修改admin/templates/goods_info.htm在合适的地方添加,如果想在编辑商品—其他信息处添加,找到{if $code eq ''}{$b_goods_gift}{/if}添加{$b_goods_sz}四、修改模板在合适的地方添加:如果想在商品重量下添加查找{$goods.goods_weight}在下面添加{$lang.goods_sz}{$goods.goods_sz}自己修改相应字段。
五、基本到位,下面就是修改下语言项,不想修改也可以,将{$lang.goods_sz}、{$b_goods_sz}改成自己需要的个汉字即可。
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电子商务平台(网上商城)功能介绍

电子商务平台(网上商城)系统特色功能介绍目录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。
配件112。
4。
3.关联文章112。
4。
4.购买过该商品的人还买过的商品112.5。
RSS Feeds和T ag (11)3. 购物流程 (12)3.1。
智能化的购物流程 (12)3.2. 聪明的配送方式 (13)4。
推广促销 (13)4.1. 拍卖 (13)4。
2. 夺宝奇兵 (14)4。
3。
团购144。
4. 灵活多样的优惠活动 (14)4。
5。
推荐提成154。
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)三层架构设计,从根本上保证了系统的健壮性与可扩展性。
图表错误!未定义书签。
1.2.开放的插件机制对于电子商务网站来说支付与配送是业务流程中至关重要的一个环节,也正是网上支付与各物流公司的兴起促使了电子商务快速的发展.抛弃了传统的固定公式,由用户来设置各种参数的方式,而是采用了一个开放式的插件机制来管理各种支付和配送方式。
对于网上商店网站的站长来说,建立一个社区是一种提高网店的用户黏度的有效手段,这样也就带来了一个问题,如何将社区的用户与网店的用户进行整合.对于会员数据的整合也采用了插件的形式,目前提供的插件已经基本覆盖了国内流行的各种基于MySQL数据库的社区系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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、在后台商品管理下的商品类型里面,先添加您的一个商品类型,比如包包,然后给这个类型添加可能出现的所有属性,比如,颜色和尺寸(需要客户购买时候选择的属性,添加的时候要选择单选属性,然后值选择从列表里面选择),然后把所以可能用到的颜色和尺寸添加到列表里面。