分享

ECSHOP模板修改13问

 笑傲人生239 2014-04-16
转自:A5论坛 自己留下备用
在最新版本的EC2.7.2我只用到了几个还是能用的其它的没测试。 

第一问答
问:怎样把ECSHOP商城系统中的相对地址变成带域名的绝对地址?
答:我们一般所说的绝对地址(也有朋友称其为:完整地址)是指我们在网页前台查看源文件时,在源文件中都所能看到的带域名的完整URL形式,比如:
“<a href="http://www./sitemap.xml ">xxxxx</a>”

修改说明:
这样修改的好处:
也许很多朋友都非常想把以www(www.)开头的URL和不带www()的URL同时指向同一个地方。

通过这个方法进行修改以后方便搜索引擎“第一时间”确定以 www 开头的域名 为首选域,也不需要再做301重定向了。
具体操作方法:
其实这个问题操作起来并不复杂
在ECSHOP商城系统里找到 /includes/lib_common.php这个文件
把return $uri;
修改为
return 'http:// www./'.$uri;
这样就OK了,是不是很简单,呵呵


第二问答
问:怎样在ECSHOP首页分别调用商品的品牌名称?
答:为了讲起来方便,为了照顾大部份人,在这里以ECSHOP 2.7.2默认官方模板为例子来分析。事实上“品牌字段”在ECSHOP程序里已经取出来了,没有显示出来的原因,仅仅是因为模板中没有去调用它而已。所以只需要在模板中把这个品牌标签加上就OK了。
具体操作方法:
A)、在ECSHOP商城系统里找/themes/default/library/recommend_best.lbi 
找到
<font class="f1">
在它上边增加一行
{if $goods.brand_name}<p>品牌:{$goods.brand_name}</p>{/if}

B)、在ECSHOP商城系统里找/themes/default/library/recommend_new.lbi ,修改方法同上
C)、在ECSHOP商城系统里找/themes/default/library/recommend_hot.lbi ,修改方法也同上

D)、在ECSHOP商城系统中找到themes/default/library/recommend_promotion.lbi ,
找到下面代码
{$lang.promote_price}<font class="f1">{$goods.promote_price}</font>
在它上边添加如下代码
{if $goods.brand_name}<p>品牌:{$goods.brand_name}</p>{/if}

刷新看看,是不是多了一个品牌,如果刷新没有变化,请到后台清除缓存再试一下。


第三问答
问:为什么我的ECSHOP首页和商品列表页中的商品缩略图很模糊,我应该怎么做,图片才会清晰呢?
答:经常看到论坛里有人反映说首页或列表页的缩略图的质量不高,比较模糊......
原因是因为ECSHOP生成缩略图时,用到的函数 imagejpeg()  没有设置质量参数。注释:质量参数为可选项,范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大)。如果没有设置质量参数,那么质量默认为75。下面,我们通过修改生成缩略图质量的默认值来提高缩略图的质量。
具体操作方法:
找到 /includes/cls_image.php,把 imagejpeg($img_thumb, $dir . $filename);修改为
imagejpeg($img_thumb, $dir . $filename, 100);

这样缩略图就会变清晰了。
注意:按照以上方法修改完后,还需要到后台执行一下“商品管理 》图片批量处理 ”才能看到效果。


第四问答
问:怎样修改Ecshop站内快讯标题的长度(字数)
答:这是一个ECSHOP使用中的小问题,但是群里和论坛里还是经常有人在问,下面共享一下。进入后台 》商店设置 》 显示设置,找到“ 文章标题的长度: ” ,修改输入框里的数字即可。


第五问答
问:将默认模板首页的best,hot,new三个水印删除掉
答:此方法仅对ECSHOP默认模板有效,其他模板也许根本就没这几个水印

A)、打开 /themes/default/library/recommend_best.lbi  文件
将 <span class="best"></span> 
删除即可

B)、打开 /themes/default/library/recommend_hot.lbi  文件
将 <span class="hot"></span> 
删除即可

