ecshop

ecshop

ectouch或ecshop redirect_uri域名与后台配置不一致

博客maomao 发表了文章 • 0 个评论 • 1839 次浏览 • 2019-06-06 16:42 • 来自相关话题

ectouch或ecshop redirect_uri域名与后台配置不一致?怎么解决?   一》到微信公司号后台配置授权域名 二》e ...查看全部
ectouch或ecshop redirect_uri域名与后台配置不一致?怎么解决?
 
一》到微信公司号后台配置授权域名

QQ截图20190606163824.png


二》ecshop手机后台配置相关参数信息

QQ截图20190606163932.png

 
三》ecshop手机后台配置微信登录信息

QQ截图20190606164103.png

 
ok,这时再从微信打开商城,试一下,是不是可以直接登录了,也可以打开商品链接了。

Ecshop模板开发2018教程<十七>添加商品调用多个kindeditor编辑器

博客taotao 发表了文章 • 0 个评论 • 1385 次浏览 • 2018-11-28 15:55 • 来自相关话题

Ecshop模板开发2018教程<十七>添加商品调用多个kindeditor编辑器:   一。修改后台代码如下: /* 创建 html editor */ create_html_ed ...查看全部
Ecshop模板开发2018教程<十七>添加商品调用多个kindeditor编辑器:
 
一。修改后台代码如下:
    /* 创建 html editor */
create_html_editor('goods_desc', $goods['goods_desc']);
create_html_editor('goods_csdesc', $goods['goods_csdesc']);
$smarty->assign('goods_desc', $goods['goods_desc']);
$smarty->assign('goods_csdesc', $goods['goods_csdesc']);
二.修改前台模板文件
 
<script type="text/javascript">
var editor;
var editor2;
var editor3;
KindEditor.ready(function(K) {
editor = K.create('#editor_id');
});
KindEditor.ready(function(K) {
editor2=K.create('#editor2_id');
});
KindEditor.ready(function(K) {
editor3=K.create('#editor3_id');
});
</script>
        <table width="90%" id="detail-table" style="display:none">
<tr>
<td><textarea id="editor_id" name="goods_desc" style="width:100%;height:300px;">{$goods_desc}</textarea></td>
</tr>
</table>

<tr>
<td><textarea name="goods_csdesc"id="editor3_id" style="width:100%;height:300px;">{$goods_csdesc}</textarea></td>
</tr>

Ecshop模板开发2018教程<十六>会员注册登陆自动返回上一页的控制

博客gallon 发表了文章 • 0 个评论 • 1582 次浏览 • 2018-09-30 21:20 • 来自相关话题

Ecshop模板开发2018教程<十六>会员注册登陆自动返回上一页的控制:   控制主要是在includes/lib_main.php中的show_message()函数中:   function s ...查看全部
Ecshop模板开发2018教程<十六>会员注册登陆自动返回上一页的控制:
 
控制主要是在includes/lib_main.php中的show_message()函数中:
 
function show_message($content, $links = '', $hrefs = '', $type = 'info', $auto_redirect = true)
{
assign_template();

$msg['content'] = $content;
if (is_array($links) && is_array($hrefs))
{
if (!empty($links) && count($links) == count($hrefs))
{
foreach($links as $key =>$val)
{
$msg['url_info'][$val] = $hrefs[$key];
}
$msg['back_url'] = $hrefs['0'];
}
}
else
{
$link = empty($links) ? $GLOBALS['_LANG']['back_up_page'] : $links;
$href = empty($hrefs) ? 'javascript:history.back()' : $hrefs;
$msg['url_info'][$link] = $href;
$msg['back_url'] = $href;
}

$msg['type'] = $type;
$position = assign_ur_here(0, $GLOBALS['_LANG']['sys_msg']);
$GLOBALS['smarty']->assign('page_title', $position['title']); // 页面标题
$GLOBALS['smarty']->assign('ur_here', $position['ur_here']); // 当前位置

if (is_null($GLOBALS['smarty']->get_template_vars('helps')))
{
$GLOBALS['smarty']->assign('helps', get_shop_help()); // 网店帮助
}
$GLOBALS['smarty']->assign('categories', get_categories_tree()); // 分类树
$GLOBALS['smarty']->assign('auto_redirect', $auto_redirect);
$GLOBALS['smarty']->assign('message', $msg);
$GLOBALS['smarty']->display('message.dwt');

exit;
}

