ECshop 页面修改及出错处理方法基础知识(第一部分)
1.ecshop,用户注册页面相关说明
用户注册地址:user.php?act=register
模板地址:themes\yige(模板目录)目录下的user_passport.dwt 文件。
在 user_passport.dwt文件中,{$lang.label_username} 类似这样的文字,所在的位置:languages\zh_cn 目录下的user.php 文件。
目录 languages下面,是网店所需的语言包。
======================================================================================
2.ecshop 用户中心user.php页面的文字修改
网站根目录下,找到:languages\zh_cn\user.php
中文的修改,估计都在这个目录下面:languages\zh_cn\
============================================================================
3.ecshop等级积分与消费积分的简单解释
ecshop,积分分为:等级积分、消费积分两种。
等级积分:后台–>会员管理–>会员等级,添加设置不同等级的会员,所享有的折扣率。这里是根据等级积分的高低区分的。
消费积分:够买产品可以获得消费积分,同时也可以用积分顶替RMB使用。
会员中心的“我的推荐”,每推荐1个用户完成注册,即可获得等级积分 2的奖励。
=========================================================================
4.ecshop推荐注册赠送的等级积分修改为消费积分
2011年7月18日
ecshop推荐注册,默认的是赠送等级积分,特殊情况下需要将赠送的等级积分修改为消费积分。
修改如下:
1、打开文件:includes/lib_passport.php
2、找到下面代码:
// 推荐开关开启
$up_uid = get_affiliate();
empty($affiliate) && $affiliate =array();
$affiliate['config']['level_register_all'] =intval($affiliate['config']['level_register_all']);
$affiliate['config']['level_register_up'] =intval($affiliate['config']['level_register_up']);
if ($up_uid)
{
if (!empty($affiliate['config']['level_register_all']))
{
if (!empty($affiliate['config']['level_register_up']))
{
$rank_points = $GLOBALS['db']->getOne(“SELECTrank_points FROM ” . $GLOBALS['ecs']->table(‘users’). ” WHERE user_id = ‘$up_uid’”);
if ($rank_points + $affiliate['config']['level_register_all']<= $affiliate['config']['level_register_up'])
{
log_account_change($up_uid, 0, 0,$affiliate['config']['level_register_all'], 0,sprintf($GLOBALS['_LANG']['register_affiliate'],$_SESSION['user_id'], $username));
}
}
else
{
log_account_change($up_uid, 0, 0,$affiliate['config']['level_register_all'],0,$GLOBALS['_LANG']['register_affiliate']);
}
}
代码中:0,0,$affiliate['config']['level_register_all'],0这上面的数字分别表示:可用资金、冻结资金、等级积分、消费积分,因此修改为:0,0,0,$affiliate['config']['level_register_all'],即可实现。
===============================================================
5.ecshop模板文件的含义
user.php包含:themes\default\
message.dwt:登陆成功或退出登陆的信息提示页面、帮助、友情链接
user_passport.dwt:用户信息注册、登陆页面、找回密码
user_transaction.dwt:用户登陆成功之后的用户中心
=================================================================
ecshop2.7.2 页面随机出现Powered by ECShop的解决方法
在制作ecshop模板的时候,出现了奇怪的现象:页面随机出现Powered byECShop,网上搜了下很轻易的解决了。
这个随机出现的,所有页面里面已经没有Powered by ECShop这几个字母,页面里面加上带官方网址链接的Poweredby ECShop,随机出现的就不会出现了。可见,是为了保护版权吧。
解决方法:
打开文件:js/common.js
删除244行到354行的一个“夺宝奇兵会员出价反馈”函数即可解决。
这样删除之后,估计夺宝奇兵就不能用了,有更好的方法吗?
================================================================
6.ecshop 调用自定义的广告 (函数版)
2011年7月22日
ecshop中关于广告的调用方法,网上有很多,现在要介绍的不同于其他,根据实际情况选择使用,以首页调用为例:
1、index.php页面添加调用函数:
function index_ad_diy()
{
$sql = ‘SELECT * FROM ‘ .$GLOBALS['ecs']->table(‘ad’) . ‘ ORDER BY end_timeasc’;
$res =$GLOBALS['db']->getAll($sql);$arr =array();
foreach($res AS $idx => $row)
{
$arr[$idx]['id'] = $row['ad_id'];
$arr[$idx]['title'] = $row['ad_name'];
$arr[$idx]['imglink'] = $row['ad_link'];
$arr[$idx]['imgcode'] = $row['ad_code'];
}
return$arr;
}
2、index.php页面添加解析模板的代码
查找代码:assign_template();
在里面增加:
$smarty->assign(‘ad_diy’, index_ad_diy()); // 自定义广告位调用
3、themes\mjmn\当前模板文件夹\index.dwt
在需要循环调用广告图片的位置添加代码:
1.<!–{foreachfrom=$ad_diy item=diyAd}–>
2.<li>
3.<div><A title=”"href=”{$diyAd.imglink}” target=_blank>4.{$diyAd.title|escape:html}</A><p></p></div>
5.<div><A id=vstagbthref=”{$diyAd.imglink}”target=_blank><IMG6.src=”{$diyAd.imgcode}”></A></div>
7.<div><Atitle=”{$diyAd.title|escape:html}” href=”"target=_blank>8.{$diyAd.title|escape:html}</A></div>
9.</li>
10.<!–{/foreach}–>
删除代码前的数字。
OK!功能成功实现。
此功能源于公司的1位客户,宅罗曼的商城系统,首页要求的图片较多,尺寸问题不能直接调用上传的,就全部做成了广告位的形式。
======================================================================
7.ecshop的jquery,jqzoom,transport.js冲突 问题解决(麻烦版)
ecshop里面jquery与transport.js文件冲突是众所周知的,这里提供的方案,不是最完美的,是在网上提出的解决方案的基础上整理的。
是这样的,保留原来的transport.js,发生冲突的页面调用修改过的transportGoods.js,这样就避免了修改所有js文件的麻烦;函数方面,保留原来的函数,调用出错的函数,重新复制一个,起个新的函数名。
不喜欢这种方式的,下面的可以忽略了,没有什么技术含量,总结了一下。
页面:goods.dwt
效果:放大镜
所用插件:jquery图片放大镜效果插件 jqzoom
症状一:jquery与transport.js文件冲突
思路分析:两者都定义了$,导致发生冲突
实施方案:详细的分析网上有很多,这里只上传已配置好的transport.js文件(文件名重命名为:transportGoods.js),感兴趣的百度下详细的配置。
解决步骤:
- 下载transportGoods.js到js目录下
- 在goods.dwt页面,适当的位置调用一下就好:
{insert_scriptsfiles=’transportGoods.js’}
至此,放大镜效果完美解决了。
症状二:在线购买失效,报错:
错误: goods.toJSONString is not a function
源文件:http://127.0.0.1/js/common.js 行:34出错地方的代码:Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ +goods.toJSONString(), addToCartResponse, ‘POST’,‘JSON’);
思路分析:goods.dwt页面调用的是修改后的transportGoods.js文件,导致toJSONString函数找不到。
解决步骤:
1、对比transport.js与transportGoods.js的352行
legalParams = “JSON=” + params.toJSONString(); //transport.js
legalParams = “JSON=” + objToJSONString(params);//transportGoods.js
2、common.js文件的34行:
Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ +goods.toJSONString(),addToCartResponse, ‘POST’, ‘JSON’);
3、分析1、2中的红色代码区,修改common.js的34行为:
Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + objToJSONString(goods), addToCartResponse,‘POST’, ‘JSON’);
4、至此,证明方法可行,但是其他地方的Ajax.call就会出错,在线购买调用的是common.js里面的addToCart()函数,复制一份,重命名为:addToCartGoods(),修改里面的Ajax.call为步骤3中提到的。
5、修改goods.dwt页面,调用addToCart()的地方为addToCartGoods()
OK!
transportGoods.js文件:[点击下载]
成功解决!
==================================================================================
8.ecshop 网站底部显示帮助信息
2011年11月9日
网站底部如何显示出帮助信息呢?见下图:
具体操作步骤:
1、进入网站后台,系统设置–商店设置–显示设置–找到“用户帮助是否打开”,默认是打开的。
2、文章管理–文章分类,添加文章分类至:系统分类–网店帮助分类,下面。
3、在新添加的分类下面添加文章,只有添加了文章,前台网站底部才会显示。
=================================================================================
9.Warning: number_format() expects parameter 1 to be double,string given in
2011年11月9日
ECSHOP,在提交订单的时候报错:Warning: number_format() expects parameter 1to be double, string given in…
原因:配送插件里面的免费额度为0,ec本身的bug导致了$price的值为空值,直接调用number_format出现了错误。
修改方法:
将includes\lib_common.php
else
{
$price = number_format($price, 2, ‘.’, ”);
}修改为
else
{
if(!$price){
$price = 0;
}
$price = number_format($price, 2, ‘.’, ”);
}
一般是搜索:number_format,在最下面的一个
问题解决。
=======================================================================
10.ECSHOP模板insert语法 {insert name=’*'}的用法
2011年11月14日
文件:includes/lib_insert.php
解释:这个文件是ECSHOP动态内容函数库。
详细:里面定义各个函数的格式都是 functioninsert_*(),每个函数都是一个功能控制模块,在模板中可以使用 {insert name=‘*’ }
举例:{insert name=’history’},是用来显示浏览历史的。模板中调用:{insertname=’history’}