[转]ecshop分析(3)

大家好,今天我们来解决上次遗留下的问题。上次我们谈到了如何从php脚本中往dwt模板中传参数,同时我们留下了两个问题,第一是dwt中有的地方是不可以编辑的;第二是往dwt中传参数并且让它显示,它不一定显示出来。

首先我们来讨论一下第一个问题——为什么有的地方不可以编辑。我们通过讨论index.dwt来分析一下这个问题的原因。在index.dwt中我们会看到好多形如

<!– TemplateBeginEditable name=”左边区域” –>

<!– TemplateEndEditable –>

这样的语句。如果对ecshop的后台的管理有点了解的朋友们对“左边区域”这几个字应该很熟悉吧!不错,在后台的模板管理->设置模板中你会看到如下的图片

从表面上看,大家都应该知道,比如“商品分类树”是在整个页面的中间区域显示。那么为什么在后台这边重新选择一下并且确定,在页面显示就会 按照你的选择来显示呢了?它的实质是这样的,上面每个模块是对应一个库文件(就是theme下library下的lbi文件),当你把上面的这些按照你的 布局设置好后点击确定,程序就会按照你的布局的选择将每个lbi文件的内容写入到index.dwt中,那么lbi文件中的内容往哪里写呢,这个时候上面 的

<!– TemplateBeginEditable name=”左边区域” –>

<!– TemplateEndEditable –>

 

这句话就起到作用了,比如上面“销售排行”是选择的右边区域,那么当你确定以后,程序会对index.dwt重写一边,其中“销售排行”对 应的lbi(就是top10.lbi)中的内容会被完全的读取并且写到index.dwt中<!– TemplateBeginEditable name=”左边区域” –>和<!– TemplateEndEditable –>之间。那么这个时候大家可能有一个疑问,如果有很多的内容要往右边区域写,那哪个先写呢?上面的图中有个“序号”,这个就是决定写的顺序的。下 面是写之后index.dwt文件中<!– TemplateBeginEditable name=”左边区域” –>和<!– TemplateEndEditable –>之间的一段代码:

<!-- #BeginLibraryItem \"/library/top10.lbi\" -->
 
<div class=\"box\">
<div class=\"box_2\">
<div class=\"top10Tit\"></div>
<div class=\"top10List\">
<ul>
<!-- {foreach name=top_goods from=$top_goods item=goods}-->
<li><img src=\"../images/top_{$smarty.foreach.top_goods.iteration}.gif\"> <a title=\"{$goods.name|escape:html}\" href=\"{$goods.url}\">{$goods.short_name}</a>
<!--{/foreach}-->
</li></ul>
</div>
</div>
</div>
<div class=\"blank5\"></div>
 
<!-- #EndLibraryItem -->

好的,到了这里相信大家应该清楚很多了,那么到底是为什么index.dwt中有些的地方是不可以编辑的。大家想一想上面这段代码是从哪边而来的, 对的,是从top10.lbi中读取出来的,然后写到这里的,如果你编辑这里,然后下次再重新布局后,这边的内容不是要被重写掉了嘛!所以在 index.dwt中类似<!– #BeginLibraryItem “/library/top10.lbi” –>和<!– #EndLibraryItem –>之间的内容是动态生成的,是不可编辑的,如果真的想编辑这边的内容,就就编辑对应的lbi文件。

相信大家已经清楚,为什么dwt文件中部分地方是不可编辑的。那么今天就和大家谈到这里,下次我们来研究一下cache的问题。我感觉这个很是头疼(如果你自己添加了session)。

博客分类: 
Total votes: 1188

添加新评论