所以需要对message.dwt模板进行修改:
 
在<head></head>之间加入
 
{if $auto_redirect}
<meta http-equiv="refresh" content="3;URL={$message.back_url}" />
{/if}
 
表示3秒后自动跳回登陆注册前的上一页,搞定!

Ecshop模板开发2018教程<十五>layui ajax异步提交数据,弹窗错误信息

博客gallon 发表了文章 • 0 个评论 • 1637 次浏览 • 2018-09-30 15:59 • 来自相关话题

Ecshop模板开发2018教程<十五>layui ajax异步提交数据,弹窗错误信息:   //监听提交 layui.use('form', function(){ var ...查看全部
Ecshop模板开发2018教程<十五>layui ajax异步提交数据,弹窗错误信息:
 
 //监听提交
layui.use('form', function(){
var form = layui.form;
form.on('submit(add_service)', function(data){
//layer.msg(JSON.stringify(data.field));//弹出json格式所有表单的值
var username=data.field.username;
var phone=data.field.phone;
var type=data.field.type;
var book_time=data.field.book_time;
var remark=data.field.remark;
if(phone.length!=11){
layer.msg('请输入有效的手机号码', {icon: 2});
return false;
}
var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1})|(19[0-9]{1}))+\d{8})$/;
if(!myreg.test(phone)){
layer.msg('请输入有效的手机号码', {icon: 2});
return false;
}
if(username.length==0){
layer.msg('请输入姓名!', {icon: 2});
return false;
}
$.ajax({
type:"POST",
url:"add_comment.php?action=add_service",
data:"username="+username+"&phone="+phone+"&type="+type+"&book_time="+book_time+"&remark="+remark,
dataType:"json",
success:function(data){
if(data.status==1){
layer.msg(data.info, {icon: 1});
//var url = "{:U('device/getinfo')}"; //成功跳转的url
//setTimeout(window.location.href=url,2000);
}else{
layer.msg(data.info, {icon: 2});
}
},
});
return false;
});
});

ecshop Warning: require(后台路径/includes/init.phpincludes/inc_constant.php): failed to open

博客maomao 发表了文章 • 0 个评论 • 1859 次浏览 • 2018-09-29 10:46 • 来自相关话题

echo 出现Warning: require(后台路径/includes/init.phpincludes/inc_constant.php): failed to open stream: No such file or directory in 后台路径 ...查看全部
echo 出现Warning: require(后台路径/includes/init.phpincludes/inc_constant.php): failed to open stream: No such file or directory in 后台路径/includes/init.php on line 82 Fatal error: require(): Failed opening required '后台路径/includes/init.phpincludes/inc_constant.php' (include_path='.:ROOT_PATH') in 后台路径/includes/init.php on line 82
客户在操作安装好之后出现这个错误,ECSHOP开发中心和大家说说为什么会出现这样的情况
出现问题的原因:后台路径和data/config.php不一致造成的
解决办法:查data/config.php
打开根目录data/config.php 找到代码 admin ,改成你修改后的文件名即可。
define('ADMIN_PATH','admin');
修改成
define('ADMIN_PATH','system-login');

ectouch手机模板出现Notice: Undefined offset: 1 in convention.php

博客maomao 发表了文章 • 0 个评论 • 1735 次浏览 • 2018-09-23 13:03 • 来自相关话题

ectouch手机模板出现Notice: Undefined offset: 1 in /data/home/hyu5113240001/htdocs/mobile/data/convention.php on line 94   No ...查看全部
ectouch手机模板出现Notice: Undefined offset: 1 in /data/home/hyu5113240001/htdocs/mobile/data/convention.php on line 94
 
