标签归档:ecshop

Ecshop二次开发的学习笔记

最近在做哇拍商城,用ecshop二次开发。写一写很通俗的,很深入浅出的,一个初学者写的关于Ecshop的学习笔记

开始是做一个模板,把现成的HTML的页面做成一个模板主题,应用到ecshop当中去,一开始根本不知道如何下手,因为那些dwt和lib文件都看不懂,后来看了山西齐老师的教学视频。一共四十集之后(下载地址http://xaphp.com/forum.php?mod=viewthread&tid=1121&extra=page%3D1),才稍微有点门道,其实蛮简单的,ecshop可开发性就在于,它把所用的模块全部都分开来了,如果你想用哪一块,就可以直接用库文件来加载,大致的顺序就是先是读取.php文件,在读取.dwt文件,再读取.dwt模板文件里面的.lib文件,也就是库文件,总结一个经验,你在修改每个库文件的时候,作为css的class标签可以更改,但是作为id的标签千万不要更改,一旦更改,就一定会出问题,因为涉及到js调用和ajax的载入,在用户登陆框的时候我就遇到了这个麻烦,在载入,member_info的时候,页面没有跳转,我意识到是js的id载入出问题,没有找到相应的js,于是就修改了相同的id即可,这个问题在修改模板的时候很常见。

再者,如果只是单纯做模板的话,只需要看一个叫做“ecshop模板制作六脉神剑”的文档,蛮有用的东西,有个关联的思路,就是,一个功能关联几个文件,最好是能txt一下,比如,跟用户有关的所有lbi文件。以user开头的三个加上以membei的一个,就在这里面修改,即可,就是有时候拆分Html的时候会有些吃力。修改提示语言也很简单,.language文件夹里面寻找即可。如果是做二次开发功能的话,增加删改的话,主要是函数这块,不细说,因为我还没开始做功能性 的二次开发。

Ecshop模板中foreach的使用方法

1:foreach使用规则,他有以下几个参数 from ,item name iteration index
2:如何使用foreach循环

如果php要传递一个数组(如:$array)给ecshop的smarty模板.那么我们将通过from=$array 来接受,写法是

{foreach from = $array item = item}

3:

ecshop中smarty的下标如何表示,请看下面的例子:

{foreach from = $array item = item name=name}
{$smarty.foreach.name.iteration}
{/foreach}

这里的iteration就是从1开始的下标,
如果要从0开始的下标,应该使用{$smarty.foreach.name.index}
4:如何判断是否是foreach循环的开始和结束,最后一个元素.

{if $smarty.foreach.last}

表示循环的最后一个元素.

{if $smarty.freach.first}

表示循环的开始.

 

5:如何使用双重循环.

举例如下:

{foreach from = $test item =item}

{foreach from=$item.children item=child}
{$child.name}
{/foreach}
{/foreach}

如何去除Ecshop的底部版权(Powered by ECShop)

ecshop版权做的很~~坑爹,今天删掉了的时候,发现,它会在我的page_footer.lbi里面跳来跳去,感觉不是很好,然后就搜集了一下方法,贴出来,主要的实现原理是删掉出现版权信息的调用标签,还有就是删掉ecshop伪装的js。

1、
首先修改模板文件,
以官方默认模板为例,
打开ECSHOP模板文件夹(themes/default/library/)下的 page_footer.lbi 文件
删除下面这一行

 

{foreach from=$lang.p_y item=pv}{$pv}{/foreach}{$licensed}<br />

 

2、
修改JS文件
打开 /js/common.js 文件,找到下面代码并删除之

 

onload = function()
{
var link_arr = document.getElementsByTagName(String.fromCharCode(65));
var link_str;
var link_text;
var regg, cc;
var rmd, rmd_s, rmd_e, link_eorr = 0;
var e = new Array(97, 98, 99,
100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
120, 121, 122
);

try
{
for(var i = 0; i < link_arr.length; i++)
{
link_str = link_arr[i].href;
if (link_str.indexOf(String.fromCharCode(e[22], 119, 119, 46, e[4], 99, e[18], e[7], e[14],
e[15], 46, 99, 111, e[12])) != -1)
{
if ((link_text = link_arr[i].innerText) == undefined)
{
throw "noIE";
}
regg = new RegExp(String.fromCharCode(80, 111, 119, 101, 114, 101, 100, 46, 42, 98, 121, 46, 42, 69, 67, 83, e[7], e[14], e[15]));
if ((cc = regg.exec(link_text)) != null)
{
if (link_arr[i].offsetHeight == 0)
{
break;
}
link_eorr = 1;
break;
}
}
else
{
link_eorr = link_eorr ? 0 : link_eorr;
continue;
}
}
} // IE
catch(exc)
{
for(var i = 0; i < link_arr.length; i++)
{
link_str = link_arr[i].href;
if (link_str.indexOf(String.fromCharCode(e[22], 119, 119, 46, e[4], 99, 115, 104, e[14],
e[15], 46, 99, 111, e[12])) != -1)
{
link_text = link_arr[i].textContent;
regg = new RegExp(String.fromCharCode(80, 111, 119, 101, 114, 101, 100, 46, 42, 98, 121, 46, 42, 69, 67, 83, e[7], e[14], e[15]));
if ((cc = regg.exec(link_text)) != null)
{
if (link_arr[i].offsetHeight == 0)
{
break;
}
link_eorr = 1;
break;
}
}
else
{
link_eorr = link_eorr ? 0 : link_eorr;
continue;
}
}
} // FF

try
{
rmd = Math.random();
rmd_s = Math.floor(rmd * 10);
if (link_eorr != 1)
{
rmd_e = i - rmd_s;
link_arr[rmd_e].href = String.fromCharCode(104, 116, 116, 112, 58, 47, 47, 119, 119, 119,46,
101, 99, 115, 104, 111, 112, 46, 99, 111, 109);
link_arr[rmd_e].innerHTML = String.fromCharCode(
80, 111, 119, 101, 114, 101, 100,38, 110, 98, 115, 112, 59, 98,
121,38, 110, 98, 115, 112, 59,60, 115, 116, 114, 111, 110, 103,
62, 60,115, 112, 97, 110, 32, 115, 116, 121,108,101, 61, 34, 99,
111, 108, 111, 114, 58, 32, 35, 51, 51, 54, 54, 70, 70, 34, 62,
69, 67, 83, 104, 111, 112, 60, 47, 115, 112, 97, 110, 62,60, 47,
115, 116, 114, 111, 110, 103, 62);
}
}
catch(ex)
{
}
}

 

3、

最后别忘了去后台清除一下缓存