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,那么数据库里面的这个操做记录就会被擦去,这个挂件就没有删除被恢复。
4.能够经过导出模板来下载到最新的带配置信息的theme.xml,经过“恢复默认”来应用新的theme.xml,也就是上面的意思,经过 theme.xml这个文件,方便你们反复擦写数据库记录,实际zheme就是数据库配置信息的备份文件。
为何要引入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代码 达到更多的效果。html
有群友在群问 挂件在哪?怎么添加挂件?怎么加更多的商品列表。
这个问题是刚刚上手的时候也想了一阵子,弄不明白挂件是干吗的,关键仍是不理解shopex的模板机制,理解了就很好制做和添加挂件了。数据库
挂件是功能模块,是程序核心,官方是这么说的,关键是怎么理解。框架
一套程序是有不少功能的,这很好理解吧,好比首页上的导航模块,他自动列出了你后台添加的栏目,这不就是实现导航功能吗?
首页上的商品列表,他会自动列出你后台添加的商品,这不是实现了商品展现功能吗??公告区的文章列表,能够自动列出你添加的新闻公告,这不就是功能吗。一 套程序就是为了实现各个功能而互相有机结合起来的。布局
功能模板之因此叫功能模块,那是由于他紧密结合系统,输出程序最核心的部分,是程序底层代码了,这些不是咱们通常人能够修改的,也不是通常人能够随着增长 的,
他是程序早封装好,为你打包准备好了的。你要作的就是把各个功能漂亮的组合在一块儿,作个漂亮的网站出来。post
怎么去组合这些功能,那你首先得布局,那你就得会HTML代码了。
后台编辑源代码,把须要表现功能的地方一概以widgets ID替换,
注意,这个地方要解析下,不少人这里会卡着一下,想不明白。网站
你输入 widgets ID 只是告诉程序你在这个地方占了个位置,挖了一个坑,这个时候 ,程序是不知道你这个坑要放啥东西啊,不知道你写的widgets ID是什么意思啊,因此程序在这个地方不会输出任何代码,
在后台可视化编辑中,就显示为空白区。你必须到后台可视化编辑里面去添加一个功能附加在这个widgets ID上,这样,数据库就记录了你的操做ID,程序就明白你给这个ID附加的功能,保存后,程序会按照他记录的ID,在widgets上替换 输出程序早封装好的 功能模块,也即你们所谓的挂件。url
也就是说 widgets ID指向的内容是你用ID记录对应着的程序内置的封装的功能模块,是系统内置的,你只有增长和删除的权利。固然你也能够本身写 widgets ,可是通常的人作的只能作哪些简单替换HTML代码的以供后台方便修改的所谓挂件,这些都不和系统核心紧密结合的。spa
因此,挂件在哪??挂件在系列内部自带的封装的。
怎么添加挂件? 你首先必须定义一个 widgets ID ,而后去后台可视化编辑把内置功能赋予这个 widgets ID,程序记录后,就会在前台页面替换 widgets ID的内容 输出 你赋予的功能代码。
后台只能看见widgets ID 必须经过程序识别输出后 ,在前台才能看见widgtes的效果(后台可视化编辑实际就是经过了程序输出了)。xml