Notice: Undefined offset: 1 in /data/home/byu1233590001/htdocs/mobile/data/convention.php on line 70
ectouch手机模板出现错误,提示在70行。但不知道怎么修改,我在在那个位置修改我的数据库信息?
$config[‘DB_PORT’] = $db_config[1];//数据库端口,mysql默认是3306,一般不需要修改
$config[‘DB_USER’] = $db_user;//数据库用户名
$config[‘DB_PWD’] = $db_pass;//数据库密码
$config[‘DB_NAME’] = $db_name;//数据库名
 
处理方法 : $db_config[1] 更改为 : $db_config[0]   OK

Ecshop模板开发2018教程<十四>调用大分类下的所有商品,可按新品,推荐,热卖排序

博客maomao 发表了文章 • 0 个评论 • 1389 次浏览 • 2018-09-03 22:03 • 来自相关话题

Ecshop模板开发2018教程<十四>调用大分类下的所有商品,可按新品,推荐,热卖排序:   新增加方法:   /** * 获得指定大分类下的推荐商品 * ...查看全部
Ecshop模板开发2018教程<十四>调用大分类下的所有商品,可按新品,推荐,热卖排序:
 
新增加方法:
 
/**
* 获得指定大分类下的推荐商品
*
* @access public
* @param string $type 推荐类型,可以是 best, new, hot, promote
* @param string $cats 分类的ID
* @param integer $brand 品牌的ID
* @param integer $min 商品价格下限
* @param integer $max 商品价格上限
* @param string $ext 商品扩展查询
* @return array
*/
function get_bigcategory_recommend_goods($type = '', $cats = '',$num)
{

$children =get_child_tree($cats);
$child_str='';
foreach ($children as $val)
{
$child_str.=$val['id'].',';
}
$child_str=rtrim($child_str,',');
$sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style, g.market_price, g.shop_price , g.promote_price, ' .
'promote_start_date, promote_end_date, g.goods_brief, g.goods_thumb, goods_img ' .
'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' .
'WHERE g.is_on_sale = 1 AND g.is_delete = 0 ' ;
//$num = 0;
$type2lib = array('best'=>'recommend_best', 'new'=>'recommend_new', 'hot'=>'recommend_hot', 'promote'=>'recommend_promotion');
//$num = get_library_number($type2lib[$type]);

switch ($type)
{
case 'best':
$sql .= ' AND is_best = 1';
break;
case 'new':
$sql .= ' AND is_new = 1';
break;
case 'hot':
$sql .= ' AND is_hot = 1';
break;
case 'promote':
$time = gmtime();
$sql .= " AND is_promote = 1 AND promote_start_date <= '$time' AND promote_end_date >= '$time'";
break;
}

if (!empty($child_str))
{
$sql .= " AND g.cat_id in(".$child_str.")";
}

$order_type = $GLOBALS['_CFG']['recommend_order'];
$sql .= ($order_type == 0) ? ' ORDER BY g.sort_order, g.last_update DESC' : ' ORDER BY RAND()';
$res = $GLOBALS['db']->selectLimit($sql, $num);

$idx = 0;
$goods = array();
while ($row = $GLOBALS['db']->fetchRow($res))
{
if ($row['promote_price'] > 0)
{
$promote_price = bargain_price($row['promote_price'], $row['promote_start_date'], $row['promote_end_date']);
$goods[$idx]['promote_price'] = $promote_price > 0 ? price_format($promote_price) : '';
}
else
{
$goods[$idx]['promote_price'] = '';
}

$goods[$idx]['id'] = $row['goods_id'];
$goods[$idx]['name'] = $row['goods_name'];
$goods[$idx]['brief'] = $row['goods_brief'];
$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]['market_price'] = price_format($row['market_price']);
$goods[$idx]['shop_price'] = price_format($row['shop_price']);
$goods[$idx]['thumb'] = get_image_path($row['goods_id'], $row['goods_thumb'], true);
$goods[$idx]['goods_img'] = get_image_path($row['goods_id'], $row['goods_img']);
$goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);

$goods[$idx]['short_style_name'] = add_style($goods[$idx]['short_name'], $row['goods_name_style']);
$idx++;
}

return $goods;
}
调用方法:
 
