分享

三天时间理解shopex模板机制

 la乔丹 2010-11-22

三天时间理解shopex模板机制

时间:2010-03-01 22:57来源:零度科技 作者:零度科技 点击: 268次
因为最近打算做个商店玩玩,所以开始接触学习shopex, shopex上手还是很容易的,关键就是官方教程太小,而且表达得不清晰,导致我在理解的时候走了很多弯路。 下面写些这3天自己的理解心得供新人参考,希望可以更加快速上手理解shopex,当然有不对的地方还希

因为最近打算做个商店玩玩,所以开始接触学习shopex,
shopex上手还是很容易的,关键就是官方教程太小,而且表达得不清晰,导致我在理解的时候走了很多弯路。

下面写些这3天自己的理解心得供新人参考,希望可以更加快速上手理解shopex,当然有不对的地方还希望指出以供大家学习。

shopex是程序和模板分离的,这样就大大方便了大家可以做出自己漂亮的外观网站,
虽然很多地方分离得不够,比如一些核心的业务流程区基本大家就很难修改了,但是大部分还是满足网站基本要求的。

首先,说说模板下的theme.xml,官方是这么说的,theme.xml是整个模板中最重要的部分,所有模板的配置信息都是存在这个xml中的,包括板块的位置、配置信息,边框的信息等等。第一次加载模板时,theme.xml中包含的信息被读入数据库,即模板的初始化,之后用户便可以在可视化界面中进行板块的增删改和对原有的板块进行配置。配置信息保存在数据库中,用户可以通过导出模板来下载到最新的带配置信息的theme.xml,通过“恢复默认”来应用新的theme.xml。

这个意思表达得还是比较清楚了,我再详细补充下。

1. 官方说第一次加载模板时,theme.xml中包含的信息被读入数据库,即模板的初始化。意思就是这个zheme数据库只会加载他一次,第二次是不会加载的,除非你强行要恢复默认,数据库才会重新加载读取zheme的信息。明白了这点,所以只要加载第一次后,你可以随便修改zheme啊,只要你不强行恢复默认的话,zheme此时不对数据库任何影响,程序也不会读取和应用到zheme。

2,但是为什么大家建议不要修改zheme呢?  首先,修改它没意义。上面说了,第一次加载后zheme就等于完成了他的任务了,只要不强行重新加载,zheme对系统没任何影响。其次,如果你修改了zheme的话,哪天不小心强行恢复默认的话,就会导致某些页面不能输出你被修改的挂件内容。因为zheme是告诉数据库在哪个页面哪个位置输出哪个内容。

3.配置信息保存在数据库中。意思就是你的所有可视化编辑的操作数据和记录全部保持在数据库里面,比如可视化删除了挂件,编辑了挂件,添加了挂件。你在后台代码编辑的时候他会保存到对应的html文件里(是否保存在数据库官方未说)。这点就是要告诉我们,记得一定要数据库配置备份,备份生成的文件就是zheme-bak.xml,比如你错误的删除了挂件,这个操作已经记录在数据库里面,你通过点恢复zheme-bak.xml,那么数据库里面的这个操作记录就会被擦去,这个挂件就没有删除被恢复。

3.用户可以通过导出模板来下载到最新的带配置信息的theme.xml,通过“恢复默认”来应用新的theme.xml,也就是上面的意思,通过theme.xml这个文件,方便大家反复擦写数据库记录,实际zheme就是数据库配置信息的备份文件。

3,为什么要引入theme.xml呢?上面说了,可以方便大家备份配置信息反复擦写数据库。其次,就是通用模板的共享。模板包含了2个主要文件,一个是html框架文件,这些是最外层框架布局和大致显示样式,二个是zheme.xml配置文件,zheme配置文件告诉程序要在哪个页面哪个位置输出哪个内容。比如zheme里面全部记录了挂件配置信息,通过zheme程序才能真正和模板结合起来输出重要信息内容。html框架文件是死的,zheme记录的挂件输出的内容是活的。正是有了zheme传递给程序的配置信息,程序才知道什么位置输出什么内容。配置信息最终是要传递到数据库里面,程序才能识别和输出内容。如果没有引入zheme,那么这些保存在数据库的配置信息就不方便共享,因为要共享数据库。有了zheme,数据库配置信息就可以以文件存在的形式方便大家互相转移共享。

再说说部分人问的widgets ID中ID的理解。ID就是身份,就是给这个widgets一个唯一的身份,以便程序认识和记住这个widgets输出正确的内容。如果不做ID辨认,程序会自动默认排列顺序,导致输出内容错位,也就是说,你写的ID数据库就会记录这个ID,然后数据库通过这个ID输出你挂件设置的内容。也就是说ID可以随便写,但是不能重复。

======================================================================================

再说说  挂件下模板的修改。
比方说首页列表商品下的信息描述,系统默认是 名字在上面,价格在下面。
如果我们想要 价格在上,商品名在下呢,比如这种效果
 
那我们可以修改挂件模板。
找到挂件下的goods目录,新建一个a.html文件 复制里面的default.html内容。
再来修改a.html内容。

先来分析default.html里面的代码


里面<{capture name=titleImg}>里面很多变量和定义,这些是关系到后台挂件设置的内容以及系统输出的内容,我们不能动。

我们只要修改模板html代码,就是在以最后一个<{capture 结尾的地方的后面代码,就是输出代码,找到输出的html代码
就是以 <div class="itemsWrap <{if $setting.column > 1 &&开头的,
我们再找到 设置图片在上的那部分代码
<{elseif $setting.goodsImgPosition=="top"}>
            <{$smarty.capture.goodsImg}>
            <{$smarty.capture.goodsName}>
            <{$smarty.capture.goodsDesc}>

这3个smarty的代码就是分别输出图像,商品名字,商品描述的。
我们把商品名字 和描述互换位置,就可以把价格调整在上面。
也可以修改其他HTML代码 达到更多的效果。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多