C)、打开 /themes/default/library/recommend_new.lbi  文件
将 <span class="new"></span> 
删除即可


第六问答
问:在ECSHOP首页显示商品总数和本月更新数
答:经常在论坛里看到有人问到类似问题,今天就把方法共享一下。
1)、首先修改 /index.php 
找到
assign_dynamic('index');
在它后边添加一些代码
$sql="select count(*) as goods_all from ". $ecs->table('goods'); //商品总数
$smarty->assign('goodsnum_all',$db->getOne($sql));
$time_month=mktime(0,0,0,date('m')-1,1,date('Y'));
$sql="select count(*) as goods_month from ". $ecs->table('goods') ." where last_update >= " . $time_month; //本月更新数
$smarty->assign('goodsnum_month',$db->getOne($sql));


2)、打开首页模板文件 index.dwt,在合适的地方调用,调用代码为
本商城共有商品 {$goodsnum_all} 件,本月更新 {$goodsnum_month} 件


第七问答
问:如何去掉首页的商店公告
答:不同的模板,具体的修改细节是不一样的,
A)、如果你使用的是官方默认模板,请看下面
打开 /themes/default/index.dwt 文件
将下面代码部分删除即可
<!--站内公告 start-->
    <div class="box">
     <div class="box_1">
      <h3><span>{$lang.shop_notice}</span></h3>
      <div class="boxCenterList RelaArticle">
        {$shop_notice}
      </div>
     </div>
    </div>
    <div class="blank5"></div>
    <!--站内公告 end-->

B)、
如果你使用的是其他模板,打开 /themes/你的模板文件夹/index.dwt 
搜索
{$shop_notice}

注意,搜索到该字符串以后,要观察它周围(前后都算)的一些DIV 标签,把对应的DIV部分都删掉就可以了。
如果你能看懂HTML代码,那应该很容易的。

第八问答
问:怎样给ECSHOP商城增加一个加入QQ群的快捷按钮
答:大家都知道,普通的加QQ群方法,一般是 先到QQ中查找群 --> 输入群号码 --> 发验证信息,等待群主或管理员通过,步骤比较繁琐。
现在简单了,我们可以直接在网页上放一个按钮,用户点击该按钮,便可以直接加入该QQ群,省略了一些繁杂的步骤。用户体验更友好一些。
以下教程讲解怎么给ECSHOP商城系统也加上如此功能。
以官方默认模板为例。
打开 themesdefaultlibrarypage_footer.lbi 

找到
<!-- QQ 号码 {foreach from=$qq item=im} -->

在它上边增加
ECSHOP QQ群: 1111111<a target="_blank" href="http://qun.qq.com/#jointhegroup/gid/31497022"><img border="0" src="http://cgi.qun.qq.com/gscgi/s1/gp.do?gid=31497022" alt="点击这里加入此群" title="点击这里加入此群"></a>



第九问答
问:轻松实现Ecshop商城多语言切换
答:很多人都想让自己的ECSHOP商城实现多语言支持(能够方便的在首页切换多语言)。其实实现起来也挺简单的。效果图如下:
下面就说一下修改方法。
A)、
首先打开 includds/init.php  文件,
找到 
require(ROOT_PATH . 'languages/' . $_CFG['lang'] . '/common.php');
与 
$smarty->assign('lang', $_LANG);
先将这两行代码删掉。

B)、找到 
if ((DEBUG_MODE & 1) == 1)
在它上边增加
if(!empty($_REQUEST['lang'])){
$_SESSION['lang']=$_REQUEST['lang'];
}
if (!empty($_SESSION['lang']))
{
switch($_SESSION['lang']){
  case 'zh_cn':
   $_CFG['lang']="zh_cn";
  break;
  case 'zh_tw':
   $_CFG['lang']="zh_tw";
  break;
  case 'en_us':
   $_CFG['lang']="en_us";
  break;
}
}
require(ROOT_PATH . 'languages/' . $_CFG['lang'] . '/common.php');
$smarty->assign('lang', $_LANG);