$smarty->assign('goods45',get_bigcategory_recommend_goods('new',45,5));     // 古筝最新商品
模板 循环数据
 
<!--{foreach from=$goods45 item=goods name=goods}-->
<li><a href="{$goods.url}"><img src="{$goods.thumb}" width="175px" height="175px"/><p class="title">{$goods.name|truncate:12:"":true}</p><p class="describe">{$goods.brief|truncate:12:"":true}</p><p class="price">{$goods.shop_price}元</p></a></li>
<!--{/foreach}-->

Ecshop模板开发2018教程<十三>增加评论发表时间为几天前,几分钟前,几天前

博客maomao 发表了文章 • 0 个评论 • 1547 次浏览 • 2018-08-30 21:01 • 来自相关话题

Ecshop模板开发2018教程<十三>增加评论发表时间为几天前,几分钟前,几天前的方法如下:   一。添加函数   /** * 友好时间显示 * @param $time ...查看全部
Ecshop模板开发2018教程<十三>增加评论发表时间为几天前,几分钟前,几天前的方法如下:
 
一。添加函数
 
/**
* 友好时间显示
* @param $time
* @return bool|string
*/
function friend_date($the_time)
{
$now_time = time();
$show_time = date('Y-m-d', $the_time);
//return local_date($GLOBALS['_CFG']['time_format'], $the_time);
$dur = $now_time - strtotime(local_date($GLOBALS['_CFG']['time_format'], $the_time));
if($dur < 60){
return $dur.'秒前';
}else if($dur < 3600){
return floor($dur/60).'分钟前';
}else if($dur < 86400) {
return floor($dur/3600).'小时前';
}else if($dur < 259200) {//3天内
return floor($dur / 86400) . '天前';
}else{
return $show_time;
}
}
二。在调用评论时,调用friend_date函数
 
$arr[$row['comment_id']]['friend_time']=friend_date($row['add_time']);
三。模板调用
 
<p class="submit_time">{$comment.friend_time}</p>

Ecshop模板开发2018教程<十二>layui流动加载ecshop评论 异步加载更多评论

博客maomao 发表了文章 • 0 个评论 • 1720 次浏览 • 2018-08-29 16:52 • 来自相关话题

