爱腊梅 發表於 2023-6-7 00:00:00

Ecshop二次开发之自定义库文件和模板数据调用实例

<p>
本文实例讲述了Ecshop二次开发之自定义库文件和模板数据调用方法。分享给大家供大家参考。具体方法如下:</p>
<p>
Smarty的标签非常多,也比较繁琐,所以Ecshop使用了精简版的Smarty,其中用到的Smarty模板语法:</p>
<p>
{$keywords} 输出模板变量<br>
{$array.test.abc} 输出二维数组<br>
{$lang.remark_package} 语言包$lang<br>
{insert_scripts files='common.js'} 引入js文件<br>
&lt;!-- {foreach from=$property_group item=property} --&gt;xxxx&lt;!-- {/foreach} --&gt; 循环<br>
&lt;!-- {if $package_goods_list} --&gt;xxxx&lt;!-- {/if} --&gt;  判断<br>
&lt;!-- #BeginLibraryItem "/library/goods_tags.lbi" --&gt;&lt;!-- #EndLibraryItem --&gt;  引入goods_tags.lbi库文件,相当于PHP的include<br>
{*内容*}  html注释,只在模板上显示,页面上会被删除掉.Ecshop二次开发的数据调用,主要动用到以下两个目录下的文件<br>
dwt(模板文件)路径: themes\default<br>
lbi(库文件)路径: themes\default\library<br>
举个例子就很清楚了,是我从网上找来的,由于转载得很严重,所以不知道真正出处。<br>
我们在themes\default\library下新建一个名为newest_comments.lbi的库文件,写入以下内容:<br>
 </p>
<div>

<p>
代码如下:</p>
</div>
<div id="phpcode6">
if(!function_exists("get_new_comments")){<br>
function get_new_comments($num)<br>
{<br>
$sql = 'SELECT * FROM '. $GLOBALS['ecs']-&gt;table('comment') .<br>
' WHERE status = 1 AND parent_id = 0 and comment_type=0 '.<br>
' ORDER BY add_time DESC';<br>
if ($num &gt; 0)<br>
{<br>
$sql .= ' LIMIT ' . $num;<br>
}<br>
//echo $sql;<br>
$res = $GLOBALS['db']-&gt;getAll($sql);<br>
$comments = array();<br>
foreach ($res AS $idx =&gt; $row)<br>
{<br>
$comments[$idx]['add_time'] = $comments[$idx]['add_time'] = local_date<br>
($GLOBALS['_CFG']['time_format'], $row['add_time']);<br>
$comments[$idx]['user_name'] = $row['user_name'];<br>
$comments[$idx]['content'] = $row['content'];<br>
$comments[$idx]['id_value'] = $row['id_value'];<br>
}<br>
return $comments;<br>
}<br>
}<br>
$this-&gt;assign('new_comments',get_new_comments(10)); // 10条最新评论<br>
?&gt;<br>
&lt;!--数据调用-最新评论开始 --&gt;<br>
&lt;div&gt;<br>
&lt;!--{foreach from=$new_comments item=comment}--&gt;&lt;/p&gt; &lt;p&gt;&lt;div&gt;&lt;a href="goods.php?id={$comment.id_value}" target="_blank"&gt;<br>
{$comment.content|truncate:15:""}&lt;/a&gt;&lt;/div&gt;<br>
&lt;div&gt;时间:{$comment.add_time}&lt;/div&gt;<br>
&lt;!--{/foreach}--&gt;&lt;/div&gt;</div>
<p>
 </p>
<p>
这样一个库文件就做好了。我们发现,库文件可以使用PHP、Smarty标签和HTML混写的写法,这无疑大大降低了我们二次开发的难度。这个库文件的作用,就是取出数据库中的10条最新评论,并且循环输出到模板。</p>
<p>
接下来我们就要在模板中调用这个库文件,我们打开首页的模板themes\default\index.dwt(这里的dwt文件和页面都是一一对应,如商品页是goods.dwt,品牌页是brand.dwt)。我们在首页模板适当的地方加入:<br>
 </p>
<div>

<p>
代码如下:</p>
</div>
<div id="phpcode7">
&lt;!-- #BeginLibraryItem "/library/newest_comments.lbi" --&gt; @@@这里即使修改了也没反应@@@&lt;!-- #EndLibraryItem --&gt;</div>
<p>
 </p>
<p>
这样就实现了自定义库文件的编写和调用。</p>
<p>
细心的你可能会发现,在Ecshop的dwt模板文件中,调用库文件标签&lt;– #BeginLibraryItem “/library/和&lt;– #EndLibraryItem –&gt;之间存在着一些和对应的lbi库文件中重复的内容。你可以把它们当作是注释,用Dreamweaver等编辑器编辑模板时候的需要看见的注释。 真正的库文件内容还需要到相应的库文件中去修改。好吧 ,就是这些,简单吧。</p>
<p>
希望本文所述对大家的ecshop二次开发有所帮助。</p>
頁: [1]
查看完整版本: Ecshop二次开发之自定义库文件和模板数据调用实例