zoukankan      html  css  js  c++  java
  • ECMall模板开发文档

     

    ECMall

    模板开发文档

     

     

         

     

     

    欢迎阅读

    ECMall

    模板制作教程,通过阅读本教程可快速上手

    ECMall

    模板的使用和制作。

    ECMall

    模板制

    作要求用户具备

    XML

    XHTML

    CSS

    基础知识;至少掌握一种文本编辑器或网页制作工具

    (

    如:

    EditPlus,Dreamweaver,Textmate

    )

    本教程还将及一些模板代码,

    如从没有了解过

    Smarty

    建议阅读

    Smarty

    帮助手册。

     

    第一节

    -ECMall

    模板机制介绍

     

    通过阅读本节你将了解:

     

    1.

     

    ECMall

    模板的组成和机构

     

     

    2.

     

    ECMall

    模板机制工作原理

     

     

    ECMall

    页面模板由布局

    (layout)

    、模块

    (module)

    、皮肤

    (skin)

    组成,所有模板文件都保存在

    ECMall

    根目

    录的

    themes

    目录下,其中两个目录

    mall

    store

    mall

    目录包含了商城的所有布局、模块、皮肤,

    store

    录包含了店铺所有布局、模块、皮肤,两个目录的结构是完全一样。下面首先介绍

    mall

    目录下的结构。

     

    mall

    目录包括

    layout

    resource

    skin

    三个目录,其用途分别为:

     

     

    Layout

    目录

    -

    用于存放

    layout

    文件。

    layout

    目录下的每个子目录里存放的是某一个页面的

    layout

    文件

    layout

    目录介绍请见附表

    1

    ),如

    homepage

    目录就是商城首页的布局目录

    ,

    里面有一个

    default.layout

    件这就是商城首页的布局文件,

    在这个目录里可以存在多个布局文件,

    布局文件是一个标准的

    XML

    文档,

    你只

    需要写简单的几个标签

    (以下称为布局描述语言)

    描述整个页面的布局架构,

    在以后的章节会详细介绍布局文

    件的制作方法。

     

     

    resource

    目录

    -

    用于存放内容模块文件。模块是由布局文件调用的,内容是

    HTML

    或模板代码组成,在以

    后的章节会详细介绍模块制作方法。

     

     

    skin

    目录

    -

    存放皮肤,目录中每个目录对应一个

    skin

    ,如

    default

    ECMall

    默认皮肤,其中包括了

    CSS

    文件,和图片以及

    JS

    文件,在以后的章节会详细介绍皮肤制作方法。

      

    ECMall

    的每一个页面的模板都包含以上介绍的元素,原理是模板引擎将布局文件中的布局描述语言解析,

    将文件中描述的页面布局和模块部署位置输出一个标准的

    XHTML

    文档。

     

    第二节

    -

    布局文件制作方法

     

    通过阅读本届你将了解:

     

    1.

     

    ECMall

    模板布局描述语言的标签

     

     

    2.

     

    ECMall

    模板布局描述制作方法

    上节简单的介绍了布局文件,本节将详细介绍布局文件的制作方法。布局文件的内容是布局描述语言,布

    局描述语言是基于

    XML

    的,

    XML

    是一种标记语言,

    ECMall

    定义了

    4

    个简单的标签

    row

    col

    library

    item

    你只需要使用这四个简单的标签就能描述一个自己想要页面

     

    row

    标签

     

    标记一行,支持的属性包括

    id

    class

    allowEdit 

     

    col

    标签

     

    标记一列,支持的属性包括

    id

    class

    allowEdit 

     

    libray

    标签

     

    标记的是一个模块容器

     

     

    item

    标签

     

    标记的是一个模块,支持的属性包括

    id

    src

     

     

     

    下面介绍如何制作

    ECMALL

    的布局文件

     

    <?xml version="1.0"?> 

    <template> 

      

    <row id="region1" allowEdit="false"> 

        

    <library> 

          

    <item id="header" src="themes/mall/resource/page_header.html" /> 

          

    <item id="search_form" src="themes/mall/resource/search_form.html" /> 

        

    </library> 

      

    </row> 

      

    <row id="mc_home"> 

        

    <col id="region2" class="column1"> 

          

    <library> 

            

    <item id="mc_menu" src="themes/mall/resource/mc_menu.html" /> 

          

    </library> 

        

    </col> 

        

    <col id="region3" class="column2"> 

          

    <library> 

            

    <item id="mc_home" src="themes/mall/resource/mc_home.html" /> 

          

    </library> 

        

    </col> 

      

    </row> 

      

    <row id="footer" allowEdit="false"> 

        

    <library> 

          

    <item id="page_footer" src="themes/mall/resource/page_footer.html" /> 

        

    </library> 

      

    </row> 

    </template> 

     

    以上是会员中心首页的布局文件的内容,该文件在根目录的

    themes/mall/layout/mc_home/default.layout

    ,所描述的布局如下图:

     

     

     

     

    代码的第一行“

    <?xml 

    version="1.0"?>

    ”声明文档是一个

    XML

    文档。后面

    <template>...</template>

    是根

    节点,

    XML

    文档标准是必须存在一个根节点的,

    template

    节点的子节点就是上面介绍的

    4

    个标签,用于描述页

    面布局,这个页面分为上中下三行,中部分为两列。

     

     

    第一行代码

    <row id="region1" allowEdit="false"> 

        

    <library> 

          

    <item id="header" src="themes/mall/resource/page_header.html" /> 

          

    <item id="search_form" src="themes/mall/resource/search_form.html" /> 

        

    </library> 

      

    </row> 

    这段代码用

    row

    标签标记一行,定义了一个

    ID

    region1

    ,这里需要注意下每个标签都应该有一个唯一

    ID

    ,不能和其他标签的

    ID

    冲突,一旦冲突页面可能会无法正常显示,这里还定义了

    allowEdit

    属性为

    false

    这表示这个标签下的模块,在模板编辑模式下是无法拖拽的,其他模块也无法拖放到这里。这个标签下调用了

    两个模块,所以必须有一个模块的容器标签“

    <library></library>

    ”,“

    <item id="header" 

    src="themes/mall/resource/page_header.html" />

    ”标记了调用一个模块,这里

    ID

    属性必须和

    src

    性对应的模块文件中顶级元素

    ID

    相同

    ,src

    是模块的相对路径。

     

     

    第二行代码:

     

      

    <row id="mc_home"> 

        

    <col id="region2" class="column1"> 

          

    <library> 

            

    <item id="mc_menu" src="themes/mall/resource/mc_menu.html" /> 

          

    </library> 

        

    </col> 

        

    <col id="region3" class="column2"> 

          

    <library> 

            

    <item id="mc_home" src="themes/mall/resource/mc_home.html" /> 

          

    </library> 

        

    </col> 

      

    </row> 

     

    这一行分为两列,

    row

    标签里我们定义了两列,

    第一列的

    ID

    region2

    第二列的

    ID

    region3

    两列分别调用了一个模块,这和第一行讲解的是一样,这里需要注意的是

    row

    标签可以包含多个

    col

    row

    签,也可以包含一个

    library

    标签,但不能同时包含不同的标签,比如:

     

    1. 

    <row id="mc_home"> 

        

    <col id="region1"> 

        

    </col> 

        

    <row id="region2"> 

        

    </row> 

    </row> 

    2. 

    <row id="mc_home"> 

        

    <col id="region1"> 

        

    </col> 

        

    <library> 

        ................ 

        

    </library> 

    </row> 

    上面的两段代码都是错误的,

    col

    标签可以包含

    row

    标签但不能再包含

    col

    标签,

    col

    标签也不能同时包含

    row

    library

    ,比如

     

     

    <col id="col1"> 

        <row id="region1" /> 

         <library> 

        ................ 

        </library> 

    </col> 

    这样也是错误的。

     

     

     

    最后讲解布局第三行的代码:

     

      

    <row id="footer" allowEdit="false"> 

        

    <library> 

          

    <item id="page_footer" src="themes/mall/resource/page_footer.html" /> 

        

    </library> 

      

    </row> 

     

    这一行和第一行的代码几乎相同,只是调用的模块不同而已,

    allowEdit

    false

    禁止编辑这一行。

     

     

    第三节

    -

    模块文件制作方法

     

    ECMall

    的模板机制中所有的内容都是在模块中来实现的,

    上一节中讲的布局文件仅仅是用于页面布局的描

    述,其中没有任何页面内容,

    ECMall

    的模块主要由

    HTML

    代码和模板语句,模板语句是兼容

    smarty

    的语法

    的。在后台模板管理用户可以可视化编辑页面的内容,任意拖拽模块,所以模块必须要按照

    ECMall

    模块规范

    制作,商城的模块文件存放在根目录的

    themes/mall/resource

    ,店铺的模块文件存放在根目录的

    themes/store/resource,

    下面举例讲解下

    themes/mall/resource/site_news.html

    文件的内容,

    这个模块

    是站内快讯的模块。

     

    <div id="site_news_content" class="colbox"> 

      

    <!-- {if $article_list} --> 

      

    <div class="colboxcontent" > 

        

    <ul class="articles_list"> 

          

    <!-- {foreach from=$article_list.data item=article} 

    н

    д

    у

    б

     

    --> 

          

    <li><span class="time">({$article.formated_add_time})</span><a href="{url 

    src=index.php?app=article&amp;act=site_news&amp;id=$article.article_id}">{$article.title|e

    scape}</a></li> 

          

    <!-- {/foreach} --> 

      

    </ul> 

        

    <div class="pagechanger">{page_links from=$article_list.info url=$url_format}</div> 

      

    </div> 

      

    <div class="colbtm"></div> 

      

    <!-- {else} --> 

      

    <div class="colboxcontent format_article"> {$article.content} </div> 

      

    <!-- {/if} --> 

    </div> 

     

      

    这里面有一个

    div

    id

    site_news_content

    ,这里需要注意的是每个模块的

    ID

    必须是唯一的,不能和其

    他模块重命名,每个模块文件里面只能有一个根元素,如果存在一个以上根元素就无法正常操作了,如一下代

    码:

     

    <div id="site_news_content" class="colbox"> 

      

    <!-- 

    省略的代码

     

    --> 

    </div> 

    <div id="site_news_content2" class="colbox"> 

      

    <!-- 

    省略的代码

     

    --> 

    </div> 

    如果一个模块文件的内容是这样,存在两个根元素就是错误的。

     

     

    第四节

     

    :皮肤文件制作方法

     

    皮肤是由

    CSS

    和图片组成,商城的皮肤文件位于根目录的

    themes/mall/skin

    目录

    ,

    商城的皮肤文件位于

    根目录的

    themes/mall/skin

    目录,一个皮肤是一个目录,如默认皮肤

    default

    ,目录里包含多个

    css

    文件,

    下面介绍下每个文件的作用。

     

     

    商城的

    CSS

    文件说明

     

    文件名

     

    作用

     

    article.css 

    站内快讯,帮助中心页面的

    CSS

    样式文件

     

    category.css 

    商城搜索,

    团购列表,

    商品分类页面的

    CSS

    样式文件

     

    global.css 

    整个商城包括店铺的全局

    CSS

    文件

     

    mall.css 

    商城首页的

    CSS

    文件

     

    mallbase.css 

    商城全局

    CSS

    文件

     

    member.css 

    用户中心页面

    CSS

    文件

     

    shopping.css 

    购物流程页面的

    CSS

    文件

     

    storelist.css 

    店铺列表页面的

    CSS

    文件

     

     

    店铺的

    CSS

    文件说明

     

    文件名

     

    作用

     

    goods.css 

    团购商品,商品页面的

    CSS

    文件

     

    storebase.css 

    店铺页面的

    CSS

    文件

     

     

    CSS

    可以定义对应的页面的样式,

    皮肤也可以添加

    Javascript

    你只需要在皮肤目录里的

    JS

    目录添加你

    js

    文件,比如一个

    demo.js

    ,文件名后缀必须是

    .js

    。为了减少

    HTTP

    请求和节省流量,

    EMall

    会将页面需要

    css

    打包和压缩处理,

    需要注意的是在店铺的页面都会调用当前商城皮肤目录下的

    global.css

    文件里的代码

  • 相关阅读:
    事件循环(Event Loop)promise、setTimeout、async的先后执行顺序
    计算机网络方面
    深拷贝与浅拷贝
    从输入url到页面加载发生了什么?
    手写jQuery插件
    vue与微信小程序的区别
    Webpack打包工具
    SpringCloud Feign的分析
    SpringCloud Ribbon的分析(二)
    SpringCloud Ribbon的分析
  • 原文地址:https://www.cnblogs.com/farcall/p/3769115.html
Copyright © 2011-2022 走看看