上次写过一篇“从一个公司网站的制作看内容管理系统的选择 ”,其中说到DedeCMS的缺陷之一是单页面没有办法很好的实现。下面把怎么实现单页面模型的作法写出来。
DedeCMS现有的单页面模型
在设计栏目的时候选择了“单独页面”后,然后点击“页面”后,是这样的一个界面:
![](/images/load.gif)
他的原理是通过制定的单页面模版,直接在线编辑HTML页面,编辑完后直接保存文件。记住,你编辑的是已经生成的html文件,跟数据库没有任何联系。这种做法有着很大的问题,在你要再次修改单页面文件的时候,是读取模版后的编辑界面还是直接编辑生成后的HTML文件?如果是前者,那么以前编辑的东西就不会显示,就不能在以前修改过后的基础上修改;如果是后者,那么,模版换了怎么办?所以这个单页面模型是有很大的问题的。
一些网站制作者变通的实现
很多网站制作者把这些单独页面作为文章页面,某个栏目下级的栏目列表就是文章列表。不错,这样确实能实现一部分网站,但这样做未必很好,主要因为:
1、URI的规划不合理
在DedeCMS里,文章的URI一般是www.yourdomain.com/dir1/dir2/2007/05/17/123.html之类的,但是按照栏目结构的URI应该是www.yourdomain.com/dir1/dir2/或者是www.yourdomain.com/dir1/dir2.html让人看着比较舒服。
2、无法排序
DedeCMS的文章默认是按照发布时间倒序排的,你可以置顶一部分文章,但是不能随意的更改文章次序。把文章做为单页面栏目自然不能自由的排序了。
3、并列栏目出现多模型时,只能手工设置栏目列表
这里我列举一个公司网站的栏目结构:
![](/images/load.gif)
这是一个公司的某个栏目及其子栏目。显然,最后一个是“列表-文章”模型,如果要这个栏目与前面三个栏目并列,如果把单独页面作为文章页面,显然是不行的。当然,你只能手动的在模版里面把栏目列表写死。
由于有以上三个问题,我们不得不重新修改这个单页面模型,使之符合我们的要求。
如何实现自动化的DedeCMS单页面模型
1、DedeCMS在选择单页面模型有这么一句话:“单独页面(栏目本身不允许发布文档)”,就是说,单独页面下不允许建立子栏目,其实不然,是可以的。他只是没有在系统里面提供给你链接,他根本没有程序上去控制它不让你生成子栏目,只要我们在浏览器里面输入:
yourdomain.com/dede/catalog_add.php?ID=3
其中3是你要在哪个单页面添加子栏目的该单页面的ID。
这样,单页面就可以添加单页面子栏目,不过这种方式的添加比较累赘,你可以通过修改如下文件里面的链接:
/dede/catalog_main.php 这个文件修改下拉菜单
/include/inc_typeunit_admin.php 这个文件修改右侧链接
在附件压缩包里面有这两个文件。
2、在数据表dede_arctype最后添加一个字段pbody,数据类型为text,主要放单页面的文本内容。
3、建立一个文件page_do.php,负责编辑单页面并且提交到数据库。
4、在模版里面嵌入代码:
{dede:field name=’pbody’ /}
即可调用。
附件:
dede-single.zip
关于公司网站的模版案例,等有空制作一个再发布。
作者:sheawey
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。