专注ECSHOP第九年
始自2007,服务二千多商户,不断为您增光溢彩

ECTOUCH gbk编码无法异步加载商品列表的问题

阿牛阅读(1042)

据客户反应,ectouch分类页无法显示商品图。据排查,发现客户使用转换为gbk所致。

初探gbk字符json_encode为变成转成utf16编码。实际代码也就是介个样子:

<?php
$testJSON=array(‘name’=>’中文字符串’,’value’=>’test’);
echo json_encode($testJSON);
?>

查看输出结果为:
{“name”:”u4e2du6587u5b57u7b26u4e32″,”value”:”test”}

解决办法:

<?php
$testJSON=array(‘name’=>’中文字符串’,’value’=>’blog.uuecs.com”);
//echo json_encode($testJSON);
foreach ( $testJSON as $key => $value ) {
$testJSON[$key] = urlencode ( $value );
}
echo urldecode ( json_encode ( $testJSON ) );
?>

就算使用UTF8编码的字符,使用json_encode也出现了中文乱码。解决办法是在使用json_encode之前把字符用函数urlencode()处理一下,然后再json_encode,输出结果的时候在用函数urldecode()转回来。具体如下:

查看输出结果为:

{“name”:”中文字符串”,”value”:”blog.uuecs.com”}

到此,成功输出中文字符。异步加载出现的错误自然解决~~

ECSHOP文章详情或商品删除后删除对应的描述图片

阿牛阅读(882)

ECSHOP删除文章或从回收站删除商品,文章内容和商品描述中的图片(位于/images/upload/Image目录)无法删除,时间长了会占用相当大的空间,尤其是使用虚拟主机的用户,对空间造成很大的开销和浪费。

实际上,我们可以写一个删除图片的函数,然后在删除文章和商品的页面,如/admin/goods.php、/admin/includes/lib_goods.php、/admin/article.php相关位置调用此函数即可的时候,调用该函数即可。函数如下:

找到admin/goods.php

搜索  $sql = “SELECT goods_id, goods_name, is_delete, is_real, goods_thumb

后增加:(约1760行)

,goods_desc,

继续搜索  /* 删除商品的货品记录 */

前增加:@deletePic($goods[‘goods_desc’]);

最后在页面最底部?>前增加函数:

/** 
 * 删除描述中的图片 
 * @access  public 
 * @params  string  $desc 
 */ 
function deletePic($desc) 
{ 
    preg_match_all("/<img([^>]*)\s*src=('|\")([^'\"]+)('|\")/", $desc, $matches); 
    $arr = array_unique($matches[0]); //去除数组中重复的图片路径 
    foreach($arr as $value) 
    {  
        $str = strrchr($value, '/'); //结果示例:/1.png" 
        $fileName = substr($str, 0, strlen($str)-1); //结果示例:/1.png 
        @unlink('../images/upload/Image' . $fileName);  //删除图片 
    } 
}

方法二:

找到admin/goods.php

elseif ($_REQUEST[‘act’] == ‘drop_goods’)

在这里面添加

$sql = "select goods_desc from ".$ecs->table('goods')." where goods_id = ".$goods_id;
$des = $db->getOne($sql);
$arr = explode("<img",$des);


for($i=0;$i<count($arr);$i++){
if(strpos($arr[$i],'src=')>-1){
$tmp = explode("\"",$arr[$i]);
for($k=0;$k<count($tmp);$k++){
if(strpos($tmp[$k],'.jpg')>-1||strpos($tmp[$k],'.jpeg')>-1||strpos($tmp[$k],'.png')>-1||strpos($tmp[$k],'.gif')>-1||strpos($tmp[$k],'.bmp')>-1){
@unlink('../' .$tmp[$k]);

$imgs[] = $tmp[$k];
}
}
}
}

 

 

Ecshop商品描述信息延时加载实现

阿牛阅读(813)

找到模板文件: goods.dwt.

随便找个位置放入以下代码:

<script type="text/javascript">
    var htmldata;
    $(function (){
        htmldata = $('.product_description').html();
         $('.product_description').html('正在加载详细信息...');//BY uuecs.Com
        htmldata = htmldata.replace(/<!--/g,'');
        htmldata = htmldata.replace(/-->/g,'');
         
        timess(0);
    });
     
    function timess(i){
        if(i == 2){ //2秒后加载. 将内容重新释放进dom
           $('.product_description').html(htmldata);
           return false;
        }
        i++;
        setTimeout(function (){timess(i)}, 1000);      
    }
</script>

 

接着搜索: 描述标签所在位置.

{$goods.goods_desc}

代码注释,修改成默认就显示:

<div class="product_description"><!--<div>{$goods.goods_desc}</div>--></div>

 

OK, 完成.

ECSHOP文章列表增加缩略图显示 自动截取文章内容

阿牛阅读(1002)

(1)利用ecshop后台文章模块自带的上传功能,通过判断文件格式,调取到文章列表。

(1.1)includes/lib_article.php 搜索

SELECT article_id, title, author, click_count, add_time, 后增加 file_url,如图:

aabbcc

搜索:

$arr[$article_id][‘title’]       = $row[‘title’];

增加:

