ecshop 的一些常用操作
ecshop商品详细页显示已售商品数量和评论数量
ecshop增加已售数量和评论数量很简单,步骤如下,原创文章转载请指明同盟者网络<http://blog.sina.com.cn/tomener>
1.在ecshop程序goods.php页面最下面加入这两个函数
function get_buy_sum($goods_id)
{
$sql = 'SELECT IFNULL(SUM(g.goods_number), 0) ' .
'FROM ' . $GLOBALS['ecs']->table('order_info') . ' AS o, ' .
$GLOBALS['ecs']->table('order_goods') . ' AS g ' .
"WHERE o.order_id = g.order_id " .
"AND o.order_status = '" . OS_CONFIRMED . "' " .
"AND o.shipping_status " . db_create_in(array(SS_SHIPPED, SS_RECEIVED)) .
" AND o.pay_status " . db_create_in(array(PS_PAYED, PS_PAYING)) .
" AND g.goods_id = '$goods_id'";
return $GLOBALS['db']->getOne($sql);
} function get_comment_num($goods_id) {
$sql= "select count(*) from ".$GLOBALS['ecs']->table('comment')." where id_value='".$goods_id."' AND status = 1";
return $GLOBALS['db']->getOne($sql);
} 2.在ecshop程序goods.php中加入 $smarty->assign('buy_num',get_buy_sum($goods_id)); $smarty->assign('comment_num',get_comment_num($goods_id)); 在$smarty->display('goods.dwt', $cache_id);之前哈! 3.ecshop中goods.dwt模板中加这个,大概在221行
<!-- {if $buy_num} 已出售量-->
<li class="clearfix">
<dd>
<strong>累计售出:</strong>{$buy_num}
</dd>
</li>
<!--{/if}-->
<!-- {if $comment_num} 评论数量-->
<li class="clearfix">
<dd>
<strong>评论数量:</strong><a href="#comment">{$comment_num}</a>
</dd>
</li>
<!--{/if}-->
调用商品购买记录
1.在lib_insert.php文件中加入以下函数
/**
* 调用商品购买记录
*
* @access public
* @return string
*/
function insert_bought_count($arr)
{
$sql = 'SELECT count(*) ' .
'FROM ' . $GLOBALS['ecs']->table('order_info') . ' AS oi LEFT JOIN ' . $GLOBALS['ecs']->table('users') . ' AS u ON oi.user_id = u.user_id, ' . $GLOBALS['ecs']->table('order_goods') . ' AS og ' .
'WHERE oi.order_id = og.order_id AND ' . time() . ' - oi.add_time < 2592000 AND og.goods_id = ' . $arr['id'];
$count = $GLOBALS['db']->getOne($sql);
return $count;
} 2.模板中调用
{insert name=bought_count type=$type id=$goods.goods_id}
ecshop生成纯静态页面
ecshop生成纯静态页面浅见 纯静态页面具有占用资源小,速度快的特点。一直广受广大站长的喜欢。目前的ecshop只有伪静态,是否可以为ecshop增加伪静态呢? 建议配上ec伪静态使用,这样只要客户点击一次系统就自动生成一个静态页面,不需要后台批量生成了。 1、includes 目录cls_template.php.增加 /*生成纯静态*/ ?[Copy to clipboard] PHP1
2
3
4
5
6
7
8
function make_html($filename, $cache_id = '')
{
ob_start();
$this->display($filename,$cache_id);
$out = ob_get_contents();
ob_end_clean();
return $out;
} 2.复制首页index.php为index_html.php,因为ECSHOP是使用SMARTY模板引擎的,所以我们可以使用SMARTY生成文件函数,把模板的静态网页输出。 在首页中,$smarty->display(‘index.dwt’, $cache_id);有这一句,说明是把网页显示出来,现在我们把它改成如下代码(参看注释) $file = ‘index.html’;//静态网页文件名
$content = $GLOBALS['smarty']->make_html(‘index.dwt’);//根据index.dwt模板生成网页内容
$filename = ROOT_PATH . $file;//静态网页路径
file_put_contents($filename, $content);//生成文件 其他也没类似,希望大家可以举一反三。 以上几条简单的语句,我们就可以生成首页的静态网页。同理,我们可以生成产品类别和产品的静态网页,整个系统的静态化就完成了。
让ECSHOP生成静态页面的方法!
伪静态已经基本上可以满足大部分人的需求,如果不满足的还可以根据前面的一篇文章对重写规则进行修改,以满足自己的需求。但是本文所要描述的是,根据ECSHOP内在的一些代码,我们生成纯静态的网页,使系统更好的优化。在这里,我们先对首页进行纯静态生成。
1.复制首页index.php为index_html.php,因为ECSHOP是使用SMARTY模板引擎的,所以我们可以使用SMARTY生成文件函数,把模板
的静态网页输出。
在首页中,$smarty->display('index.dwt', $cache_id);有这一句,说明是把网页显示出来,现在我们把它改成如下代码(参看注释) $file = 'index.html';//静态网页文件名
$content = $GLOBALS['smarty']->make_html('index.dwt');//根据index.dwt模板生成网页内容
$filename = ROOT_PATH . $file;//静态网页路径
file_put_contents($filename, $content);//生成文件
以上几条简单的语句,我们就可以生成首页的静态网页。同理,我们可以生成产品类别和产品的静态网页,整个系统的静态化就完成了。 首页静态页面生成后,我们接下来要生成的是产品类别的静态页面,我的想法是把产品类别页面保存在跟目录下,这样虽然会比较乱,
但是比较适合优化,因为一般搜索引擎抓取的时候只抓取二到三层。把产品类别放在根目录,体现产品类别的重要性,易于搜索引擎的 内容来自LZ工作室
抓取,另外一方面,我们可以把产品放在下个目录中。
类似代码:
$filename = build_uri('category', array('cid' => $catinfo['cat_id']));//构造路径,这个可以选择自己喜欢的构造方法
$content = $GLOBALS['smarty']->make_html('category.dwt');//产生静态页面内容
$filename = ROOT_PATH . $filename;//生成文件路径,在根目录下
file_put_contents($filename, $content);//输出
产品的静态页面代码:
$goodinfo = get_all_goodsinfo($goods_id);
$cat_name = $goodinfo['cat_name'];
$goodsfile = build_uri('goods', array('gid' => $goods_id));
$content = $GLOBALS['smarty']->make_html('goods.dwt');
$html_tempdir = (ROOT_PATH.$cat_name.'/');
if (!is_dir($html_tempdir))//生成产品目录
{
mkdir($html_tempdir);
}
$htmlfilename = ROOT_PATH . $goodsfile; file_put_contents($htmlfilename,$content);
我的是使用类别名称加下划线:
function build_uri(........)
................
case 'category':
$cat_name = $GLOBALS['db']->getOne('SELECT cat_name FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cid'");
$uri = $cat_name . '-' . $cid;
if (!empty($page))
{
$uri .= '-' . $page;
}
........
case 'goods':
$goods_info = $GLOBALS['db']->getRow('SELECT g.goods_name, c.cat_name FROM ' . $GLOBALS['ecs']->table('goods') . " as g left join " .
$GLOBALS['ecs']->table('category') . " as c on c.cat_id = g.cat_id WHERE g.goods_id = '$gid'");
$goods_name = $goods_info['goods_name'];
$cat_name = $cat_name; $uri = $cat_name . '/' . $goods_name . '-' . $gid ; 有人问 make_html 这个函数在那里: 我现在补充如下: 在 includes 下的 cls_template.php 加上
function make_html($filename, $cache_id = '')
{
ob_start();
$this->display($filename,$cache_id);
$out = ob_get_contents();
ob_end_clean();
return $out; }
ECSHOP模板制作中常见循环的操作方法
ECSHOP一直用的FCK,这个不解释,太多杯具太多纠结。 ---------------------
KindEdito主要特点
快速:体积小,加载速度快
开源:开放源代码,高水平,高品质
底层:内置自定义 DOM 类库,精确操作 DOM
扩展:基于插件的设计,所有功能都是插件,可根据需求增减功能
风格:修改编辑器风格非常容易,只需修改一个 CSS 文件
兼容:支持大部分主流浏览器,比如 IE、Firefox、Safari、Chrome、Opera
---------------------
官方下载最新版,解压直接扔在根目录算了,现在拿编辑产品信息开刀,模板页面?这个不用说了吧(admin/templates/goods_info.html).
1.在head部分添加: <script charset=”utf-8″ src=”../kindeditor/kindeditor.js”></script>
<script>
KE.show({
id : ‘editor_id’,
allowFileManager : true });
</script> 2.修改产品描述所调用的FCK编辑器 {$FCKeditor} 为
<textarea id=”editor_id” name=”goods_desc” style=”width:90%;height:300px;”>
{$goods.goods_desc}
</textarea> OK,至此结束,看看效果吧!
Ecshop在模板中判断用户是否登陆,获取用户等级信息
Ecshop在模板中判断用户是否登陆,获取用户等级信息 ecshop模板中smarty怎样判断用户等级、用户id、用户昵称用户名,请看以下方法,使用全局变量 <!-- {if $smarty.session.user_rank gt 1}-->gt大于 lt小于
1:ecshop模板中调用session的值
{$smarty.session.user_id} 用户ID
{$smarty.session.user_rank} 用户等级
2:ecshop模板中调用cookie的值
{$smarty.cookie.user_id}
3:ecshop模板中调用当前时间
{$smarty.now}
4:ecshop模板中调用调用$_GET里面的数据
{$smarty.get}
5:调用模板中调用调用$_POST里面的数据
{$smarty.post}
6:在ecshop模板中调用cookie
{$smarty.cookie.name}
7:在ecshop的smarty中调用$_SERVER的值
{$smarty.server}
8:在ecshop中进行一些foreach的取值和判断
{$smarty.foreach.iteration.first}判断是否第一条数据
{$smarty.foreach.iteration.last} 最后一条数据
9:在ecshop模板中取得$_REQUEST的值
{$smarty.request.name}
ecshop标签大全
先从index.php主页开始
页面关键字 {$keywords }
页面标题 {$page_title}
产品分类
父分类列表 {foreach from$categories item=cat }
父分类超链接 [url==”{$cat.url}”>{$cat.name|escape:html}</a>
相对应子分类 {foreach from=$cat.children item=child}
子分类超链接 [url==”{$child.url}”>{$child.name|escape:html}</a>
促销产品 {if $promotion_info} 检验是否存在促销产品,不存在就不显示相关信息
促销产品列表 {foreach from=$promotion_info item=item key=key}
里面还有很多标签,没弄明白,以后在添加,修改
订单查询 {if empty($order_query)} 同上看下就知道了
订单用户ID {if $order_query.user_id}
订单数量 {$lang.order_number}
订单编号 {$order_query.order_sn}
里面还有很多标签,没弄明白,以后在添加,修改
发货查询 {if $invoice_list} 当有完成的订单测显示
发货列表 {foreach from=$invoice_list item=invoice}
订单号名称 {$lang.order_number}
订单号 {$invoice.order_sn}
发货单名称 {$lang.consignment}
发货单号 {$invoice.invoice_no}
销售排行 {if $top_goods} 看看就知道
销售列表 {foreach name=top_goods from=$top_goods item=goods}
产品短名称 {$goods.short_name}
看例子:
<!- {foreach name=top_goods from=$top_goods item=goods}->
<li class=”top10-li-{$smarty.foreach.top_goods.iteration}”> [url==”{$goods.url}” title=”{$goods.name|escape:html}”>{$goods.short_name}</a></li>
<!-{/foreach}-> 精品推荐 {if $best_goods} 看看就知道
精品推荐列表 {foreach from=$best_goods item=goods}
市场价名称 {$lang.market_price}
市场价价格 {$goods.market_price}
促销价名称 {$lang.promote_price}
促销价价格 {$goods.promote_price}
商店价名称 {$lang.shop_price}
商店价价格 {$goods.shop_price}
大家看到了吗??{$lang.xxxx_xxxx}以lang开头的为相对应的名称
{$goods.xxxx_xxxx}以goods开头的为价格
{$page_title} 网站标题
{$keywords} 网站关键字标签
{$description} 网站描述标签
{$shop_notice} 商店公告
$new_articles 新文章{$article.short_title} 调用文章标题
{foreach from=$new_articles item=article} 循环的开始,
{/foreach} 循环的结束
item --> 具体意义和用法?
表格一行一行的循环
<table>
{foreach from=$new_articles item=article}
<tr><td>
{$article.short_title}
</td></td>
{/foreach}
</table>
from=$best_goods 表示循环的内容来自$best_goods
$best_goods 精品商品推荐的标签
{$goods.short_style_name} 表示goods 这个对象的商品名称
$new_goods 新品上市
$hot_goods 热卖商品
$categories 分类的标签
$goods_list 商品标签
商品图片: <img src= {$goods.goods_img} />
商品名称:{$goods.goods_style_name}
商品货号:{$goods.goods_sn}<br>
商品品牌: {$goods.goods_brand}
商品数量:{$goods.goods_number}
单位:{$goods.measure_unit}
添加时间:{$goods.add_time}
市场价格:{$goods.market_price}
本店价格:{$goods.shop_price_formated}
注册用户价格:{$rank_price.price}
注册用户价格:{$rank_price.price}
注册用户价格:{$rank_price.price}
商品id为1的商品
<http://localhost/ecshop/goods.php?id=1> 邮件模板管理
商城在进行某些操作时可以向用户发送邮件提示。在本页你可以定制自己个性化的邮件的模板。邮件主题为发送邮件的标题。邮件模板中有可以替换的内容都用{$_var}方式表示。以下将解释所有变量含义。
公共变量
{$shop_name}
网店名称
{$sent_date}
邮件发送时间
发送密码模板变量
{$user_name}
注册帐号名
{$password}
网店为用户生成的新密码
订单确认模板变量
{$order.consignee}
订单收货人姓名
{$order.order_time}
订单生成时间
{$order.order_sn}
订单序号
发货通知模板变量
{$order.consignee}
收货人姓名
{$order.shipping_time}
发货时间
{$confirm_url}
确认收货的链接地址
订单取消模板变量
{$order.consignee}
收货人姓名
{$order.order_sn}
订单序号
订单无效模板变量
{$order.consignee}
收货人姓名
{$order.order_sn}
订单序号
发送红包模板变量
{$user_name}
用户注册名
{$count}
红包个数
{$money}
红包个数金额 商品关键字
{$keyword} 商品描述
{$description} 商店标题
{$page_title} 商店公告
{$shop_notice} 文章列表
<ul>
{foreach from=$new_articles item=article}
<li>{$article.short_title}//文章标题</li>
{/foreach}
</ul> 精品推荐商品列表
<ul>
{foreach from=$best_goods item=goods}
<li><a href="{$goods.url}//商品url">{$goods.short_name}//商品名称</a></li>
{/foreach}
</ul> 热销商品
<ul>
{foreach from=$hot_goods item=hot}
<li><a href="{$hot.url}//商品url"><img src="{$hot.thumb}//商品缩略图"><br />{$hot.short_style_name}//商品名称</a></li>
{/foreach}
</ul> 商品上市
<ul>
{foreach from=$new_goods item=new}
<li><a href="{$new.url}//商品url"><img src="{$new.thumb}//商品缩略图"><br />{$new.short_style_name//商品名称}</a></li>
{/foreach}
</ul> 分类列表/所有分类
{foreach from=$categories item=cat}
<dl>
<dt><a href="{$cat.url}//分类url">{$cat.name|escape:html}//分类名称</a></dt>
{foreach from=$cat.cat_id item=child}
<dd>
<a href="{$child.url}//子分类url">{$child.name|escape:html}//子分类名称</a>
<ul>
{foreach from=$child.cat_id item=childer}
<li><a href="{$childer.url}//子子分类url">{$childer.name|escape:html}//子子分类名称</a></li>
{/foreach}
</ul>
</dd>
{/foreach}
</dl>
{/foreach} 调用includes/lib_insert.php文件中的insert_cart_info函数,获取购物后结算信息
{insert name='cart_info'} 销售排行
{foreach name=top_goods from=$top_goods item=top}
<ul>
<img src="../images/top_{$smarty.foreach.top_goods.iteration}.gif" class="iteration">
//iteration:smarty自带的循环次数 表示方法:$smarty.foreach.name.iteration
{if $smarty.foreach.top_goods.iteration<4}
<li class="topimg"><a href="{$top.url}//商品url"><img src="{$top.thumb}//商品缩略图" alt="{$top.name|escape:html}//商品名称"></a></li>
{/if}
<li {if $smarty.foreach.top_goods.iteration<4}class="iteration1"{/if}>
<a href="{$top.url}//商品url"><img src="{$top.thumb}//商品缩略图" title="{$top.name|escape:html}//商品名称">{$top.short_name}//商品名称</a>
{$lang.shop_rice}{$top.price}//商品价格
</li>
</ul>
{/foreach} 促销活动/优惠活动
{if $promotion_info}
<h3>{$lang.promotion_info}</h3>
{foreach from=$promotion_info item=item key=key}
{if $item.type eq "snatch"}//如果为夺宝奇兵
<a href="snatch.php" title="{$lang.$item.type}//活动类型">{$lang.snatch_promotion}</a>
{elseif $item.type eq "group_buy"}//如果为团购
<a href="group_buy.php" title="{$lang.$item.type}//活动类型">{$lang.group_promotion}</a>
{elseif $item.type eq "auction"} //如果为拍卖
<a href="auction.php" title="{$lang.$item.type}//活动类型">{$lang.auction}</a>
{elseif $item.type eq "favourable"} //如果为优惠活动
<a href="favourable.php" title="{$lang.$item.type}//活动类型">{$lang.favourable}</a>
{elseif $item.type eq "package"} //如果为礼包
<a href="package.php" title="{$lang.$item.type}//活动类型">{$lang.package}</a>
{/if}
<a href="{$item.url}//活动url" title="{$lang.$item.type}{$item.act_name}{$item.time}//活动名称及活动时间">{$item.act_name}//活动名称</a>
{/foreach}
{/if}
ECSHOP,获取当前分类下的品牌,大多数网站都有这功能,比如天猫
今天研究了下,不知道这种方法可行不,反正目前效果是对的。
直接在原函数上改的,如果需要的话,可以自己重新个函数
在lib_common.php里找到function get_brands
在sql语句里加个参数$sql = "SELECT b.brand_id,变成这样
$sql = "SELECT g.cat_id,b.brand_id,
然后完事.在页面的时候,是在分类下嵌套的brand_list
以下代码要放到分类foreach里。就是判断得到的品牌中的商品的分类的ID和当前分类的ID是否一致,一致就显示。
<!-- {if $brand_list} -->
<!-- {foreach from=$brand_list item=brand} -->
<!-- {if $brand.cat_id == $cat.id} -->
<a href="{$brand.url}">{$brand.brand_name|escape:html} {if $brand.goods_num}({$brand.goods_num}){/if}</a>
<!-- {/if} -->
<!-- {/foreach} -->
<!-- {/if} --> 希望大神看下有没有BUG
ecshop首页获取分类下的品牌列表
<?php
/**
* 获得某个分类下的品牌 列表
*
* @access public
* @param int $cat
* @return array
*/
function get_cat_brands($cat = 0, $app = 'category')
{
$children = ($cat > 0) ? ' AND ' . get_children($cat) : '';
$sql = "SELECT b.brand_id, b.brand_name, b.brand_logo, COUNT(g.goods_id) AS goods_num, IF(b.brand_logo > '', '1', '0') AS tag ".
"FROM " . $GLOBALS['ecs']->table('brand') . "AS b, ".
$GLOBALS['ecs']->table('goods') . " AS g ".
"WHERE g.brand_id = b.brand_id $children " .
"GROUP BY b.brand_id HAVING goods_num > 0 ORDER BY tag DESC, b.sort_order ASC";
$row = $GLOBALS['db']->getAll($sql);
foreach ($row AS $key => $val)
{
$row[$key]['url'] = build_uri($app, array('cid' => $cat, 'bid' => $val['brand_id']), $val['brand_name']);
} return $row; }
?>
ECSHOP商品页调用该商品评论数量方法
熟悉ECSHOP的都知道,ECSHOP使用了缓存机制,所以为了能即时的反映最新的评论数,本方法使用的是 insert 函数形式,这样做的好处是能自动显示最新的评论数,而不需要经常去清除缓存。 下面是具体方法: 首先打开 includes/lib_insert.php 文件,在最下面增加一个函数(注意别加在 “?>”外面 ) /**
*
*调用用户评论
*
*/
function insert_comments_count($arr)
{
/*取得评论条数*/
$count=$GLOBALS['db']->getOne('select count(*) from'.
$GLOBALS['ecs']->table('comment').
"where id_value='$arr[id]' AND comment_type='$arr[type]'AND status=1 and parent_id=0");
return $count;
} 然后再修改商品详情模板文件 themes/default/goods.dwt 在你想显示评论数量的地方加入下面代码 评论数量:{insert name=comments_count type=$type id=$id}
或者{insert name=comments_count type=$type id=$goods.id} 至此,大功告成
ecshop 评价仿京东仿淘宝 中评率 好评率 差评率
1.在goods.php中添加
//中差评
$sql="select * from ".$ecs->table('comment')." where comment_type=0 and status=1 and comment_rank!=0 and id_value=$goods_id";
$comments=$db->getall($sql);
$count=count($comments);
$zhonghao='';
$zhonghaoimg='';
$hao=0;
$zhong=0;
$cha=0;
$haol='';
$zhongl='';
$chal='';
foreach($comments as $value){ if($value['comment_rank'] == 1){
$cha=$cha+1;
} if($value['comment_rank'] == 2 or $value['comment_rank'] == 3 or $value['comment_rank'] == 4){
$zhong=$zhong+1;
} if($value['comment_rank'] == 5){
$hao=$hao+1;
} } $smarty->assign('zhonghao', round($hao/$count*100,0));
$smarty->assign('count', $count);
$smarty->assign('zhong', round($zhong/$count*100,0));
$smarty->assign('cha', round($cha/$count*100,0));
$smarty->assign('haol', round($hao/$count*100/100*143,0));
$smarty->assign('zhongl', round($zhong/$count*100/100*143,0));
$smarty->assign('chal', round($cha/$count*100/100*143,0));
$smarty->assign('zhonghaoimg', round($hao*5/$count,0)); 接下来就是在模板中调用 这些就可以了 $smarty->assign('haol', round($hao/$count*100/100*143,0)); 这里面的 143 是那个评价进度条的总长度 ecshop二次开发 联系QQ 1595192997
ecshop首页显示的价格,改为登录查看
在index.dwt中找到<!-- {if $goods.promote_price neq ""} -->
{$lang.market_price}
<span class="market-price">{$goods.market_price}</span><br />
{$lang.promote_price}
<span class="goods-price">{$goods.promote_price}</span><br />
<!--{else}-->
{$lang.market_price}
<span class="market-price">{$goods.market_price}</span><br />
{$lang.shop_price}
<span class="goods-price">{$goods.shop_price}</span>
<!--{/if}--> ad:ecshop模板改为: <!--如果会员登陆了{if $smarty.session.user_name}-->
<!-- {if $goods.promote_price neq ""} -->
{$lang.market_price}
<span class="market-price">{$goods.market_price}</span><br />
{$lang.promote_price}
<span class="goods-price">{$goods.promote_price}</span><br />
<!--{else}-->
{$lang.market_price}
<span class="market-price">{$goods.market_price}</span><br />
{$lang.shop_price}
<span class="goods-price">{$goods.shop_price}</span>
<!--{/if}--> <!--如果没登陆{else}--> 商品价格:<span class="goods-price">请登陆后查看</span>
<!--{/if}-->
获取商品好评率
1.在lib_insert.php里面增加以下函数
/**
*
*获取好评率
*
*/
function insert_comments_rank($arr)
{
/*取得评论条数*/
$count=$GLOBALS['db']->getOne('select count(*) from'.
$GLOBALS['ecs']->table('comment').
"where id_value='$arr[id]' AND comment_type='$arr[type]'AND status=1 and parent_id=0"); /*取得评论条数*/
$count_rank=$GLOBALS['db']->getOne('select count(*) from'.
$GLOBALS['ecs']->table('comment').
"where id_value='$arr[id]' AND comment_type='$arr[type]'AND status=1 and parent_id=0 and comment_rank=5");
if($count==0)
$comments_rank=0;
else
$comments_rank=round($count_rank/$count,3)*100;
return $comments_rank;
} 2.模板调用
{insert name=comments_rank type=$type id=$goods.id}%
或者
{insert name=comments_rank type=$type id=$id}%
首页调用商品好评率
1.在lib_insert.php中加入如下函数
/**
*
*获取好评率
*
*/
function insert_comments_rank($arr)
{
/*取得评论条数*/
$count=$GLOBALS['db']->getOne('select count(*) from'.
$GLOBALS['ecs']->table('comment').
"where id_value='$arr[id]' AND comment_type='$arr[type]'AND status=1 and parent_id=0"); /*取得评论条数*/
$count_rank=$GLOBALS['db']->getOne('select count(*) from'.
$GLOBALS['ecs']->table('comment').
"where id_value='$arr[id]' AND comment_type='$arr[type]'AND status=1 and parent_id=0 and comment_rank=5");
if($count==0)
$comments_rank=100;
else
$comments_rank=round($count_rank/$count,3)*100;
return $comments_rank;
} 2.在模板中加入
{insert name=comments_rank type=$type id=$goods.goods_id}或
{insert name=comments_rank type=$type id=$goods.id}
首页获取好评
在首页调用用户好评
/**
* 获得最新的评论列表。
*
* @access private
* @return array
*/
function get_mycomments($num)
{
$sql = 'SELECT id_value, user_name, content, add_time, comment_rank FROM ' . $GLOBALS['ecs']->table('comment') . ' WHERE comment_rank = 5 AND status = 1 ORDER BY comment_id DESC LIMIT 5'; if ($num > 0) $res = $GLOBALS['db']->getAll($sql);
$comments = array();
foreach ($res AS $idx => $row)
{ $comments[$idx]['user_name'] = $row['user_name'];
$comments[$idx]['content'] = $row['content'];
$comments[$idx]['id_value'] = $row['id_value'];
$comments[$idx]['add_time'] = date('Y年m月d日', $row['add_time']);
$comments[$idx]['comment_rank'] = $row['comment_rank']; }
return $comments;
} 这样是调出 5 星的 那么我想再调用综合评分 得怎么改呢?
我贴出来的就可以在首页显示了 加在INDEX.PHP里 <!--{foreach from=$my_comments item=comments}-->
<li>{$comments.add_time} <a href="goods.php?id={$comments.id_value}&lmtrk=ad%3D991">{$comments.content|truncate:25:""}</a></li> 这个是调用
$smarty->assign('my_comments', get_mycomments(5)); // ‘5’代表首页显示5条评论
加在129行上面
首页获取评论列表
1.在index.php中找到
$smarty->assign('shop_notice', $_CFG['shop_notice']); // 商店公告
下添加
$smarty->assign('my_comments', get_comments(10)); //评论添加 2.在index.php最后添加
function get_comments($num)
{
$sql = 'SELECT * FROM '. $GLOBALS['ecs']->table('comment') .
' WHERE status = 1 AND parent_id = 0 and comment_type=0 '.
' ORDER BY add_time DESC';
if ($num > 0)
{
$sql .= ' LIMIT ' . $num;
}
//echo $sql;
$res = $GLOBALS['db']->getAll($sql);
$comments = array();
foreach ($res AS $idx => $row)
{
$comments[$idx]['add_time'] = $comments[$idx]['add_time'] = local_date
($GLOBALS['_CFG']['time_format'], $row['add_time']);
$comments[$idx]['user_name'] = $row['user_name'];
$comments[$idx]['content'] = $row['content'];
$comments[$idx]['id_value'] = $row['id_value'];
}
return $comments;
} 3.模板调用
<!--{foreach from=$my_comments item=comments}-->
<li class=""><em>1</em>
<a href="goods.php?id={$comments.id_value}" target="_blank">{$comments.content|truncate:15:""}</a>
{$comments.add_time}
</li>
<!--{/foreach}-->
ECSHOP的lbi库文件中添加广告位的方法
一般的广告位是写在dwt文件里的。 也有人希望能直接写在lbi文件里。其实也很简单,看一下操作方法: 先进入ECSHOP后台,在后台发布好广告位和广告,记住这个广告位的ID,这里暂时假设该ID为2 然后修改 lbi 文件 在想显示广告位的地方加入下面代码即可, {insert name='ads' id=2 num=1} 注意:代码里面的id一定要是相对应的广告的ID
ecshop 如何调整商品属性筛选项的显示顺序
ecshop 如何调整商品属性筛选项的显示顺序?
如何调整商品属性筛选项的显示顺序?
也就是这个问题 http://bbs.ecshop.com/thread-99839-1-1.html
如何调整商品属性筛选项的显示顺序? 比如说属性筛选显示为: 品牌
价格
重量:9KG ,6KG, 8KG, 18KG 如何调整为 重量:6KG ,8KG, 9KG, 18KG 解决方案:在网上找了几天,没发现有啥好方法。我最后使用了一招,可以轻松搞定,只是以后维护起来比较麻烦点。 思路:在页面上写死了属性各个值的顺序,添加链接即可。 操作:在原来的页面右击查看源代码,你可以看到源代码,将需要的代码复制,然后修改category.dwt. 代码如下: <!--{foreach from=$filter_attr_list item=filter_attr}--> <!-- {if $filter_attr.filter_attr_name=='摄像头像素'} --> <!--start:摄像头像素--> <dl class="cls"> <dt>摄像头像素:</dt> <dd> <ul class="cls"> <li><a href="#">全部</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.6316.0">130万以下</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.7402.0">130万</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.1020.0">200万</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.410.0">300万</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.1101.0">320万</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.391.0">500万</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.452.0">800万</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.10851.0">900万</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.10862.0">1000万</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.478.0">1200万</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.5355.0">1300万</a></li> </ul> </dd> </dl> <!--end:摄像头像素--> <!-- {elseif $filter_attr.filter_attr_name=='价格区间'} --> <dl class="cls"> <dt>价格区间:</dt> <dd> <ul class="cls"> <li><a href="#">全部</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.10851.6293">0-500</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.10851.6294">500-1000</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.10851.6394">1000-1500</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.10851.6252">1500-2000</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.10851.6118">2000-3000</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.10851.7546">3000-4000</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.10851.6120">4000-5000</a></li> <li> <a href="category.php?id=1&price_min=0&price_max=0&filter_attr=0.0.10851.6119">5000以上</a></li> </ul> </dd> </dl> <!-- {else} --> <dl class="cls">
ECSHOP 首页显示某些分类的推荐商品
ECSHOP 首页显示某些分类的推荐商品 如果要在首页显示“指定分类下的商品”可以通过后台的“设置模板 ”->“[+] 分类下的商品”进行设置,
但要在首页显示“指定分类下的精品”的话,简单修改模板或者后台设置是实现不了的。 “设置模板 ”->“[+] 分类下的商品”的实现是通过function assign_cat_goods($cat_id, $num = 0, $from = 'web')实现的 ecshop中首页显示的商品是“精品/新品/热销/促销”四类,也可以通过tag方式显示指定分类下的推荐商品,但是在点击tag后通过ajax读取的,不能直接显示。 如果要在首页上直接显示, 方案一:修改模板--在页面onload后,通过ajax读取,如果网络或服务器慢,一开始会显示空白,用户体验较差 方案二:修改index.php,第一次加载就把特定目录的推荐商品smarty->assign到指定变量中。版本升级的时候要注意。 方案二实现: 步骤一:
在index.php中找到:
assign_dynamic('index');
}
$smarty->assign('show_marketprice', $_CFG['show_marketprice']);
$smarty->display('index.dwt', $cache_id); 在其前面加上对应代码,成为: /*二次开发,添加三个推荐专区*/
$my_cat_rec_goods=array();
$my_cat_rec_goods[2]=get_category_recommend_goods('best', get_children(2));
$my_cat_rec_goods[253]=get_category_recommend_goods('best',get_children(253));
$my_cat_rec_goods[5]=get_category_recommend_goods('best', get_children(5));
$smarty->assign('my_cat_rec_goods', $my_cat_rec_goods); assign_dynamic('index');
}
$smarty->assign('show_marketprice', $_CFG['show_marketprice']);
$smarty->display('index.dwt', $cache_id); 步骤二:
在模板相应位置加上:
<!-- {if $my_cat_rec_goods[2]} --> <!--{foreach from=$my_cat_rec_goods[2] item=goods}-->
abc
<!--{/foreach}--> <!-- {/if} --> 如果其他页面需要这个功能,只要该页面包含lib_common.php 和lib_goods.php即可使用,因为
这用到两个函数get_children和get_category_recommend_goods ECSHOP首页调用某个分类下的商品 2011-01-30 15:33:47| 分类: ECSHOP | 标签:调用 goods 分类 商品 ecshop |字号大
中
小 订阅
调用某个分类下的商品,方法有很多种的,不过都需要先在后台设置模板那里设置显示和显示条数,
然后在需要调用的模板里放上相应的代码即可:
1、比如:
<?php $this->assign(’cat_goods’,$this->_var['cat_goods_15']); ?>
<?php $this->assign(’goods_cat’,$this->_var['goods_cat_15']); ?>
<?php echo $this->fetch(’library/cat_goods.lbi’); ?> 上面的15就是某个要调用的栏目ID值.把它改成其他你要调用的分类ID值即可. 2、这是第二种:
<!-{foreach from=$cat_goods_14 item=goods}->
<div class=”xgoods”>
<div class=”img”><a href=”{$goods.url}” target=”_blank”><img src=”{$goods.thumb}” alt=”{$goods.name|escape:html}” width=”67″ height=”56″ border=”0″ class=”imgb”/></a></div>
<div class=”name”><a href=”{$goods.url}” target=”_blank”>{$goods.short_name|escape:html|truncate:10}</a><br />
<span class=”fontr fontb fontbig”>{$goods.shop_price}</span></div>
</div>
<!-{/foreach}-> 说明:上面的$cat_goods_14 ,其中14就是你想要调用的栏目ID值,把它改成你要调用的栏目ID值即可。 3、第三种:先在要调用的模板里设置区域,比如:
<!- TemplateBeginEditable name=”某分类区域” -><!- TemplateEndEditable ->
然后在后台设置模板那里增加分类显示时选此区域即可。
ecshop商品分类页、商品内容页显示所有商品分类
方法很简单:
category.php 里找到 get_categories_tree($cat_id)) 改成 get_categories_tree(0)) 约322行 goods.php 里找到 get_categories_tree($goods['cat_id'])) 改成 get_categories_tree(0)) 约180行 这样无论在哪一级目录都会完整显示所有分类
在ECSHOP首页显示积分商城里的商品
今日看到论坛里有些朋友在讨论“如何在首页调用积分商城里的商品”,
也有一些朋友已经写出了大部分代码,但是由于个别错误,未能实现。
下面就以ECSHOP2.7.2官方默认模板为基础,给大家提供一个完整的解决方案。
(本教程由ECSHOP120(www.ecshop120.com)提供,如要转载,请注明出处)
1)、
首先打开 index.php 文件
在最末尾增加下面函数,注意千万不要写到 “?>” 的外面去,要加在“?>”的前面。 /**
* 获得积分商城热门商品
*
* @param int $limit 列出条数
* @param int $ishot 是否只显示热销
* @return array
*/
function index_get_exchange($limit=3,$ishot=0)
{
/* 获得热门积分商品列表 */
$sql_ishot=$ishot ? " AND eg.is_hot=1 " : "";
$sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style, eg.exchange_integral, ' .
' g.goods_type,g.goods_brief, g.goods_thumb, g.goods_img, eg.is_hot ' .
' FROM ' . $GLOBALS['ecs']->table('exchange_goods') . ' AS eg LEFT JOIN ' . $GLOBALS['ecs']->table('goods') . ' AS g ON g.goods_id = eg.goods_id ' .
' WHERE eg.is_exchange = 1 AND g.is_delete = 0 '. $sql_ishot .' limit '.$limit;
$res = $GLOBALS['db']->getAll($sql);
$arr = array();
foreach($res AS $idx => $row)
{
$arr[$idx]['name'] = $row['goods_name'];
$arr[$idx]['goods_brief'] = $row['goods_brief'];
$arr[$idx]['goods_style_name'] = add_style($row['goods_name'],$row['goods_name_style']);
$arr[$idx]['exchange_integral'] = $row['exchange_integral'];
$arr[$idx]['type'] = $row['goods_type'];
$arr[$idx]['goods_thumb'] = get_image_path($row['goods_id'], $row['goods_thumb'], true);
$arr[$idx]['goods_img'] = get_image_path($row['goods_id'], $row['goods_img']);
$arr[$idx]['url'] = build_uri('exchange_goods', array('gid'=>$row['goods_id']), $row['goods_name']);
}
return $arr;
} 然后继续在 index.php 文件中 找到
$smarty->assign('shop_notice', $_CFG['shop_notice']); // 商店公告
在它下边另起一行增加如下代码
$smarty->assign('goods_exchange_list',index_get_exchange(6,0)); //积分商城
如果你想只显示热销的积分商品,只需将上面代码稍作修改即可
$smarty->assign('goods_exchange_list',index_get_exchange(6,1)); //积分商城 2)、下面继续修改模板文件 themes/default/index.dwt
在你想显示积分商城商品的地方,加入下面代码段 <!--积分商城列表-->
<div class="box">
<div class="box_1">
<h3><span><a href="/exchange.php" class="f6">积分商城</a></span></h3>
<div class="centerPadd">
<div class="clearfix goodsBox" style="border:none;">
<!--{foreach name=goods_exchange_list from=$goods_exchange_list item=exchange_goods}-->
<div class="goodsItem">
<a href="{$exchange_goods.url}" target="_blank"><img src="{$exchange_goods.goods_thumb}" alt="{$exchange_goods.goods_name}" class="goodsimg" /></a><br />
<p><a href="{$exchange_goods.url}" target="_blank">
<!-- {if $exchange_goods.goods_style_name} -->
<font class="f3">{$exchange_goods.goods_style_name}</font><br />
<!-- {else} -->
<font class="f3">{$exchange_goods.goods_name}</font><br />
<!-- {/if} -->
</a>
</p>
{$lang.exchange_integral}<font class="price">{$exchange_goods.exchange_integral}</font>
</div>
<!--{/foreach}-->
<div class="more"><a href="/exchange.php"><img src="data:images/more.gif" /></a></div>
</div>
</div>
</div>
</div>
<div class="blank5"></div>
3)、到后台清除下缓存,然后刷新首页就能看到效果了,效果图如下
ECSHOP怎样调用指定分类的文章
1、要求: echop技术 在ECSHOP商城首页的“站内快讯”里只显示某个特定分类下的文章,
例如只显示 类别ID为 5 的文章。
2、修改方法:
使用editplus 或者 dreamweaver 打开 index.php文件(如果你的是UTF-8编码,尽量不要使用记事本),
找到 index_get_new_articles() 函数部分
将 ' WHERE a.is_open = 1 AND a.cat_id = ac.cat_id AND ac.cat_type = 1' . 修改为
' WHERE a.is_open = 1 AND a.cat_id=5 AND a.cat_id = ac.cat_id AND ac.cat_type = 1' .
ecshop调用指定分类的文章_百度文库
举例如首页调用方法:
1、先打开index.php文件找到以下代码:
$smarty->assign('new_articles', index_get_new_articles()); // 最新文章 在它下面增加以下:
//调用方法 $smarty->assign('class_articles_4', index_get_class_articles(4,6)); // 分类调用文章
//调用多个就修改传进去的参数,以及模板接收的变量,其中上面的4就是文章分类ID,其中6是调用数量
$smarty->assign('class_articles_5', index_get_class_articles(5,6)); // 分类调用文章
$smarty->assign('class_articles_6', index_get_class_articles(6,6)); // 分类调用文章
$smarty->assign('class_articles_7', index_get_class_articles(7,6)); // 分类调用文章
$smarty->assign('class_articles_8', index_get_class_articles(8,6)); // 分类调用文章 //在最后?>这个之前增加以下函数 /**
* 获得指定栏目最新的文章列表。
*
* @access private
* @return array
*/
function index_get_class_articles($cat_aid, $cat_num)
{
$sql = "SELECT article_id, title,open_type,cat_id,file_url FROM " .$GLOBALS['ecs']->table('article'). " WHERE cat_id = ".$cat_aid." and is_open = 1 LIMIT " . $cat_num;
$res = $GLOBALS['db']->getAll($sql);
$arr = array();
foreach ($res AS $idx => $row)
{
$arr[$idx]['id'] = $row['article_id'];
$arr[$idx]['title'] = $row['title'];
$arr[$idx]['short_title'] = $GLOBALS['_CFG']['article_title_length'] > 0 ?
sub_str($row['title'], $GLOBALS['_CFG']['article_title_length']) : $row['title'];
$arr[$idx]['cat_name'] = $row['cat_name'];
$arr[$idx]['add_time'] = local_date($GLOBALS['_CFG']['date_format'], $row['add_time']);
$arr[$idx]['url'] = $row['open_type'] != 1 ?
build_uri('article', array('aid' => $row['article_id']), $row['title']) : trim($row['file_url']);
$arr[$idx]['cat_url'] = build_uri('article_cat', array('acid' => $row['cat_id']));
}
return $arr;
} 2、第二步是在index.dwt模板想调用的地方增加以下代码,(注:以下调上面设置里的分类ID为8的文章列表): <!--{foreach from=$class_articles_8 item=article}-->
<li><a href="{$article.url}" title="{$article.title|escape:html}"><!--{$article.short_title|truncate:15:true}--></a></li>
<!--{/foreach}--> ECSHOP获得指定栏目最新的商品列表2010-08-29 12:19ECSHOP获得指定栏目最新的商品列表 举例如首页调用方法:
1、先打开index.php文件找到以下代码:
$smarty->assign('new_articles', index_get_new_articles()); // 最新文章
在它下面增加以下:
//调用方法
$smarty->assign('class_articles_4', index_get_class_articles(4,6)); // 分类调用文章
//调用多个就修改传进去的参数,以及模板接收的变量,其中上面的4就是文章分类ID,其中6是调用数量
$smarty->assign('class_articles_5', index_get_class_articles(5,6)); // 分类调用文章
$smarty->assign('class_articles_6', index_get_class_articles(6,6)); // 分类调用文章
$smarty->assign('class_articles_7', index_get_class_articles(7,6)); // 分类调用文章
$smarty->assign('class_articles_8', index_get_class_articles(8,6)); // 分类调用文章
2、在lib_goods.php增加以下函数
/**
* 获得指定栏目最新的文章列表。
*
* @access private
* @return array
*/
function index_get_class_articles($cat_aid, $cat_num)
{
$sql = "SELECT article_id, title,open_type,cat_id,file_url FROM " .$GLOBALS['ecs']->table('article'). " WHERE cat_id = ".$cat_aid." and is_open = 1 LIMIT " . $cat_num;
$res = $GLOBALS['db']->getAll($sql);
$arr = array();
foreach ($res AS $idx => $row)
{
$arr[$idx]['id'] = $row['article_id'];
$arr[$idx]['title'] = $row['title'];
$arr[$idx]['short_title'] = $GLOBALS['_CFG']['article_title_length'] > 0 ?
sub_str($row['title'], $GLOBALS['_CFG']['article_title_length']) : $row['title'];
$arr[$idx]['cat_name'] = $row['cat_name'];
$arr[$idx]['add_time'] = local_date($GLOBALS['_CFG']['date_format'], $row['add_time']);
$arr[$idx]['url'] = $row['open_type'] != 1 ?
build_uri('article', array('aid' => $row['article_id']), $row['title']) : trim($row['file_url']);
$arr[$idx]['cat_url'] = build_uri('article_cat', array('acid' => $row['cat_id']));
}
return $arr;
}
3、第二步是在index.dwt模板想调用的地方增加以下代码,(注:以下调上面设置里的分类ID为8的文章列表):
<!--{foreach from=$class_articles_8 item=article}-->
<li><a href="{$article.url}" title="{$article.title|escape:html}"><!--{$article.short_title|truncate:15:true}--></a></li>
<!--{/foreach}-->
ecshop首页调取指定分类文章的办法
此方法不一定能够获取到指定数量的文章 ecshop目前是国内最热门流行的开源电子商务系统,为了达到不同的需求,往往需要经过不断的二次开发。今天就遇到一个问题,需要给一个网站首页同时调用多个不同分类下的文章,每个分类下显示对应的文章,所用的版本是2.7.2的,ecshop更新时间缓慢,这点从另一方面讲也是好事。
偷懒上网搜索,方法挺多的,有人说可以调用ecshop自带函数get_cat_articles,有人说修改自带的index_get_new_articles() 函数的SQL语句,指定一个分类id,还有人说调用自创的分类文章函数index_get_class_articles,研究了一下,最后这些全部推翻,用了一个并不复杂的办法。
给首页显示最新文章的模板部分加一个判断函数,根据分类ID判断就可以。
方法如下:
打开根目录下的index.php文件,搜索以下代码: $arr[$idx]['cat_url'] = build_uri('article_cat', array('acid' => $row['cat_id']), $row['cat_name']);
在下面加一行代码
$arr[$idx]['cat_id'] = $row['cat_id'];
这样就可以获取到各文章分类的ID了。
接下来我们在首页调用文章的地方加一句判断分类ID的过滤。举例: <!--{foreach from=$new_articles item=article}-->
<!--{if $article.cat_id == 6}-->
<li><a title="{$article.title|escape:html}" href="{$article.url}">{$article.cat_id}:{$article.short_title|truncate:10:"...":true}</a></li>
<!--{/if}-->
<!--{/foreach}-->
这段代码的意思是调取分类ID为6的最新文章,具体使用的时候请参考酌情修改。
说到这里,还有一种方法不用修改index.php文件,就可调取指定分类文章。原理就是过滤文章分类名,不过感觉执行效率上稍微差一点。
举例:
<!--{foreach from=$new_articles item=article}-->
<!--{if $article.cat_name eq '网站公告'}-->
<li><a title="{$article.title|escape:html}" href="{$article.url}">{$article.cat_id}:{$article.short_title|truncate:10:"...":true}</a></li>
<!--{/if}-->
<!--{/foreach}-->
这段代码可以解释为调取分类名为“网站公告”的最新文章。
ECSHOP文章列表改为显示内容提要方法
可以提取详细内容的固定字符宽度
修改:includes\lib_article.php
找到
function get_cat_articles($cat_id, $page = 1, $size = 20)
函数
在 $sql = 'SELECT article_id, title,content, author, add_time, file_url, open_type' .
' FROM ' .$GLOBALS['ecs']->table('article') .
" WHERE is_open = 1 AND " . $cat_str .
' ORDER BY article_type DESC, article_id DESC'; 增加 content 字段 在
$arr[$article_id]['add_time'] = date($GLOBALS['_CFG']['date_format'], $row['add_time']);
下面 增加
$arr[$article_id]['content'] = $row['content']; article_cat.dwt
调用 例子
{$article.content|strip_tags|truncate:20:"..."}
显示前20字符 多余的 使用 ...代替
ecshop首页显示的价格,改为登录查看
ecshop获取指定类型下的文章
ECSHOP获得指定商品分类下所有的商品关联文章
ECSHOP获得指定商品分类下所有的商品关联文章 /**
* 获得指定分类下所有商品的关联文章
* sun04zh3-20130321
* @access public
* @param integer $cat_id
* @return array
*/
function get_category_linked_articles($cat_id)
{
$sql = 'SELECT a.article_id, a.title, a.file_url, a.open_type, a.add_time ' .
'FROM ' . $GLOBALS['ecs']->table('goods_article') . ' AS ga, ' .
$GLOBALS['ecs']->table('article') . ' AS a, ' .
$GLOBALS['ecs']->table('goods').' AS g '.
"WHERE ga.article_id = a.article_id AND ".get_children($cat_id)." AND a.is_open = 1 and ga.goods_id = g.goods_id " .
'ORDER BY a.add_time DESC';
$res = $GLOBALS['db']->query($sql); $arr = array();
while ($row = $GLOBALS['db']->fetchRow($res))
{
$row['url'] = $row['open_type'] != 1 ?
build_uri('article', array('aid'=>$row['article_id']), $row['title']) : trim($row['file_url']);
$row['add_time'] = local_date($GLOBALS['_CFG']['date_format'], $row['add_time']);
$row['short_title'] = $GLOBALS['_CFG']['article_title_length'] > 0 ?
sub_str($row['title'], $GLOBALS['_CFG']['article_title_length']) : $row['title']; $arr[] = $row;
} return $arr;
} category.dwt模版页调用: <!--{foreach from=$article_list_jnc item=jnclist}-->
<li><a href="{$jnclist.url}" title="{$jnclist.title}">{$jnclist.title}</a></li>
<!--{/foreach}-->
category.php对应程序页调用: $smarty->assign('article_list', get_category_linked_articles(8));
分类: php
文章列表显示缩略图
1.打开includes/lib_article.php
找到
$arr[$article_id]['content'] = $row['content']; 下面添加
$arr[$article_id]['file_url'] = $row['file_url'];//文章附件地址 preg_match_all("/<img([^>]*)\s*src=('|\")([^'\"]+)('|\")/",
$row['content'],$matches);//带引号
//preg_match_all("/<img([^>]*)\ssrc=([^\s>]+)/",$string,$matches);//不带引号
$new_arr=array_unique($matches[0]);//去除数组中重复的值
//foreach($new_arr as $key){
// echo $key."</br>";
//}
$arr[$article_id]['pic_url'] =reset($new_arr);//返回数组中第一个 模板中引用
<!--{if $article.pic_url}-->
{$article.pic_url}
<img src="{$article.pic_url}" width="175" height="145" border="0" style="border:1px solid #cccccc; padding:1px;">
</td>
<!--{/if}-->
ECSHOP二次开发-首页在每个商品下显示已销售量
ECSHOP二次开发-首页在每个商品下显示已销售量
最近有些客户问如何才能让首页每个商品显示已销售量,
其实很简单,首先打开 includes/lib_goods.php
在最下面添加 function get_buy_sum($goods_id)
{ $sql = "select sum(goods_number) from " . $GLOBALS['ecs']->table('order_goods') . " AS g ,".$GLOBALS['ecs']->table('order_info') . " AS o WHERE o.order_id=g.order_id and g.goods_id = " . $goods_id . " and o.order_status=1 " ; return $GLOBALS['db']->getOne($sql); }
然后找到
$goods[$idx]['brand_name'] = isset($goods_data['brand'][$row['goods_id']]) ? $goods_data['brand'][$row['goods_id']] : '';
在它下面添加
$goods[$idx]['buy_num']= get_buy_sum($row['goods_id']);
然后通过模板文件调用,比如新品,就在recommend_new.lbi文件中,
在你想要添加的位置 添加
{if $goods.buy_num} {$goods.buy_num} {else} 0 {/if}
这样就可以了。
ECSHOP首页商品累计销售量显示
在商品详情页显示累计售出量
1、
对于交易量很大的网站,每个商品的“累计售出”个数可能随时都在变化,
所以本方法使用了 insert 函数来实现,以达到能体现实时最新的销售量(也就是销售量不会被缓存)
2、修改 includes/lib_insert.php 文件
在最下面增加一个函数
/**
* 调用某商品的累积售出
*/
function insert_goods_sells($arr)
{
$sql = 'SELECT SUM(goods_number) AS number ' .
' FROM ' . $GLOBALS['ecs']->table('order_goods') ." AS og , " . $GLOBALS['ecs']->table('order_info') ." AS o ".
" WHERE og.order_id = o.order_id and og.goods_id=".$arr['goods_id'];
$row = $GLOBALS['db']->GetRow($sql);
if ($row)
{
$number = intval($row['number']);
}
else
{
$number = 0;
}
return $number;
} 3、修改 模板文件夹下 goods.dwt 文件 在
<strong>{$lang.goods_click_count}:</strong>{$goods.click_count}
下面增加一行代码
<strong>累计售出:</strong>{insert name='goods_sells' goods_id=$id}{$goods.measure_unit}
ECSHOP首页销量和ECSHOP分类页销量的修改方法
首页:
这个需要修改一个程序文件 lib_goods.php
实现在文件末尾添加一个函数
function get_buy_sum($goods_id) { $sql = "select sum(goods_number) from " . $GLOBALS['ecs']->table('order_goods') . " AS g ,".$GLOBALS['ecs']->table('order_info') . " AS o WHERE o.order_id=g.order_id and g.goods_id = " . $goods_id . " and o.order_status=1 " ;//o.order_status=1 表示确认了的订单才算 return $GLOBALS['db']->getOne($sql); }
然后找到 在get_recommend_goods函数中 大致325行
$goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);
其后添加
$goods[$idx]['buy_num'] = get_buy_sum($row['goods_id']);
剩下的就是通过在模板中用
{if $goods.buy_num}
{$goods.buy_num}
{else}
0
{/if}
调用了 分类页
修改 category.php 文件
在
$arr[$row['goods_id']]['goods_id'] = $row['goods_id'];
下增加
$sql="select NULLum(goods_number),0) from ". $GLOBALS['ecs']->table('order_goods') . " AS og , ". $GLOBALS['ecs']->table('order_info') ." AS o where o.order_id =og.order_id and o.order_status >0 and og.goods_id=".$row['goods_id'];
$arr[$row['goods_id']]['count_sell']=$GLOBALS['db']->getOne($sql); 然后修改 library/goods_list.lbi
在你想显示购买数量的地方加入下面代码:
销售数量:{$goods.count_sell}
ecshop各个页面调用商品销售量方法
首页的推荐商品包括热销推荐和促销三个文件
只对热销商品为例
第一步:打开根目录/includes/lib_goods.php文件。在文件末尾添加方法
function selled_count($goods_id){$sql= "select sum(goods_number) as count from ".$GLOBALS['ecs']->table('order_goods')."where goods_id ='".$goods_id."'";$res = $GLOBALS['db']->getOne($sql);if($res>0){return $res;}else{return('0');}}
第二步:搜索get_recommend_goods方法
在这个方法中找到这句话
$goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);
在这句话下添加$goods[$idx]['count'] = selled_count($row['goods_id']);
第三步:在模版的library/recommend_hot.lbi中在需要的地方添加
<div class="index_hotbg">售出 <strong>{$goods.count}</strong> 瓶</div>
首页分类下的商品,实现“已售出”。
第一步:分类下商品也需要修改lib_goods.php。找到分类下的商品
assign_cat_goods方法。在
$goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);句话下添加
$goods[$idx]['count'] = selled_count($row['goods_id']);
第二步:需要修改模版文件/library/cat_goods.lbi。在需要的地方添加
销售量:{$goods.count}
在商品分类页面调用已售出
第一步:修改根目录下category.php找到category_get_goods方法函数中foreach循环添加$arr[$row['goods_id']]['count'] = selled_count($row['goods_id']);第二步:文件的最后部分添加函数function selled_count($goods_id){$sql= "select sum(goods_number) as count from ".$GLOBALS['ecs']->table('order_goods')."where goods_id ='".$goods_id."'";$res = $GLOBALS['db']->getOne($sql);if($res>0){return $res;}else{return('0');}}第三步:在模版文件goods_list.lbi中需要的地方添加销售量:{$goods.count}
说明:搜索页面需要修改search.php
在搜索页面调用已售出多少件
第一步:打开根目录/search.php
在最后加上
function selled_count($goods_id){$sql= "select sum(goods_number) as count from ".$GLOBALS['ecs']->table('order_goods')."where goods_id ='".$goods_id."'";$res = $GLOBALS['db']->getOne($sql);if($res>0){return $res;}else{return('0');}}方法
第二步:在页面搜索
$arr[$row['goods_id']]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);
在下面添加
$arr[$row['goods_id']]['count'] = selled_count($row['goods_id']);第三步:打开模版文件/search.dwt在需要的地方调用。销售量:{$goods.count}
获取指定类别下的所有商品
1.获取指定类别的文章
2.获取指定类别下的所有商品
http://blog.sina.com.cn/s/blog_75ad10100100vamj.html
http://blog.sina.com.cn/s/blog_75ad10100100vamj.html
http://blog.sina.com.cn/s/blog_75ad10100100y9up.html
Ecshop模板
http://down.admin5.com/moban/ECShop/
ecshop 的一些常用操作的更多相关文章
- 【三】用Markdown写blog的常用操作
本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...
- php模拟数据库常用操作效果
test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...
- Mac OS X常用操作入门指南
前两天入手一个Macbook air,在装软件过程中摸索了一些基本操作,现就常用操作进行总结, 1关于触控板: 按下(不区分左右) =鼠标左键 control+按下 ...
- mysql常用操作语句
mysql常用操作语句 1.mysql -u root -p 2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...
- nodejs配置及cmd常用操作
一.cmd常用操作 1.返回根目录cd\ 2.返回上层目录cd .. 3.查找当前目录下的所有文件dir 4.查找下层目录cd window 二.nodejs配置 Node.js安装包及源码下载地址为 ...
- Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理
摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■ 详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...
- python 异常处理、文件常用操作
异常处理 http://www.jb51.net/article/95033.htm 文件常用操作 http://www.jb51.net/article/92946.htm
- byte数据的常用操作函数[转发]
/// <summary> /// 本类提供了对byte数据的常用操作函数 /// </summary> public class ByteUtil { ','A','B',' ...
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
随机推荐
- Node.js使用redis进行订阅发布管理
redis NPM 官方介绍地址:https://www.npmjs.com/package/redis let redis = require('redis'); let subscriber; l ...
- PTA(Basic Level)1008.数组元素循环右移问题
一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最 ...
- C++继承中的同名覆盖
1,父子间的冲突是由继承带来的,两个类之间存在了继承的关系,必然的会带来一 些问题,本文要讨论的是父子之间成员变量或成员函数的命名问题: 2,思考: 1,子类中是否可以定义父类中的同名成员? 1,可以 ...
- python-day1(学前了解)
Markdown基本语法 各级标题 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 加粗 **加粗文本** 斜体 *我斜了* 高亮 ==我高亮了== 上标 2 ...
- Freemarker模板的使用简介
需要的jar包: 在pom.xml文件中贴入 <dependency> <groupId>junit</groupId> <artifactId>jun ...
- oracle链接报错shared memory realm does not exist
问题描述: 前两天能够正常链接,今天来了突然不能链接,原因不详. 处理方法: 连接linux进行如下操作: 1.sqlplus /nolog 2.conn / as sysdba 3.startup ...
- vue在组件中使用v-model
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue点击出现蒙版
需求: 1.点击一个事件时弹出一个蒙版: 2.蒙版上有取消,删除事件:(点击取消时候蒙版消失,点击删除时,删除蒙版并消失): 3.点击空白地方,蒙版也消失: <template> ...
- 为了实现动态加载而编写的自己的ClassLoader
Copy备用 之前客户要求在不重启应用的前提下实现动态增加服务及交易,在网上查了很长时间也没发现类似的技术,最后研究了一下ClassLoader.因为项目是与Spring,一开始我和同事尝试替换源码的 ...
- php通过反射方法调用私有方法
PHP 5 具有完整的反射 API,添加了对类.接口.函数.方法和扩展进行反向工程的能力. 下面我们演示一下如何通过反射,来调用执行一个类中的私有方法: <?php //MyClass这个类中包 ...