ECshop 页面修改及出错处理方法基础知识(第一部分)

来源:互联网 发布:神盾内网管理软件 编辑:程序博客网 时间:2024/06/09 13:39

ECshop 页面修改及出错处理方法基础知识(第一部分)

(2013-05-20 17:04:32)
转载

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),感兴趣的百度下详细的配置。

解决步骤:

  1. 下载transportGoods.js到js目录下
  2. 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.jstransportGoods.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’}

0 0
原创粉丝点击