深入讲解SiteServer CMS:演示建站全过程(二)

本文包括下列后3点内容,前3点在上一篇文章中已经讲述过了:
1、新建站点;
2、创建栏目;
3、发布内容; 
4、模板�制作及设置;
5、生成静态页面;
6、浏览网站;

四、模板制作及设置


模板,是任何一个CMS系统无法逃避的话题,也是整个内容管理系统中重中之重。模板制作的�灵活性和难易程度往往决定了一个CMS系统的市场份额。灵活和难易这两个指标往往是矛盾的,模板制作越灵活,往往是�入门门槛越高。

比如自助建站,入门门槛算是低的了,会打字的非技术人员通过鼠标就能创建出一个网站。但他的模板却是很不灵活,只能允许换网站名称、网站logo,最多允许拖拽模板进行部分页面元素的位置调换,但如果想大范围调整布局或整体色调风格,那很抱歉只能说臣妾做不到啊。反之,有些系统的模板很灵活,模板风格、布局几乎不受限制,功能也比较强大,模板制作可以像程序员编程一样,让模板语言和JS结合起来使用。但这对模板制作人员的技术要求就高了,必须了解编程思想并掌握JS语法。

SiteServer CMS模板在�灵活性和难易程度这两个�指标中平衡的很好,当然纯粹是个人观点。理由如下:
1、首先,SiteServer CMS模板是很灵活的,只需要提供静态页面(html),就可以把它转成SiteServer CMS模板。所以网站页面的布局、风格等等几乎不受任何限制,设计师可以随意设计,只要静态页面能实现的效果,SiteServer CMS模板就没问题。
2、其次,从难易程度来讲,相比自助建站系统会打字的非技术人员就行的入门门槛来说,SiteServer CMS的入门门槛还是要高一些。因为SiteServer CMS虽然不需要程序员级别的技术人员,但至少需要能看懂(不需要会写)Html代码的网页制作人员(也叫切图人员)。

模板制作�门槛高低,关键就是在于模板制作使用的模板标签语言。模板的作用就是产生前端Html页面,应该归为前端的内容,应由前端工程师来负责。SiteServer CMS的模板标签语言(官方称之为STL)就很准确的理解到了这一点,它完全兼容Html,和Html的语法和规则基本上是一致的,就是一些很纯粹的标记符号,没有很复杂的语法,也不需要和JS等其他脚本语言进行嵌套配合使用。所以对于懂html的人来说是没有任何压力,再加上官方的使用说明非常详细,所以很容易就能上手。市面上大部分模板标签语言都是参考后端开发语言(比如php、java等),所以对没有编程基础的人来说语法特别生涩,难于记忆和理解。