$arr[$article_id]['file_url']       = $row['file_url'];
$allow_types = array('jpg', 'gif', 'jpeg','png');//判断文件类型
if($row['file_url']){
$arr[$article_id]['thumb']       = (in_array(pathinfo($row['file_url'], PATHINFO_EXTENSION),$allow_types)) ? $row['file_url']:'';
}

 

(1.2)前台模板文件 article_cat.dwt

在合适位置增加即可。

{if $article.thumb}<img src="{$article.thumb}" width="55" height="55"  alt="{$article.title|escape:html}"/>{/if}

(2)修改文章列表,获取文章详情内容并转为列表的简单描述。

includes/lib_article.php 搜索$arr[$article_id][‘id’]          = $article_id;增加:

$tmpdesc = strip_tags($row['content']);//截取内容 uuecs.Com
$tmpdesc = str_replace("\n","",$tmpdesc);
$tmpdesc = str_replace("&nbsp;","",$tmpdesc);
$tmpdesc=str_replace("    ","",$tmpdesc);
$arr[$article_id]['desc']       = (!empty($row['description'])) ? $row['description'] : $tmpdesc;//如设置过文章描述,优先显示描述内容

(2.2)前台模板文件 article_cat.dwt

在合适位置增加即可。

{$article.desc|truncate:70}

最终如图:

sa0606011821

 

[完美解决]ECSHOP 2.7.3 使用51EC助理提示中文密码不对的问题

阿牛阅读(936)

因D版都是使用老的接口,无法应用于新版ecshop系统。
只需更新一个文件即可。ecsservice.php

修改 checkLogin 函数:

 

function checkLogin($username, $password)
{
$username = base64_decode($username);
$password = base64_decode($password);
//return true;
// 增加的如下部分 by UUECS QQ909065309
$sql_uuecs="SELECT `ec_salt` FROM". $GLOBALS['ecs']->table('admin_user') ." WHERE user_name = '" . $username ."'";
$ec_salt =$GLOBALS['db']->getOne($sql_uuecs);
// 修改如下部分
$sql ="SELECT user_id, user_name, password, last_login, action_list, last_login".
" FROM " . $GLOBALS['ecs']->table('admin_user') .
" WHERE user_name = '" . $username."' AND password = '" . md5(md5($password).$ec_salt)."'"; 
$row = $GLOBALS['db']->getRow($sql);
if ($row)
{
return true;
}else{
return false;
}

 

 

wdcp如何安装memcache和mysqli以及libmcrypt

阿牛阅读(913)

WDCP凭借简单好用,在国内使用还是非常多的。默认情况下,wdcp是没有预装mysqli的,我们需要通过SSH进入安装,具体的如下
memcache的安装
wget -c http://down.wdlinux.cn/in/memcached_ins.sh
chmod 755 memcached_ins.sh
./memcached_ins.sh

服务启动或停止
service memcached start|stop|restart

mysqli的安装
wget -c http://down.wdlinux.cn/in/mysqli_ins.sh
chmod 755 mysqli_ins.sh
./mysqli_ins.sh

libmcrypt的安装
wget -c http://down.wdlinux.cn/in/libmcrypt_ins.sh
chmod 755 libmcrypt_ins.sh
./libmcrypt_ins.sh

ECTOUCH发现的几个小问题汇总

阿牛阅读(960)

今天客户需要,安装最新版ectouch。发现几个小问题,首页部分广告调用无法打开,以及团购列表会出现重复商品。解决方法很简单。
(1)ECTHOUCH 前台广告 调用出错。

修改:\include\apps\default\controller\AfficheController.class.php

touch01

(2)团购列表会出现重复商品。

修改:\include\apps\default\model\GroupbuyModel.class.php


touch1

 

简单实用 2步修改ECSHOP后台会员列表显示会员等级

阿牛阅读(953)

两部轻松修改 ECSHOP后台修改会员列表显示会员等级,增加注册日期。

(1)打开admin/users.php文件。

搜索:$filter[‘keywords’] = stripslashes($filter[‘keywords’]);
把之前的$sql改为:

$sql= "SELECT user_id, user_name, email, is_validated, user_money, frozen_money, rank_points, pay_points, reg_time ,user_rank,r.rank_name as rank_name".
" FROM " . $GLOBALS['ecs']->table('users') ." as u "." left join ".$GLOBALS['ecs']->table('user_rank') .
" AS r ON u.user_rank = r.rank_id ". $ex_where ."ORDER by " . $filter['sort_by'] . ' ' . $filter['sort_order'] .
" LIMIT " . $filter['start'] . ',' . $filter['page_size'];

(2)继续搜索:$user_list[$i][‘reg_time’] = local_date($GLOBALS[‘_CFG’][‘date_format’], $user_list[$i][‘reg_time’]);

在下面添加一行:

$user_list[$i]['rank_name']=isset($user_list[$i]['rank_name'])?"[<font color=blue>".$user_list[$i]['rank_name']."</font>]":'';

(3)打开模板文件。即admin/templates/user_list.htm

增加到对应位置即可。如会员名称后面。
<td class=”first-cell”>{$user.user_name|escape} {$user.rank_name}</td>

同理,注册日期。加上字段:{$user.reg_time}

(4)显示效果如图示:

aaa

阿牛ECSHOP 更专业 更方便

关于我们联系我们