Ecshop模板开发2018教程<十二>layui流动加载ecshop评论 异步加载更多评论:   官方加载方法:   flow.load({ elem: '#LAY_demo2' ...查看全部
Ecshop模板开发2018教程<十二>layui流动加载ecshop评论 异步加载更多评论:
 
官方加载方法:
 
flow.load({
elem: '#LAY_demo2' //流加载容器
,scrollElem: '#LAY_demo2' //滚动条所在元素,一般不用填,此处只是演示需要。
,isAuto: false
,isLazyimg: true
,done: function(page, next){ //加载下一页
//模拟插入
setTimeout(function(){
var lis = [];
for(var i = 0; i < 6; i++){
lis.push('<li><img lay-src="//s17.mogucdn.com/p2/161011/upload_279h87jbc9l0hkl54djjjh42dc7i1_800x480.jpg?v='+ ( (page-1)*6 + i + 1 ) +'"></li>')
}
next(lis.join(''), page < 6); //假设总页数为 6
}, 500);
}
});

经测试,异步对接PHP接口json数据,res.list返回undifired,反复测试,使用 $.getJson解决。
 

QQ截图20180828104028.png

 

Ecshop模板开发2018教程<十一>截取模板变量中的字符长度

博客gallon 发表了文章 • 0 个评论 • 1511 次浏览 • 2018-08-22 22:21 • 来自相关话题

Ecshop模板开发2018教程<十一>截取模板变量中的字符长度:   {$goods.goods_name|truncate:40:"...":true}直接截取产品名的长度为40个字符 后面用“... ...查看全部
Ecshop模板开发2018教程<十一>截取模板变量中的字符长度:
 
{$goods.goods_name|truncate:40:"...":true}直接截取产品名的长度为40个字符 后面用“...”连接

{$goods.goods_name|escape:html|truncate:40:"...":true}截取html字符的长度为40个字符 后面用“...”连接

ectouch或ecshop redirect_uri域名与后台配置不一致

博客maomao 发表了文章 • 0 个评论 • 1839 次浏览 • 2019-06-06 16:42 • 来自相关话题

ectouch或ecshop redirect_uri域名与后台配置不一致?怎么解决?   一》到微信公司号后台配置授权域名 二》e ...查看全部
ectouch或ecshop redirect_uri域名与后台配置不一致?怎么解决?
 
一》到微信公司号后台配置授权域名

QQ截图20190606163824.png


二》ecshop手机后台配置相关参数信息

QQ截图20190606163932.png

 
三》ecshop手机后台配置微信登录信息

QQ截图20190606164103.png

 
ok,这时再从微信打开商城,试一下,是不是可以直接登录了,也可以打开商品链接了。

Ecshop模板开发2018教程<十七>添加商品调用多个kindeditor编辑器

博客taotao 发表了文章 • 0 个评论 • 1385 次浏览 • 2018-11-28 15:55 • 来自相关话题

Ecshop模板开发2018教程<十七>添加商品调用多个kindeditor编辑器:   一。修改后台代码如下: /* 创建 html editor */ create_html_ed ...查看全部
Ecshop模板开发2018教程<十七>添加商品调用多个kindeditor编辑器:
 
一。修改后台代码如下:
    /* 创建 html editor */
create_html_editor('goods_desc', $goods['goods_desc']);
create_html_editor('goods_csdesc', $goods['goods_csdesc']);
$smarty->assign('goods_desc', $goods['goods_desc']);
$smarty->assign('goods_csdesc', $goods['goods_csdesc']);
二.修改前台模板文件
 
<script type="text/javascript">
var editor;
var editor2;
var editor3;
KindEditor.ready(function(K) {
editor = K.create('#editor_id');
});
KindEditor.ready(function(K) {
editor2=K.create('#editor2_id');
});
KindEditor.ready(function(K) {
editor3=K.create('#editor3_id');
});
</script>
        <table width="90%" id="detail-table" style="display:none">
<tr>
<td><textarea id="editor_id" name="goods_desc" style="width:100%;height:300px;">{$goods_desc}</textarea></td>
</tr>
</table>

<tr>
<td><textarea name="goods_csdesc"id="editor3_id" style="width:100%;height:300px;">{$goods_csdesc}</textarea></td>
</tr>

Ecshop模板开发2018教程<十六>会员注册登陆自动返回上一页的控制

博客gallon 发表了文章 • 0 个评论 • 1582 次浏览 • 2018-09-30 21:20 • 来自相关话题

Ecshop模板开发2018教程<十六>会员注册登陆自动返回上一页的控制:   控制主要是在includes/lib_main.php中的show_message()函数中:   function s ...查看全部
Ecshop模板开发2018教程<十六>会员注册登陆自动返回上一页的控制:
 
控制主要是在includes/lib_main.php中的show_message()函数中:
 
function show_message($content, $links = '', $hrefs = '', $type = 'info', $auto_redirect = true)
{
assign_template();

$msg['content'] = $content;
if (is_array($links) && is_array($hrefs))
{
if (!empty($links) && count($links) == count($hrefs))
{
foreach($links as $key =>$val)
{
$msg['url_info'][$val] = $hrefs[$key];
}
$msg['back_url'] = $hrefs['0'];
}
}
else
{
$link = empty($links) ? $GLOBALS['_LANG']['back_up_page'] : $links;
$href = empty($hrefs) ? 'javascript:history.back()' : $hrefs;
$msg['url_info'][$link] = $href;
$msg['back_url'] = $href;
}

$msg['type'] = $type;
$position = assign_ur_here(0, $GLOBALS['_LANG']['sys_msg']);
$GLOBALS['smarty']->assign('page_title', $position['title']); // 页面标题
$GLOBALS['smarty']->assign('ur_here', $position['ur_here']); // 当前位置

if (is_null($GLOBALS['smarty']->get_template_vars('helps')))
{
$GLOBALS['smarty']->assign('helps', get_shop_help()); // 网店帮助
}
$GLOBALS['smarty']->assign('categories', get_categories_tree()); // 分类树
$GLOBALS['smarty']->assign('auto_redirect', $auto_redirect);
$GLOBALS['smarty']->assign('message', $msg);
$GLOBALS['smarty']->display('message.dwt');

exit;
}

所以需要对message.dwt模板进行修改:
 
在<head></head>之间加入
 
{if $auto_redirect}
<meta http-equiv="refresh" content="3;URL={$message.back_url}" />
{/if}
 
表示3秒后自动跳回登陆注册前的上一页,搞定!

Ecshop模板开发2018教程<十五>layui ajax异步提交数据,弹窗错误信息

博客gallon 发表了文章 • 0 个评论 • 1637 次浏览 • 2018-09-30 15:59 • 来自相关话题

Ecshop模板开发2018教程<十五>layui ajax异步提交数据,弹窗错误信息:   //监听提交 layui.use('form', function(){ var ...查看全部
Ecshop模板开发2018教程<十五>layui ajax异步提交数据,弹窗错误信息:
 
 //监听提交
layui.use('form', function(){
var form = layui.form;
form.on('submit(add_service)', function(data){
//layer.msg(JSON.stringify(data.field));//弹出json格式所有表单的值
var username=data.field.username;
var phone=data.field.phone;
var type=data.field.type;
var book_time=data.field.book_time;
var remark=data.field.remark;
if(phone.length!=11){
layer.msg('请输入有效的手机号码', {icon: 2});
return false;
}
var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1})|(19[0-9]{1}))+\d{8})$/;
if(!myreg.test(phone)){
layer.msg('请输入有效的手机号码', {icon: 2});
return false;
}
if(username.length==0){
layer.msg('请输入姓名!', {icon: 2});
return false;
}
$.ajax({
type:"POST",
url:"add_comment.php?action=add_service",
data:"username="+username+"&phone="+phone+"&type="+type+"&book_time="+book_time+"&remark="+remark,
dataType:"json",
success:function(data){
if(data.status==1){
layer.msg(data.info, {icon: 1});
//var url = "{:U('device/getinfo')}"; //成功跳转的url
//setTimeout(window.location.href=url,2000);
}else{
layer.msg(data.info, {icon: 2});
}
},
});
return false;
});
});

