欢迎光临杨雨的个人博客站!

杨雨个人网站-杨雨个人博客-杨照佳

杨雨个人博客网站

关注互联网和搜索引擎的个人博客网站

首页 > cms使用教程 > ecshop使用教程 >

ecshop自定义dwt调用page_header.lbi和page_footer.lbi

发布时间:2016-06-19  编辑:杨雨个人博客网站   点击:   

接到需求说要ecshop增加一个新的页面,作为优惠活动规则的介绍之用,之前对ecshop各种修改,但是这次自己做页面还是第一次,文件太多,函数也 太多,一个一个的读过来时间很头疼的事情,于是就参照goods.dwt和goods.dwt来做页面,由于该页面仅仅是

一个优惠活动规则的介绍,所以静态的页面就可以搞定。由于顶部、尾部、还有一个左边的分类树和浏览记录是需要,所以需要在dwt文件中引入 page_header.lbi、page_footer.lbi、category_tree.lbi、以及history.lbi四个库文件。下面我 们来一一说明

一、引入lbi库原理

因为ecshop使用的是smarty引擎,实现了php代码和Html代码(dwt文件)的分离,所以在dwt文件中引用的ecshop变量{$xx} 以及引入lbi文件中的{$xx}都必须事先在对应的php中assign,比如a.dwt中的ecshop变量需要现在a.php中assign

二、详细

2.1、page_header.lbi和page_footer.lbi的引入

引入代码:

<!-- #BeginLibraryItem "/library/page_header.lbi" --><!-- #EndLibraryItem --> <!-- #BeginLibraryItem "/library/page_footer.lbi" --><!-- #EndLibraryItem -->

查看其中任意一个的代码,以page_header.lbi为例:

<meta http-equiv="Content-Type" content="text/Html; charset=utf-8"> <script type="text/javascript"> var process_request = "{$lang.process_request}"; </script> <div> <div><a href="../index.php"><img src="../images/logo.gif" /></a></div> <div> <ul> <li> {insert_scripts files='transport.js,utils.js'} <font>{* ECSHOP 提醒您:根据用户id来调用member_info.lbi显示不同的界面 *}{insert} </font> </li> <!--{if $navigator_list.top}--> <li> <!-- {foreach name=nav_top_list from=$navigator_list.top item=nav} --> <a href="{$nav.url}" <!-- {if $nav.opennew eq 1} --> target="_blank" <!-- {/if} -->>{$nav.name}</a> <!-- {if !$smarty.foreach.nav_top_list.last} --> | <!-- {/if} --> <!-- {/foreach} --> <div></div> </li> <!-- {/if} --> </ul> </div> </div> <div></div> <div> <a href="../index.php"{if $navigator_list.config.index eq 1}{/if}>{$lang.home}<span></span></a> <!-- {foreach name=nav_middle_list from=$navigator_list.middle item=nav} --> <a href="{$nav.url}" {if $nav.opennew eq 1}target="_blank" {/if} {if $nav.active eq 1}{/if}>{$nav.name}<span></span></a> <!-- {/foreach} --> </div> <!--search start--> <div> <div> <script type="text/javascript"> {literal} <!-- function checkSearchForm() { if(document.getElementById('keyword').value) { return true; } else { alert("{$lang.no_keywords}"); return false; } } --> {/literal} </script> {if $searchkeywords} {$lang.hot_search} : {foreach from=$searchkeywords item=val} <a href="search.php?keywords={$val|escape:url}">{$val}</a> {/foreach} {/if} </div> <form method="get" action="search.php" onSubmit="return checkSearchForm()"> <select> <option value="0">{$lang.all_category}</option> {$category_list} </select> <input type="text" value="{$search_keywords|escape}"/> <input type="submit" value="" /> <a href="search.php?act=advanced_search">{$lang.advanced_search}</a> </form> </div> <!--search end-->

通过看代码我们会发现navigator_list这个变量(下划线标注部分),但是通过搜索good.php文件,并没有发现有这个变量被assign,那么他来自哪里呢?

经过仔细研究发现这个navigator_list变量是在includes/lib_main.php中的assign_template函数中被 assign,而在goods.php中引用了这个方法,那么到此为止,这个问题得到解决,我们需要在a.php中也调用这个函数。

2.2、category_tree.lbi的引入

<meta http-equiv="Content-Type" content="text/Html; charset=utf-8"> <div> <div> <div> <!--{foreach from=$categories item=cat}--> <dl> <dt><a href="{$cat.url}">{$cat.name|escape:Html}</a></dt> <!--{foreach from=$cat.cat_id item=child}--> <dd><a href="{$child.url}">{$child.name|escape:Html}</a></dd> <!--{foreach from=$child.cat_id item=childer}--> <dd>&nbsp;&nbsp;<a href="{$childer.url}">{$childer.name|escape:Html}</a></dd> <!--{/foreach}--> <!--{/foreach}--> </dl> <!--{/foreach}--> </div> </div> </div> <div></div>

我们看到红色下划线部分变量是通过调用includes/lib_goods.php的get_categories_tree函数进行引入

2.3、history.lbi的引入

查看其代码:

<meta http-equiv="Content-Type" content="text/Html; charset=utf-8"> <div> <div> <h3><span>{$lang.view_history}</span></h3> <div> {insert} </div> </div> </div> <div></div> <script type="text/javascript"> if (document.getElementById('history_list').innerHTML.replace(/\s/g,'').length<1) { document.getElementById('history_div').style.display='none'; } else { document.getElementById('history_div').style.display='block'; } function clear_history() { Ajax.call('user.php', 'act=clear_history',clear_history_Response, 'GET', 'TEXT',1,1); } function clear_history_Response(res) { document.getElementById('history_list').innerHTML = '{$lang.no_history}'; } </script>

我们发现红色下划线部分的代码,其调用的是includes/lib_insert.php中的insert_history函数。不用我们再进行assign。

本文地址:http://itbyc.com/cms/ecshop/8121.html
转载请注明出处。
分享是一种快乐,也是一种美德:
博客首页 | WEB开发 | 网站运营 | CMS使用教程 滇ICP备14002061号-1