C)、修改 /themes/default/library/page_header.lbi 文件

在 
<div class="topNavR"></div>

上边添加
| <a href="?lang=zh_cn">简体</a> | 
<a href="?lang=zh_tw">繁体</a> | 
<a href="?lang=en_us">英文</a>


第十问答
问:怎样在Ecshop首页上显示最新评论(评论内容&时间)?
答:以“ECSHOP2.7.2 + 官方默认模板” 为例,其他模板大同小异,效果图如下图所示:


第一步:
将下面代码复制,并保存为一个库文件,文件名和保存路径为: /themes/default/library/index_comments.lbi 
<?php
if(!function_exists("get_comments")){
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;
}
}
$GLOBALS['smarty']->assign('my_comments',get_comments(10)); // 10条数据
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- 最新评论__Begin -->       
  <div class="box_2">
   <h3><span>最新评论</span></h3>
  <div class="top10List clearfix">
  <!--{foreach from=$my_comments item=comments}-->
      <ul class="clearfix">      
      <li style="padding:5px 10px;">
<a href="goods.php?id={$comments.id_value}" target="_blank">
{$comments.content|truncate:21:""}</a><br />
{$comments.add_time}
</li>
</ul>
  <!--{/foreach}-->
      </div>
  </div>

第二步:

在ECSHOP首页模板文件中,调用这个库文件
打开 themes/default/index.dwt 文件,
在 
</div>
  <!--left end-->
上面增加一行调用代码
<!-- #BeginLibraryItem "/library/index_comments.lbi" -->  <!-- #EndLibraryItem -->

清除一下缓存


第十一问答
问:请问Ecshop首页精品推荐(新品上市、热卖商品)的数量在哪设置
答:虽然只是一个很小的ECSHOP设置问题,但是QQ群里经常有人问到类似问题,所以将修改教程共享在这里。
方法:
进 后台 》模板管理 》设置模板, 
找到 “精品推荐、新品上架、热卖商品”打头的三行,
修改每行对应“数量”的那个输入框里的数字即可。


第十二问答
问:将ECSHOP分类树修改成一行两个
答:经常看到有朋友问“怎么将ECSHOP分类树显示为一排(行)两个”,也就是如下面的效果图:

这个ECSHOP模板修改问题,主要就是靠修改CSS来实现。但是不同模板的具体CSS代码是不一样的,所以不同模板的具体修改方法也是不完全相同的,没有通用的修改方法。
下面教程是以 2.7.2版 官方默认模板为例进行讲解的,已经测试通过,完全兼容IE6,IE7,火狐。其他模板请参照举一反三。

-------------------------------------------------------------------------------------------------------------------

打开 /themes/default/style.css 文件
找到
#category_tree dd{padding:3px 0 3px 10px;}

将它修改为
#category_tree dd{padding:3px 0 3px 10px;width:40%;overflow:hidden;float:left;white-space:nowrap;word-break:keep-all;display: inline;}

然后再打开  /themes/default/library/category_tree.lbi 文件
</dl>

下面增加一行代码
<div style="clear:both;"></div>


第十三问答
问:请问ECSHOP首页站内快讯在哪里添加和修改?
答:“添加新闻后在首页站内快讯处显示不出来?”、“请问首页中站内快讯(最新文章)在后台哪个位置管理”、“如何让发布的文章进入首页站内快讯”等等诸如此类的问题,经常在论坛里看到一些朋友在询问。
本ECSHOP教程就来讲解一下上述问题的解决办法:
进入 ECSHOP后台 》文章管理 》文章列表  》添加新文章,输入文章标题、文章内容,发布一篇文章即可。
不过有以下几个注意点很重要:  

1)、文章分类, 不能选择“系统分类及子分类”,要选择其他分类。如果不存在其他分类,请先建立
2)、文章重要性,要选择“置顶”。
发布完文章后,记得到后台“清除缓存”。

