PESCMS中的模板是依据组 主题名称/控制/控制_方法 组成。按照这样设计的思路,可以定义多套模板,看心情切换。如果您想纯粹为PESCMS编写模板,那么别错过本章的说明。
不是所有PESCMS程序都有主题选择功能。在PESCMS2.5版本之前,主题名称是依赖于数据库option表获取的。而2.5版本后已解除该依赖,后面将作详细的讲解。
创建模板
在不考虑程序组之间控制器的差异,他们模板创建的方式都大同小异。默认情况下,所有组模板层下的主题名称均为:Default 。如:/Theme/Admin/Default 、/Theme/Home/Default、/Theme/Doc/Default … 下面我们以Home组的某个控制器创建对应的模板:
关于模板与RESTful,模板是不受RESTful影响的。具体依赖于控制器是否有进行 调用模板。下一章将有介绍如何在控制器调用模板。
现有App/Home/GET/Order.class.php 控制器。我们为他编写了三个方法:index(), view(), returnOrder()。他们三个都拥有不同的视图,那么我就应该为他们创建三个模板:
模板目录均创建在:Theme/Home/Default/Order/ 。其中Order目录为控制器的名称。然后模板的名称定义为:控制器_方法.php
Order_index.php
Order_view.php
Order_returnOrder.php
现在我们已经创建好模板了,可以访问对应的控制器的URL测试效果。
提示:其实模板是可以创建在/Theme/Home/Default目录下,调用模板方法会先寻找 控制器名称的文件夹是否存在模板文件,不存在就会寻找根目录的。不过考虑到一个项目模板会非常多,全部都放在根目录下的话,以后维护就不太直观快捷了,因此官方建议最好还是放在对应控制器目录中。
发表于 2018-05-14
缺省模板
按照正常业务需求来说,一套组模板都有一些缺省模板。缺省模板不是必须的,但创建缺省模板,可以很好地提升模板的复用性。以PESCMS的后台(Admin)和前台(Home)来说,他们的模板目录下必定有如下模板文件(/Theme/Admin/Default和/Theme/Home/Default):
header.php —— 公用页眉模板
footer.php —— 公用页脚模板
layout.php —— 自动布局模板
Content_action.php —— 智能表单模型操作内容模板(仅限PESCMS程序)
Content_index.php —— 智能表单模型内容模板 (仅限PESCMS程序)
上面所示的,基本是一套程序所拥有的套路设计模板。平时除了后端代码要提高复用性,前端的也是必须的。否则一处修改样式,别的地方也要跟着改,维护成本也太高了。
主题名称
在上面的演示中,主题名称都硬性为Default,对于这点相信大家会存在疑惑,下面将为大家进行解答。同时了解好本特点,在拥有主题切换功能的PESCMS程序上,将可以快速切换一套全新模板,真正做到看心情换网站模板。
2.5前的早期版本
在PESCMS2.5之前,主题的名称依赖与数据库option表中的两个值决定当前组的主题名称
option_namevalue备注themeDefault所有组的主题名称backstagethemeDefault后台组的主题名称,不一定所有程序都有
由于依赖性太强,程序之间的通用性变得非常糟糕。若每次拿PESCMS进行开发,都得对数据库进行一次调整。一来一回,开发时间都被浪费在修改数据库的主题名称上。就想PESCMS 和PESCMS TEAM之间,他们要整合在一起的话,在2.5版本前是需要做大量调整的。就是因为两者的核心程序、数据库之间依赖过于强。
新版的改变
2.5版为了解决该依赖性,重新调整了调用模板中获取主题名称的方法。具体调整为:在程序首次运行的时候,先判断当前运行组的模板主题目录是否存在一个以MD5处理过的字符串命名的文件存在。当不存在的时候,则往该文件写入Default,以标识当前程序运行的主题目录名称为:Default。
现在任何组的控制器只要触发了视图层的相关方法,程序都在旗下的组模板目录下创建一个MD5处理过的字符串命名的文件。若大家不想主题名称都是Deaful的话,除了将主题的目录名称更改为您喜欢的名字外,还需要用记事本(编辑器)打开该文件,并填写您改名后目录的名称。
打开该文件后,在里面填写您的主题(在第一行填写)。
如果您要开发切换主题的功能,请了解本功能的设计特性。
注:程序生成的记录主题名称文件的命名都是不一样的。因为每个人安装过程生成的密钥都是不一样的。