上面用文字讲了一堆枯燥无味的原理,可能一时半会不好理解,看个似懂非懂,但没关系,以后用多了用久了,慢慢就会明白其中的意思。下面结合SiteServer CMS后台界面来讲解SiteServer CMS模板的内容。

  • 1、模板是什么
    在这我不�想给模板下一个定义,而是想给大家讲清楚模板是一个什么东西、模板是起什么作用的以及怎么样起作用的。下面以一个最简单的栏目模板为例加以说明。

    如上图所示,新建了一个没有带任何标签语言的栏目模板,模板里就四个字:“栏目名称”,然后把这个模板应用到三个栏目中,见下图:

    然后利用SiteServer CMS后台把这三个栏目的页面生成一下,通过浏览器打开能看到如下效果:

    从上图可以看出,利用这一个模板生成的三个栏目页内容一样。因为模板里本身就只包含静态文字 “栏目名称” ,利用这样的模板产生出来的页面肯定是不会有变化的。下面,稍加改动模板的内容,把文字替换成SiteServer CMS 的模板标签{Channel.Title},这个标签的含义就是显示当前栏目的栏目名称,具体用法可以参考:http://stl.siteserver.cn/e-Channel/index.html。如下图所示:

    修改完模板之后,生成栏目页面,浏览不同页面就能发现不同页面显示的栏目名称不一样了。

    通过以上示例,能直观感受到模板制作�类似程序员编�程,利用模板标签语言(程序员就是利用java、C#、php等各种后端开发语言),结合静态页面,用标签替换静态页面的静态元素的过程。和真正的程序开发不同的是,模板制作仅仅需要关注的是页面元素的替换,而不像程序员还要关注数据库连接、数据获取等其他方面的工作,因为这一切都是有模板解析引擎自动完成的。
  • 2、模板类型
    SiteServer CMS 模板类型有四种:首页模板、栏目模板、内容模板、单页模板。如下图所示:

    要理解各种模板类型的区别,最好的方法就是去理解为什么要进行模板分类。上学那会经常听老师说的,不仅仅要知其然,还需要知其所以然。语文老师在进行文章讲解时常说需要结合上下文来分析这段话的含义。我们都有碰到被人误解的情形,常见的一个原因就是自己和人的聊天内容,被别人断章取义地讲给第三者听,而第三者又不了解当时我们谈话的语境。
    SiteServer CMS模板之所以分类的原因也类似于这个上下文的语境。之所以分栏目模板和内容模板,就是模板引擎解析模板的时候需要知道当前参数传过来的是栏目ID还是内容ID。当�系统生成某个栏目页面时,模板引擎需要获取到这个栏目ID然后去解析模板,如果没有栏目ID这个参数就无法解析模板。比如模板说要显示当前栏目名称和栏目下的文章列表,当前栏目到底是哪个栏目无法确定,栏目名称和哪个栏目下的文章列表自然也就无法确定。

换成程序员角度来理解原理的话,那就应该是这样来理解:
访问某个页面的地址是这样的:xxx.com/index.aspx?type=栏目&id=8,地址里包含两个参数,后面那个id=8具体是表示栏目ID还是内容ID,是由前面type这个参数来决定。

讲完大道理之后,下面直接上模板代码来直观�体现上面描述的原因吧。下面这段代码如果放在内容模板中,能正常显示出当前文章的标题来。
{content.Title}
但是如果把上面这一行代码放在栏目模板中,就解析成了空白。因为在栏目模板中就不知道这行代码是要显示哪篇文章的标题了,也就是缺少上下文的语境了。要在栏目模板中显示文章标题(常见的就是文章列表),那就要这样写了:
<stl:contents>
{content.Title}
</stl:contents>
上面这段代码表示显示当前栏目下的文章标题列表,还是利用了上下文的语境。如果就想显示某个固定栏目的文章列表,那就需要这样写了:
<stl:contents channelIndex="员工风采">
{content.Title}
</stl:contents>
通过栏目索引(channelIndex="员工风采)来指定显示这个栏目的文章列表。这样写法的模板代码,不管放在哪种类型的模板中,都能正常解析的,因为不需要上下文的语境。
上面讲了这么多,就是想让大家明白上下文语境的含义和重要性。理解了语境,就很好理解模板的分类了。
栏目模板: 上下文语境就是当前栏目ID,这是确定的,已知的。在这个语境下,在模板标签中不指定具体栏目的情形下可以正确显示栏目名称,栏目的文章列表等信息。如果把这个栏目模板不作任何修改匹配到另外一个栏目B的话,那生成出来的页面布局不会变化,只是把内容替换成栏目B的内容了。这就是为什么一个模板可以匹配多个栏目的原因。
首页模板: 首页模板其实就是栏目模板,SiteServer官方至所以单独作为一个分类列出来,我估计就是首页算是一个特殊的栏目模板。因为一个站点只能有一个首页栏目,只能匹配一个首页模板;栏目可以有很多,不同栏目可以匹配不同栏目模板。从这可以知道上下文语境就是当前站点首页栏目ID。
内容模板: 上下文语境就是当前�内容ID,这是确定的,已知的。在这个语境下,在模板标签中不需要指定�内容ID就可以正确显示�内容标题、简介、正文等信息。一个栏目只能匹配一个内容模板,所以这个栏目下的所有文章生成的页面布局都一样,只是文章的内容不同而矣。

内容模板的上下文语境还有一个,那就是当前栏目ID也是确定。原因是一篇文章必然属于某一个唯一的栏目,所以有了内容ID自然就等于有了栏目ID。就是说在内容模板中{Channel.Title} 也是能正确显示当前文章所属的栏目名称。

单页模板: 这个也很好理解,就是没有上下文语境,不带任何参数。如果想显示栏目相关信息必须指定具体哪个栏目(比如通过指定栏目ID或栏目索引),同理想显示文章的信息,也必须指定具体哪篇文章(通过栏目定位,比如某栏目下的最新一篇文章)。

单页模板使用最典型的场景就是搜索页面模板,搜索页面是跟任何栏目和内容没有关联的。还有一些功能性页面,比如登录员、注册页等。之所以官方称之为单页,应该是说此类模板一个模板只能生成一个页面文件出来,不像栏目模板和内容模板,一个模板可以和多个栏目匹配,产生很多页面文件。

包含文件:这个不属于模板类型,每种模板都可以使用的一个技巧。整个站点的所有页面或部分页面使用到了相同的一部分代码,那就把这部分相同的代码提取出来作为一个文件存储起来,这个文件就叫包含文件。在模板制作的过程中可以通过包含标签把一个包含文件的所有内容引用到模板中来。如果包含文件修改了,所有引用了此文件的模板都会被修改,而不需要修改每一个模板文件。

  • 3、模板制作
    讲完了模板的含义和分类,再来讲讲模板的制作过程。模板制作的过程很简单就三步:创建模板、模板标签替换、模板匹配。
    创建模板:从模板分类可以很好理解,一个首页模板只能生成一个首页文件,一个单页模板只能生成一个页面文件。

    正是因为这两类模板是一对一的关系(一个模板只能生成一个页面文件 ),所以在创建这两类模板的时候必须指定生成文件名。如上图所示,这是一个首页模板,红框的两字段意思就是通过这个首页模板生成的首页文件是:index.html (@是表示网站根目录,即在根目录下生成一个index.html的页面)。
    与之不同的是,栏目模板和内容模板,一个模板可以和多个栏目匹配,产生很多页面文件。所以这两类模板的创建就不需要指定生成的文件名了,只需要指定文件的扩展名即可。如下图所示:

    那通过栏目模板和内容模板生成的页面文件,也总得有个名字,要不然怎么存到服务器上呢?那这些页面文件到底是怎么命名的呢?答案就是在创建栏目的时候指定,见下图:

    通过这样的讲解,是不是就能很好的贯通起来?要不然在创建栏目的时候,好多人不理解这两个字段是干嘛用的,应该怎么填写。其实不填也行,SiteServer CMS系统自动会以栏目ID和内容ID命名,在站点根目录下创建channels和contents两个文件夹,把所有栏目页和内容页存到里面去。
    模板标签替换:这一步说起来很简单,就是把制作人员(也叫切图人员)做好的静态页面(html)拷到模板里,然后把html代码用模板标签语言STL相应的标签进行替换。如下图所示:

    上图是把制作人员(也叫切图人员)做好的静态页面(html)拷到模板里,下图是把html代码用相应的标签进行替换。

    上面这个过程,可以说是SiteServer CMS整个系统的一个核心,SiteServer CMS模板制作,说的就是这个替换过程。毫不夸张地讲只有掌握了这个,才能算是真正掌握了SiteServer CMS。其他的操作过程,熟悉了就会了,就这个模板语言STL和模板制作,是需要花大力气去学习、熟悉,才能真正做到事半功倍。
    模板�匹配:前面我们加了模板的原理,如果通过原理来理解模板匹配操作的话,应该怎么理解呢?其实这个对栏目进行模板匹配的操作,就是对模板进行赋予上下文语境的过程。从这个角度来理解的话,就能明白为什么单页模板不需要栏目匹配,因为单页模板不需要语境。
    对于首页模板的匹配也有点不一样,因为首页就一个,所以只需要把其中一个首页模板(如果有多个的话)设置成为默认模板即可。如下图所示:

    从上图还可以看到SiteServer CMS一个特别不错的模板功能,就是所有修改过的模板,都会有历史记录,会保存历史版本,可以随时恢复到过去的某个版本。如下图所示:

    但对于栏目模板和内容模板匹配这个界面就有点别扭。如下图所示:

    从上图可以看到,左边是栏目树,中间是栏目模板列表,右边是内容模板列表。就是说栏目模板和内容模板的匹配是在一个界面,但每次操作的时候只能进行一种模板的匹配操作。比如上图,就是对栏目模板的匹配操作,正确操作是这样的:选择左边栏目树里的一个或多个栏目,然后从栏目板列表中选择某一个栏目模板,最后点左边这个匹配按钮(上图红框)。注意,如果此时你点的是右边的匹配按钮,那整个操作是失败的。内容模板的匹配也是如此,不能点左边的匹配按钮,下图所示:

五、生成静态页面

这一步特别简单,四种模板就有对应的四个生成菜单:生成首页、生成栏目页、生成内容页、生成文件页(对应单页模板)。因为首页模板就一个,所以只要一点 “生成首页”,系统立马就进行了生成操作。生成栏目页和内容页的菜单,点生成之后会出现选择需要生成的栏目范围,生成文件页则需要选择相应的或全部的单页模板。



还有一个菜单叫“一键生成”,从字面也好理解,就是一次性把所有页面(首页、栏目页、内容页、文件页)都生成了,不需要一类一类页面去生成,比如人性化操作。SiteServer CMS 5.0对这个生成速度进行了专门的优化,把之前的服务组件改成SiteServer.exe,在生成速度方面有了明显的提升,并且部署方式也很简单了。只需要把SiteServer.exe放在SiteServer CMS系统根目录下,点击运行即可。


六、浏览网站

通过以下菜单即可进入网站前台,浏览利用我们模板生成出来的前台页面了。


至此,通过两篇文章的讲解,就把SiteServer CMS建站的全步过程讲完了。读完这两篇文章,也就知道SiteServer CMS系统建站的大致步骤了。接下来的就是需要深入讲解系统里面的功能了。

衷心感谢各位朋友阅览《深入浅出SiteServer》,如果您喜欢,可点击栏目右上角的提示“订阅”或“关注”,也可以关注微信公众号《深入浅出SiteServer》。我们共同赏析SiteServer CMS的点点滴滴 ……

开心一笑

据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。” 项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。” 软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容