ecshop Warning: require(后台路径/includes/init.phpincludes/inc_constant.php): failed to open

博客maomao 发表了文章 • 0 个评论 • 1859 次浏览 • 2018-09-29 10:46 • 来自相关话题

echo 出现Warning: require(后台路径/includes/init.phpincludes/inc_constant.php): failed to open stream: No such file or directory in 后台路径 ...查看全部
echo 出现Warning: require(后台路径/includes/init.phpincludes/inc_constant.php): failed to open stream: No such file or directory in 后台路径/includes/init.php on line 82 Fatal error: require(): Failed opening required '后台路径/includes/init.phpincludes/inc_constant.php' (include_path='.:ROOT_PATH') in 后台路径/includes/init.php on line 82
客户在操作安装好之后出现这个错误,ECSHOP开发中心和大家说说为什么会出现这样的情况
出现问题的原因:后台路径和data/config.php不一致造成的
解决办法:查data/config.php
打开根目录data/config.php 找到代码 admin ,改成你修改后的文件名即可。
define('ADMIN_PATH','admin');
修改成
define('ADMIN_PATH','system-login');

ectouch手机模板出现Notice: Undefined offset: 1 in convention.php

博客maomao 发表了文章 • 0 个评论 • 1735 次浏览 • 2018-09-23 13:03 • 来自相关话题

ectouch手机模板出现Notice: Undefined offset: 1 in /data/home/hyu5113240001/htdocs/mobile/data/convention.php on line 94   No ...查看全部
ectouch手机模板出现Notice: Undefined offset: 1 in /data/home/hyu5113240001/htdocs/mobile/data/convention.php on line 94
 
