ECshop 模版开发 汇总
2016-07-07 16:03 来源:www.chinab4c.com 作者:ecshop专家
免费开源网店系统ecshop广告的调用的方法 免费开源网店系统ecshop广告的调用的方法,分享多种调用ecshop广告的方法,对用ecshop建站的朋友可以学习一下。 方法1: 第一步、 从后台首先添加广告位置 ,然后选择这个广告位置添加图片。 第二步、 需要调广告的,php文件里加以下代码,获取要显示的广告 //中部第一广告位 $ads = array( 'num'=>'1',//广告数量 'id'=>'1'//广告位置id 这个id 你打开后台广告位置列表 鼠标放到每一条可以看到袄。 ); $banner =insert_ads($ads); $smarty->assign("banner",$banner);//设置广告位内容,在模板里调用 第三步 打开模板文件 如果是只有一个广告{$banner} ok搞定,如果多个, 要循环数组{$banner},显示广告内容。 方法2:(目前在用的,推荐) 在后台添加广告位置,然后在该广告位置下添加广告(注意:每个广告位置下加一个广告),记住该广告位置的ID,然后在模板中加入下面代码即可 {insert name=‘ads‘ id=2 num=1} ID:广告位置ID num:显示数量 方法3:就是官方默认的方法。先添加广告位,然后添加模板的广告位区域,再在将两者对应上。 |
回答:
ecshop之transport和jquery冲突之完美解决方案 ecshop的transport.js文件和Jquery是冲突的,两个文件不能同时调用,现给出以下完美解决方案: 原因分析: 在transport.js文件中,大概 580行到590行之间,这个句用于格式化json,他重写了object的结构,导致于js框架冲突。冲突的原因是jquery给一个object增加了很多元素,那么在Object.prototype.toJS**tring = function () 这个函数中 for (k in this) 语句中进行了无数次的循环,导致网页很卡,并且在IE中会报错。 解决方案: 根本的解决办法是不用transport.js中的json功能,那么就要有一个相同的功能来代替它,这里我选用jquery-json1.3.js。首先要把transport.js中的json功能删除。由于实现json功能的函数有区别,所以要麻烦改掉原ecshop中各个地方用到的toJS**tring()函数。 解决步骤: 1. 下载附件中的js附件,并替换掉原文件。(主要去掉了transport.js的json功能并新增新的json功能) 2. page_header.lbi 中添加 {insert_scripts files='jquery.js,jquery.json-1.3.js'} 3. 在所有的JS中。 替换 *.toJS**tring() 为 $.toJSON(*) 替换 *.parseJSON() 为 $.evalJSON(*) 替换(不是去掉)页面所有的$(){}函数,防止jquery不生效(解释:这一步是要替换掉原ecshop里的$(){}这个函数,因为它与jquery是冲突的,解决的办法很多,可以用其他函数代替,比如getId(){}等等,也可以用jquery本身来解决,在此,我就不具体做例子了,由于最近比较忙,好多天没研究ecshop了。^_^ .还有一个解决办法,大家自行研究吧: jQuery.noConflict() 运行这个函数将变量$的控制权让渡给第一个实现它的那个库。 这有助于确保jQuery不会与其他库的$对象发生冲突。 在运行这个函数后,就只能使用jQuery变量访问jQuery对象。例如,在要用到$("div p")的地方,就必须换成jQuery("div p")。 注意:这个函数必须在你导入jQuery文件之后,并且在导入另一个导致冲突的库之前使用。当然也应当在其他冲突的库被使用之前,除非jQuery是最后一个导入的。 ) 注意:可能要替换掉很多地方,请大家不要怕麻烦 解决范例: 1.在商品浏览页,用户评论这里: Ajax.call('comment.php', 'cmt=' + cmt.toJS**tring(), commentResp**e, 'POST', 'JSON'); 替换为 Ajax.call('comment.php', 'cmt=' + $.toJSON(cmt), commentResp**e, 'POST', 'JSON'); 2.index.js 里 var res = result.parseJSON(); 替换为 var res = $.evalJSON(result); |
ecshop支持用户名邮箱或手机号码登录 开源网店系统ecshop支持用户名,邮箱或手号码登录的插件,发布出来与大家共享下。 在user.php 的 if (empty($_POST['captcha'])) { show_message($_LANG['invalid_captcha'], $_LANG['relogin_lnk'], ‘user.php’, ‘error’); } 后面增加: if(is_email($username)) { $sql =”select user_name from “.$ecs->table(‘users’).” where email=’”.$username.”‘”; $username_e = $db->getOne($sql); if($username_e) $username=$username_e; } if(is_telephone($username)) { $sql =”select user_name from “.$ecs->table(‘users’).” where mobile_phone=’”.$username.”‘”; $username_e = $db->getOne($sql); if($username_e) $username=$username_e; } 在user.php的最底部加: function is_telephone($phone){ $chars = “/^13[0-9]{1}[0-9]{8}$|15[0-9]{1}[0-9]{8}$|18[0-9]{1}[0-9]{8}$/”; if (preg_match($chars, $phone)){ return true; } } |
网店系统ECSHOP设置用户登录后才能查看商品详情 今天有一个网友通过网站咨询我关于如何**ecshop网店系统登录后才可以看到商品,实现ecshop网店系统登录后才看商品需要在商品详情页模板文件里加判断代码。 实现ecshop网店系统登录后才看商品需要判断当前用户的登录状态,鲜志建站以默认模板为例,打开 /themes/default/goods.dwt 在 <!–当前位置 end–> 后边添加 {if $smarty.session.user_id gt 0} 继续,在 <!–友情链接 end–> 下添加 {else} <div>您未登录,只有登录用户才有权查看!<a href="login.php">请登录</a></div> {/if} 这样修改以后,就可以实现只有登录用户才能查看商品详情,未登录用户无法查看商品详情。ecshop网店系统登录后才看商品的方法分享给<a href="http://www.xazzz.com">制作网店</a>的朋友们。 |
ecshop之transport和jquery冲突之完美解决方案 ecshop的transport.js文件和Jquery是冲突的,两个文件不能同时调用,现给出以下完美解决方案: 原因分析: 在transport.js文件中,大概 580行到590行之间,这个句用于格式化json,他重写了object的结构,导致于js框架冲突。冲突的原因是jquery给一个object增加了很多元素,那么在Object.prototype.toJS**tring = function () 这个函数中 for (k in this) 语句中进行了无数次的循环,导致网页很卡,并且在IE中会报错。 解决方案: 根本的解决办法是不用transport.js中的json功能,那么就要有一个相同的功能来代替它,这里我选用jquery-json1.3.js。首先要把transport.js中的json功能删除。由于实现json功能的函数有区别,所以要麻烦改掉原ecshop中各个地方用到的toJS**tring()函数。 解决步骤: 1. 下载附件中的js附件,并替换掉原文件。(主要去掉了transport.js的json功能并新增新的json功能) 2. page_header.lbi 中添加 {insert_scripts files='jquery.js,jquery.json-1.3.js'} 3. 在所有的JS中。 替换 *.toJS**tring() 为 $.toJSON(*) 替换 *.parseJSON() 为 $.evalJSON(*) 替换(不是去掉)页面所有的$(){}函数,防止jquery不生效(解释:这一步是要替换掉原ecshop里的$(){}这个函数,因为它与jquery是冲突的,解决的办法很多,可以用其他函数代替,比如getId(){}等等,也可以用jquery本身来解决,在此,我就不具体做例子了,由于最近比较忙,好多天没研究ecshop了。^_^ .还有一个解决办法,大家自行研究吧: jQuery.noConflict() 运行这个函数将变量$的控制权让渡给第一个实现它的那个库。 这有助于确保jQuery不会与其他库的$对象发生冲突。 在运行这个函数后,就只能使用jQuery变量访问jQuery对象。例如,在要用到$("div p")的地方,就必须换成jQuery("div p")。 注意:这个函数必须在你导入jQuery文件之后,并且在导入另一个导致冲突的库之前使用。当然也应当在其他冲突的库被使用之前,除非jQuery是最后一个导入的。 ) 注意:可能要替换掉很多地方,请大家不要怕麻烦 解决范例: 1.在商品浏览页,用户评论这里: Ajax.call('comment.php', 'cmt=' + cmt.toJS**tring(), commentResp**e, 'POST', 'JSON'); 替换为 Ajax.call('comment.php', 'cmt=' + $.toJSON(cmt), commentResp**e, 'POST', 'JSON'); 2.index.js 里 var res = result.parseJSON(); 替换为 var res = $.evalJSON(result); |
ECShop首页不同样式调用某分类的商品 ecshop作为免费开源的网店系统,真的很好用,鲜志建站,今天要给大家分享,在ecshop首页以不同的风格样式调用不同商品分类的ecshop模板标签处理方法,废话不多说了,直接上ecshop模板代码: 首先要确定,在ecshop首页模板文件里,出现如下含义的代码 <!– TemplateBeginEditable name="某分类区域" –><!– TemplateEndEditable –> 1、后台“模板管理——设置模板”里有“分类下的商品”,可以调用设置。 调用某个分类下的商品,都需要先在后台设置模板那里设置显示和显示条数, 2、在需要调用的模板里放上相应的代码即可: <!--{foreach from=$cat_goods_5 item=goods}--> <div class="xgoods"> <div class="mg"><a href="{$goods.url}" target="_blank"><img src="{$goods.thumb}" alt="{$goods.name|escape:html}" width="67" height="56" border="0" class="imgb"/></a></div> <div class="name"><a href="{$goods.url}" target="_blank">{$goods.short_name|escape:html|truncate:10}</a><br /> <span class="fontr fontb fontbig">{$goods.shop_price}</span></div> </div> <!--{/foreach}--> 说明:上面的$cat_goods_5 ,其中5就是你想要调用的栏目ID值,把它改成你要调用的栏目ID值即可。 |
真是个有心人 不错 支持下 |
真是个有心人 |
总结的很不错哇 |
【转】ECShop开发系列教程-ECShop模板原理 模板的原理 类似Smarty/ECShop这类模板的原理如下图所示。 1. 首先是编译模板 ECShop/Smart是利用PHP引擎,所以编译的结果是一个PHP文件,其编译过程就是 将分隔符{}替换成PHP的标准分隔符<?PHP ?>, 将$var替换成 echo $var; 或者print $var; 将其他的比如foreach和if等也替换成标准的PHP语法。 将{include file…}之类的则替换成标准的PHP的inlcude … 其余都是等效替换。 2. 其次是生成编译结果 编译结果是PHP文件,并且编译结果可以重用,所以这种文件会存到临时缓存目录里面。 3. 利用PHP引擎执行结果 输出HTML结果。 ECShop模板的原理 ECShop的模板原理和上面基本类似,就是在编译的时候和Smarty模板有所修改,比较重要的有一下几点: 1. 模板的执行流程 $smarty->display $smarty->fetch 返回HTML结果(所有模板) $smarty->fetch_str(先编译成PHP、在给变量赋值、计算结果) 1) $smarty->smarty_prefilter_preCompile (编译成PHP) 2) $smarty->select (计 算每一个变量、表达式的结果,替换成标准PHP语法) 这一步是通过正则 实现的,匹配每一个{},将结果传给 $smarty->select,改方法通过switch/case逐一分析,替换成对应的表达式。 【所以添加自定义标签、自定义表达式可以修改此处。】 3) $smarty->get_para $smarty->select通过调用get_para来实现获取具体变量的值。 4) $smarty->get_val 而$smarty->get_para通过get_val来计算最终变量的值。 【自定义函数在此处添加,注意自定义函数和自定 义标签的区别】 $smarty->_eval 替换成标准的PHP文件后通过eval来执行结果。 2. Lbi文件替换 在dwt文件中,类似<!-- #BeginLibraryItem "/library/**.lbi" --><!-- #EndLibraryItem -->这样代码中间的所有的代码 被替换成一个 {include file /library/xx.lbi} 3. Editable的region替换 在dwt文件中,类似 <!-- TemplateBeginEditable name="左边区域" --><!-- TemplateEndEditable -->中间的内容,都被 动态替换。 替换原理 首先是get_dyna_libs($theme, $tmp)函数得到当前theme下$tmp文件的所有动态区域,该函数读取数据库中的记录,按照后台设置的顺序排序。 返回的每个区块有三个参数,ID、Number、Type。 ID是标识,Number表示插入的个数,Type有1、2、3、4,分别代表:分类的商品、品牌的商品、文章列表、广告位。 然后把每个<!-- TemplateBeginEditable name="区域名称" --><!-- TemplateEndEditable -->里面的内容全部替换。 4. 自定义函数等 |
支持一下,要是能有一个较为简介的章节目录 这样就更系统了。 |
[共享] 如何在商品列表页添加商品编号调用 [共享] 如何在商品列表页添加商品编号调用 本帖最后由 linxiflash 于 2012-12-7 14:04 编辑 修改category.php 448 行改为以下内容 $sql = 'SELECT g.goods_id, g.goods_name, g.goods_sn, g.goods_name_style, g.market_price, g.is_new, g.is_best, g.is_hot, g.shop_price AS org_price, ' . 复制代码 503行 $arr[$row['goods_id']]['name'] = $row['goods_name']; 后面添加代码 $arr[$row['goods_id']]['goods_sn']= $row['goods_sn']; 然后在模版category.dwt 中需要显示编号的地方添加 {$goods.goods_sn} 或 :<strong>{$lang.goods_sn}</strong>{$goods.goods_sn} 演示 www.cnairtoy.com |
挺用心的啊 |
果然很强大!!! |
学习了,支持! |
最近更新
常用插件
- ecshop订单聚合插件
ecshop订单聚合插件,主要是为了方便ecshop中订单产品到货情况的分析和...
- ecshop虚拟发货插件
ecshop虚拟发货插件介绍: ecshop虚拟发货插件,主要为了通过后台手动录...
- ecshop注册审核插件
ecshop插件介绍:ecshop会员注册审核插件,主要是在前台提供给注册的时候...
- ecshop的oss插件
ecshop的oss插件免费共享了,oss,ecshoposs...
- ecshop没登陆情况下订单查
ecshop没登陆情况下订单查询插件,主要是针对ecshop在没有登陆的情况下...
ecshop热门问答
ecshop热门资料
ecshop好友
ecshop语音
直接购买
ecshop浏览历史
ecshopurl重写
ecshop用户名缩写
ecshop颜色属性
ecshop浏览次数
ecshop左边框
ecshop发挥
ecshop欢迎光临本店
ecshop白名单
ecshop最大限度
ecshopVista
ecshop模板制作
ecshop是不是
ecshopPink
ecshop产品订购
ecshop团购插件
ecshopCGI
ecmall系统参数
黑ecshop
ecshop一级地区
ecshop短信插件
ecshop导航
ecshop空购物车
ecshopwriting
ecshop更新提示
ecshop推荐品
ecshop美食