第十四问答
问:在ECSHOP首页增加一个浏览排行
答:最近有看到朋友在ECSHOP论坛里提问:如何在首页增加一个类似于“销售排行榜”的“浏览排行榜”,并且可以在后台的“模板设置”里进行控制。
由于系统默认是没有读取浏览排行的,所以这部分功能既得增加程序,又得增加模板。
本教程是以 ecshop2.7.2 官方默认模板为例进行讲解的。
效果图如下:


1)、将下面代码复制并保存到
一个新文件中,文件路径为: /themes/default/library/top10_click.lbi
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<div class="box">
<div class="box_2">
   <h3><span>浏览排行</span></h3>
  <div class="top10List clearfix">
  <!-- {foreach name=top_goods from=$top_goods_click item=goods}-->
  <ul class="clearfix">
<img src="../images/top_{$smarty.foreach.top_goods.iteration}.gif" class="iteration" />
<!-- {if $smarty.foreach.top_goods.iteration<4}-->
      <li class="topimg">
      <a href="{$goods.url}"><img src="{$goods.thumb}" alt="{$goods.name|escape:html}" class="samllimg" /></a>
      </li>
<!-- {/if} -->  
      <li {if $smarty.foreach.top_goods.iteration<4}class="iteration1"{/if}>
      <a href="{$goods.url}" title="{$goods.name|escape:html}">{$goods.short_name}</a><br />
      {$lang.shop_price}<font class="f1">{$goods.price}</font><br />
      </li>
    </ul>
  <!-- {/foreach} -->
  </div>
</div>
</div>
<div class="blank5"></div>

2)、修改 /includes/lib_goods.php 文件
在最下面增加一个函数
function get_top10_click()
{
$sql="SELECT goods_id, goods_name, shop_price, goods_thumb " .
           'FROM ' . $GLOBALS['ecs']->table('goods')." where is_on_sale = 1 AND is_alone_sale = 1 AND is_delete = 0 order by click_count desc limit 10";
$arr = $GLOBALS['db']->getAll($sql);
    for ($i = 0, $count = count($arr); $i < $count; $i++)
    {
        $arr[$i]['short_name'] = $GLOBALS['_CFG']['goods_name_length'] > 0 ?
                                    sub_str($arr[$i]['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $arr[$i]['goods_name'];
        $arr[$i]['url']        = build_uri('goods', array('gid' => $arr[$i]['goods_id']), $arr[$i]['goods_name']);
        $arr[$i]['thumb'] = get_image_path($arr[$i]['goods_id'], $arr[$i]['goods_thumb'],true);
        $arr[$i]['price'] = price_format($arr[$i]['shop_price']);
    }
return $arr;
}

3)、修改 /index.php 文件
$smarty->assign('top_goods',       get_top10());           // 销售排行

下面另起一行增加
$smarty->assign('top_goods_click',       get_top10_click());           // 浏览排行

修改模板文件 /themes/default/index.dwt
找到
<!-- #BeginLibraryItem "/library/promotion_info.lbi" -->
在它的前面增加
<!-- #BeginLibraryItem "/library/top10_click.lbi" --><!-- #EndLibraryItem -->


4)、修改 /admin/includes/lib_template.php 文件
'/library/invoice_query.lbi' => 0,

上边增加一行代码
'/library/top10_click.lbi' => 0,

5)、继续修改语言包文件  /languages/zh_cn/admin/template.php 
$_LANG['template_libs']['top10'] = '销售排行';

下边增加一行代码
$_LANG['template_libs']['top10_click'] = '浏览排行';

6)、修改  /themes/default/lib.xml 文件
找到
<lib>top10</lib>

并且在它下面另起一行,增加
<lib>top10_click</lib>