Notice: Undefined offset: 1 in /data/home/byu1233590001/htdocs/mobile/data/convention.php on line 70
ectouch手机模板出现错误,提示在70行。但不知道怎么修改,我在在那个位置修改我的数据库信息?
$config[‘DB_PORT’] = $db_config[1];//数据库端口,mysql默认是3306,一般不需要修改
$config[‘DB_USER’] = $db_user;//数据库用户名
$config[‘DB_PWD’] = $db_pass;//数据库密码
$config[‘DB_NAME’] = $db_name;//数据库名
 
处理方法 : $db_config[1] 更改为 : $db_config[0]   OK

Ecshop模板开发2018教程<十四>调用大分类下的所有商品,可按新品,推荐,热卖排序

博客maomao 发表了文章 • 0 个评论 • 1389 次浏览 • 2018-09-03 22:03 • 来自相关话题

Ecshop模板开发2018教程<十四>调用大分类下的所有商品,可按新品,推荐,热卖排序:   新增加方法:   /** * 获得指定大分类下的推荐商品 * ...查看全部
Ecshop模板开发2018教程<十四>调用大分类下的所有商品,可按新品,推荐,热卖排序:
 
新增加方法:
 
/**
* 获得指定大分类下的推荐商品
*
* @access public
* @param string $type 推荐类型,可以是 best, new, hot, promote
* @param string $cats 分类的ID
* @param integer $brand 品牌的ID
* @param integer $min 商品价格下限
* @param integer $max 商品价格上限
* @param string $ext 商品扩展查询
* @return array
*/
function get_bigcategory_recommend_goods($type = '', $cats = '',$num)
{

$children =get_child_tree($cats);
$child_str='';
foreach ($children as $val)
{
$child_str.=$val['id'].',';
}
$child_str=rtrim($child_str,',');
$sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style, g.market_price, g.shop_price , g.promote_price, ' .
'promote_start_date, promote_end_date, g.goods_brief, g.goods_thumb, goods_img ' .
'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' .
'WHERE g.is_on_sale = 1 AND g.is_delete = 0 ' ;
//$num = 0;
$type2lib = array('best'=>'recommend_best', 'new'=>'recommend_new', 'hot'=>'recommend_hot', 'promote'=>'recommend_promotion');
//$num = get_library_number($type2lib[$type]);

switch ($type)
{
case 'best':
$sql .= ' AND is_best = 1';
break;
case 'new':
$sql .= ' AND is_new = 1';
break;
case 'hot':
$sql .= ' AND is_hot = 1';
break;
case 'promote':
$time = gmtime();
$sql .= " AND is_promote = 1 AND promote_start_date <= '$time' AND promote_end_date >= '$time'";
break;
}

if (!empty($child_str))
{
$sql .= " AND g.cat_id in(".$child_str.")";
}

$order_type = $GLOBALS['_CFG']['recommend_order'];
$sql .= ($order_type == 0) ? ' ORDER BY g.sort_order, g.last_update DESC' : ' ORDER BY RAND()';
$res = $GLOBALS['db']->selectLimit($sql, $num);

$idx = 0;
$goods = array();
while ($row = $GLOBALS['db']->fetchRow($res))
{
if ($row['promote_price'] > 0)
{
$promote_price = bargain_price($row['promote_price'], $row['promote_start_date'], $row['promote_end_date']);
$goods[$idx]['promote_price'] = $promote_price > 0 ? price_format($promote_price) : '';
}
else
{
$goods[$idx]['promote_price'] = '';
}

$goods[$idx]['id'] = $row['goods_id'];
$goods[$idx]['name'] = $row['goods_name'];
$goods[$idx]['brief'] = $row['goods_brief'];
$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]['market_price'] = price_format($row['market_price']);
$goods[$idx]['shop_price'] = price_format($row['shop_price']);
$goods[$idx]['thumb'] = get_image_path($row['goods_id'], $row['goods_thumb'], true);
$goods[$idx]['goods_img'] = get_image_path($row['goods_id'], $row['goods_img']);
$goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);

$goods[$idx]['short_style_name'] = add_style($goods[$idx]['short_name'], $row['goods_name_style']);
$idx++;
}

return $goods;
}
调用方法:
 
