分享几个Ecshop中二次开发的常见方法
<p><strong>收货人信息的省市区设成非必选项</strong> <br><br>
一般面向国外用户的ECSHOP商城,可能会有这方面的需求:【将Ecshop中收货人信息的省市区设成非必选项】,其实也就是只留一个“请选择国家”的下拉选择框。 <br><br>
修改相关JS文件 <br><br>
打开 /js/shopping_flow.js 文件,将下面JS代码删除掉</p>
<div>
<div>
<span>JavaScript Code</span><span>复制内容到剪贴板</span>
</div>
<div id="code_7066">
<ol>
<li>
<p>
<span><span>if</span><span> (frm.elements[</span><span>'province'</span><span>] && frm.elements[</span><span>'province'</span><span>].value == 0 && frm.elements[</span><span>'province'</span><span>].length > 1) </span></span></p>
</li>
<li>
<p>
<span> { </span></p>
</li>
<li>
<p>
<span> err = </span><span>true</span><span>; </span></p>
</li>
<li>
<p>
<span> msg.push(province_not_null); </span></p>
</li>
<li>
<p>
<span> } </span></p>
</li>
<li>
<p>
<span> </span><span>if</span><span> (frm.elements[</span><span>'city'</span><span>] && frm.elements[</span><span>'city'</span><span>].value == 0 && frm.elements[</span><span>'city'</span><span>].length > 1) </span></p>
</li>
<li>
<p>
<span> { </span></p>
</li>
<li>
<p>
<span> err = </span><span>true</span><span>; </span></p>
</li>
<li>
<p>
<span> msg.push(city_not_null); </span></p>
</li>
<li>
<p>
<span> } </span></p>
</li>
<li>
<p>
<span> </span><span>if</span><span> (frm.elements[</span><span>'district'</span><span>] && frm.elements[</span><span>'district'</span><span>].length > 1) </span></p>
</li>
<li>
<p>
<span> { </span></p>
</li>
<li>
<p>
<span> </span><span>if</span><span> (frm.elements[</span><span>'district'</span><span>].value == 0) </span></p>
</li>
<li>
<p>
<span> { </span></p>
</li>
<li>
<p>
<span> err = </span><span>true</span><span>; </span></p>
</li>
<li>
<p>
<span> msg.push(district_not_null); </span></p>
</li>
<li>
<p>
<span> } </span></p>
</li>
<li>
<p>
<span> } </span></p>
</li>
</ol>
</div>
</div>
<p>
<span>修改程序文件 </span><br><br><span>修改 /inlcudes/lib_order.php 文件,将下列PHP代码删除掉</span></p>
<div>
<div>
<span>PHP Code</span><span>复制内容到剪贴板</span>
</div>
<div id="code_3645">
<ol>
<li>
<p>
<span><span>if</span><span> (</span><span>$res</span><span>) </span></span></p>
</li>
<li>
<p>
<span> { </span></p>
</li>
<li>
<p>
<span> </span><span>if</span><span> (</span><span>empty</span><span>empty</span><span>(</span><span>$consignee</span><span>[</span><span>'province'</span><span>])) </span></p>
</li>
<li>
<p>
<span> { </span></p>
</li>
<li>
<p>
<span> </span><span>/* 没有设置省份,检查当前国家下面有没有设置省份 */</span><span> </span></p>
</li>
<li>
<p>
<span> </span><span>$pro</span><span> = get_regions(1, </span><span>$consignee</span><span>[</span><span>'country'</span><span>]); </span></p>
</li>
<li>
<p>
<span> </span><span>$res</span><span> = </span><span>empty</span><span>empty</span><span>(</span><span>$pro</span><span>); </span></p>
</li>
<li>
<p>
<span> } </span></p>
</li>
<li>
<p>
<span> </span><span>elseif</span><span> (</span><span>empty</span><span>empty</span><span>(</span><span>$consignee</span><span>[</span><span>'city'</span><span>])) </span></p>
</li>
<li>
<p>
<span> { </span></p>
</li>
<li>
<p>
<span> </span><span>/* 没有设置城市,检查当前省下面有没有城市 */</span><span> </span></p>
</li>
<li>
<p>
<span> </span><span>$city</span><span> = get_regions(2, </span><span>$consignee</span><span>[</span><span>'province'</span><span>]); </span></p>
</li>
<li>
<p>
<span> </span><span>$res</span><span> = </span><span>empty</span><span>empty</span><span>(</span><span>$city</span><span>); </span></p>
</li>
<li>
<p>
<span> } </span></p>
</li>
<li>
<p>
<span> </span><span>elseif</span><span> (</span><span>empty</span><span>empty</span><span>(</span><span>$consignee</span><span>[</span><span>'district'</span><span>])) </span></p>
</li>
<li>
<p>
<span> { </span></p>
</li>
<li>
<p>
<span> </span><span>$dist</span><span> = get_regions(3, </span><span>$consignee</span><span>[</span><span>'city'</span><span>]); </span></p>
</li>
<li>
<p>
<span> </span><span>$res</span><span> = </span><span>empty</span><span>empty</span><span>(</span><span>$dist</span><span>); </span></p>
</li>
<li>
<p>
<span> } </span></p>
</li>
<li>
<p>
<span> } </span></p>
</li>
</ol>
</div>
</div>
<p>
<span>然后收货人信息那里,只选择国家不选择省市区,也照样能提交。 </span><br><br><strong>修改底部的在线人数</strong><span> </span><br><br><span>建站之初,网站的在线人数肯定不会很多,那么我们可以稍微修改下ECSHOP的程序,让页面底部显示的在线人数 翻几番。 </span><br><br><span>具体方法如下: </span><br><br><span>打开 /includes/lib_insert.php文件,找到下面代码</span></p>
<div>
<div>
<span>PHP Code</span><span>复制内容到剪贴板</span>
</div>
<div id="code_5291">
<ol>
<li>
<p>
<span><span>$online_count</span><span> = </span><span>$GLOBALS</span><span>[</span><span>'db'</span><span>]->getOne(</span><span>"SELECT COUNT(*) FROM "</span><span> . </span><span>$GLOBALS</span><span>[</span><span>'ecs'</span><span>]->table(</span><span>'sessions'</span><span>)); </span></span></p>
</li>
</ol>
</div>
</div>
<p>
<span>将之修改为:</span></p>
<div>
<div>
<span>PHP Code</span><span>复制内容到剪贴板</span>
</div>
<div id="code_7348">
<ol>
<li>
<p>
<span><span>$online_count</span><span> = </span><span>$GLOBALS</span><span>[</span><span>'db'</span><span>]->getOne(</span><span>"SELECT COUNT(*) FROM "</span><span> . </span><span>$GLOBALS</span><span>[</span><span>'ecs'</span><span>]->table(</span><span>'sessions'</span><span>))*15; </span></span></p>
</li>
</ol>
</div>
</div>
<p>
<br><span>这样,你的ECSHOP商城显示的在线人数就会多15倍,当然你也可以将15改成100,这样就会多100倍。 </span><br><br><strong>文章的浏览次数 </strong><br><br><span>修改数据库结构 </span><br><br><span>进ECSHOP后台 》 数据库管理 》SQL查询 ,输入下面SQL语句</span><br>
</p>
<div>
<p>
代码如下:</p>
</div>
<div id="phpcode6">
<br>
ALTER TABLE `ecs_article` ADD `click_count` INT( 10 ) NOT NULL</div>
<p>
<br><br><span>点击 “提交查询” </span><br><br><span>修改 /article.php </span><br><br><span>搜索</span></p>
<div>
<div>
<span>PHP Code</span><span>复制内容到剪贴板</span>
</div>
<div id="code_2984">
<ol>
<li>
<p>
<span><span>else</span><span> </span></span></p>
</li>
<li>
<p>
<span>{ </span></p>
</li>
<li>
<p>
<span> </span><span>$smarty</span><span>->display(</span><span>'article_pro.dwt'</span><span>, </span><span>$cache_id</span><span>); </span></p>
</li>
<li>
<p>
<span>} </span></p>
</li>
</ol>
</div>
</div>
<p>
<span>在它下面增加一行PHP代码,如下:</span><br>
</p>
<div>
<p>
代码如下:</p>
</div>
<div id="phpcode7">
<br>
$db->query("update ".$ecs->table('article')." set click_count=click_count+1 where article_id=$article_id") ;</div>
<p>
<br><br><span>修改 /themes/default/article.dwt </span><br><br><span>找到</span><br>
</p>
<div>
<p>
代码如下:</p>
</div>
<div id="phpcode8">
<br>
{$article.add_time}</div>
<p>
<br><br><span>在它后边增加PHP代码,如下:</span><br>
</p>
<div>
<p>
代码如下:</p>
</div>
<div id="phpcode9">
<br>
/ 浏览次数:{$article.click_count}</div>
<p>
<br><br><span>这种修改方法,要清除缓存或者缓存自动更新后才能体现出最新的浏览次数来,如果你想能实时显示最新的浏览次数,就要构造一个INSERT函数,并在模板中用 {insert name =“xxx”} 调用。</span></p> 顶一个!很实用的技巧分享,LZ辛苦了~
第一个省市区非必填的修改确实很实用,我们之前做出口电商的时候就遇到过这个问题,国外很多买家习惯自己填地址,不喜欢被那些下拉框束缚,删掉JS验证和PHP验证确实是最直接的办法。
第二个在线人数翻倍这个...哈哈,LZ太实诚了,这样直接乘15会被发现的吧。不过对于新站来说确实是个小技巧,至少看起来人气旺一些嘛~
第三个文章浏览次数的功能很棒!不过我想补充一下,如果想让浏览次数实时更新而不需要等缓存的话,可以在模板里用{insert name="insert_click" type="article" id=$article.id}这种方式来调用,这样每次刷新页面都会更新计数,不用等缓存失效。
另外想问下LZ,有没有遇到过修改省市区必填项后,订单打印或发货单那里显示空白的问题?我们之前改完发现后台打印单据的时候收货地址那里显示不正常,后来是改了另一个文件才解决的。
感谢LZ分享,一起学习~
頁:
[1]