7)、最后进入 后台 》模板管理 》设置模板,是不是看到了期待已久的“浏览排行”,设置一下,并清除缓存,就OK了
第十五问答
问:在ECSHOP首页顶部增加通栏广告位的方法
答:ECSHOP系统默认预留的广告位很少,如何才能在首页或者其他页面增加自己想要的广告位呢??下面就讲一讲方法。
下面以“在ECSHOP首页顶部增加一个通栏广告”为例进行讲解。
另外:本例是在ECSHOP2.7.2 官方默认模板基础上进行讲解的,其他模板及其他页面原理相同。
第1步:
进入ECSHOP后台 》 广告管理 》广告位置,点击“增加广告位”按钮。
广告位名称输入“首页头部通栏广告位”,
广告位宽度输入“960”
广告位高度输入“100”。。。。。
点“确定”。
第2步:然后进入“广告列表”,点击“添加广告”按钮,
注意,广告位置下拉框 要选择 刚才第1步里添加的那个广告位,即“首页头部通栏广告位 [960x100]”。
上传一张广告图片,点确定。
第3步:打开首页模板文件  index.dwt 

找到下面代码
<!-- #BeginLibraryItem "/library/page_header.lbi" --><!-- #EndLibraryItem -->

在它下面增加几行代码
<div style="width:960px;margin:5px auto;padding:0 auto;">
<!-- TemplateBeginEditable name="首页头部通栏广告位(宽:960px)" -->
<!-- TemplateEndEditable -->
</div>

第4步:进入后台 》模板管理 》设置模板,选择首页模板。
到最下面找到“广告位”,点击“+”展开,
在第一个下拉框里
选择 “首页头部通栏广告位(宽:960px)”
在第二个下拉框里 选择 “首页头部通栏广告位 [960x100]”
点击 “确定”,保存,然后到首页看看,是不是通栏广告已经显示出来了
第十六问答
问:怎样让首页“站内快讯”垂直滚动显示(无缝滚动)?
答:Ecshop首页“站内快讯”默认是静止不动的,很多人想让它垂直滚动显示,这里简要说一下方法
如果只是要简单的垂直滚动 用 html 标签中的 <maquee> 就能实现,但是不能实现无缝结合。
如果想要无缝垂直滚动,就需要一点JS代码的支持。
下面就讲一讲如何实现“站内快讯”垂直无缝滚动显示:
将 library/new_articles.lbi 文件内容完全替换为下面代码即可:
(经测试完全兼容IE6,IE7,FIREFOX)
注意:下面方法已经在官方默认模板基础上测试完全通过,其他模板没做测试。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<div id="artup" style="overflow:hidden; height: 170px;">
<div id="artup1">
<ul style="padding:0;margin:0" id="artup1ul">
<!--{foreach name="new_articles" from=$new_articles item=article}-->
<li>
[<a href="{$article.cat_url}">{$article.cat_name}</a>] <a href="{$article.url}" title="{$article.title|escape:html}">{$article.short_title|truncate:10:"...":true}</a>
</li>
<!--{/foreach}-->
</ul>
</div>
<div id="artup2"> </div>
</div>
<script type="text/javascript">
var speed=30;
var ARTUP=document.getElementByIdx_x('artup');
var ARTUP1=document.getElementByIdx_x('artup1');
var ARTUP2=document.getElementByIdx_x('artup2');
var ARTUP1ul=document.getElementByIdx_x('artup1ul');
var result = "";
for(var i=0; i<25; i++) result += ARTUP1ul.innerHTML;
ARTUP1ul.innerHTML=result
ARTUP2.innerHTML=ARTUP1.innerHTML
function Marquee1(){
if(ARTUP2.offsetHeight-ARTUP.scrollTop<=0)
ARTUP.scrollTop-=ARTUP1.offsetHeight
else{
ARTUP.scrollTop++
}
}
var MyMar1=setInterval(Marquee1,speed)
ARTUP.onmouseover=function() {clearInterval(MyMar1)}
ARTUP.onmouseout=function() {MyMar1=setInterval(Marquee1,speed)}
</script>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章