$smarty->assign('goods45',get_bigcategory_recommend_goods('new',45,5));     // 古筝最新商品
模板 循环数据
 
<!--{foreach from=$goods45 item=goods name=goods}-->
<li><a href="{$goods.url}"><img src="{$goods.thumb}" width="175px" height="175px"/><p class="title">{$goods.name|truncate:12:"":true}</p><p class="describe">{$goods.brief|truncate:12:"":true}</p><p class="price">{$goods.shop_price}元</p></a></li>
<!--{/foreach}-->

Ecshop模板开发2018教程<十三>增加评论发表时间为几天前,几分钟前,几天前

博客maomao 发表了文章 • 0 个评论 • 1547 次浏览 • 2018-08-30 21:01 • 来自相关话题

Ecshop模板开发2018教程<十三>增加评论发表时间为几天前,几分钟前,几天前的方法如下:   一。添加函数   /** * 友好时间显示 * @param $time ...查看全部
Ecshop模板开发2018教程<十三>增加评论发表时间为几天前,几分钟前,几天前的方法如下:
 
一。添加函数
 
/**
* 友好时间显示
* @param $time
* @return bool|string
*/
function friend_date($the_time)
{
$now_time = time();
$show_time = date('Y-m-d', $the_time);
//return local_date($GLOBALS['_CFG']['time_format'], $the_time);
$dur = $now_time - strtotime(local_date($GLOBALS['_CFG']['time_format'], $the_time));
if($dur < 60){
return $dur.'秒前';
}else if($dur < 3600){
return floor($dur/60).'分钟前';
}else if($dur < 86400) {
return floor($dur/3600).'小时前';
}else if($dur < 259200) {//3天内
return floor($dur / 86400) . '天前';
}else{
return $show_time;
}
}
二。在调用评论时,调用friend_date函数
 
$arr[$row['comment_id']]['friend_time']=friend_date($row['add_time']);
三。模板调用
 
<p class="submit_time">{$comment.friend_time}</p>

Ecshop模板开发2018教程<十二>layui流动加载ecshop评论 异步加载更多评论

博客maomao 发表了文章 • 0 个评论 • 1720 次浏览 • 2018-08-29 16:52 • 来自相关话题

Ecshop模板开发2018教程<十二>layui流动加载ecshop评论 异步加载更多评论:   官方加载方法:   flow.load({ elem: '#LAY_demo2' ...查看全部
Ecshop模板开发2018教程<十二>layui流动加载ecshop评论 异步加载更多评论:
 
官方加载方法:
 
flow.load({
elem: '#LAY_demo2' //流加载容器
,scrollElem: '#LAY_demo2' //滚动条所在元素,一般不用填,此处只是演示需要。
,isAuto: false
,isLazyimg: true
,done: function(page, next){ //加载下一页
//模拟插入
setTimeout(function(){
var lis = [];
for(var i = 0; i < 6; i++){
lis.push('<li><img lay-src="//s17.mogucdn.com/p2/161011/upload_279h87jbc9l0hkl54djjjh42dc7i1_800x480.jpg?v='+ ( (page-1)*6 + i + 1 ) +'"></li>')
}
next(lis.join(''), page < 6); //假设总页数为 6
}, 500);
}
});

经测试,异步对接PHP接口json数据,res.list返回undifired,反复测试,使用 $.getJson解决。
 

QQ截图20180828104028.png

 

Ecshop模板开发2018教程<十一>截取模板变量中的字符长度

博客gallon 发表了文章 • 0 个评论 • 1511 次浏览 • 2018-08-22 22:21 • 来自相关话题

Ecshop模板开发2018教程<十一>截取模板变量中的字符长度:   {$goods.goods_name|truncate:40:"...":true}直接截取产品名的长度为40个字符 后面用“... ...查看全部
Ecshop模板开发2018教程<十一>截取模板变量中的字符长度:
 
{$goods.goods_name|truncate:40:"...":true}直接截取产品名的长度为40个字符 后面用“...”连接

{$goods.goods_name|escape:html|truncate:40:"...":true}截取html字符的长度为40个字符 后面用“...”连接