MOSS的内容管理(Web Content Management)具有强大的功能,利用它,最终用户可以方便的制作各种布局的页面。
但是它具有一些“限制”,比如:
1)默认只存在一个页面库(pages),这让我们想采用多个页面库来划分不同栏目的想法落空了。
2)页面只能保存在pages库的根文件夹下,我们也不能采用文件夹来区分不同的栏目了...
那么,如果我们想实现一个多级栏目的信息发布站点,是不是就不能用CMS功能了???
以前就碰到一些朋友因为这些限制,在采用CMS来实现新闻站点的时候觉得"很不爽",甚至不得已放弃CMS了.

其实,采用一些"技巧",采用moss的CMS仍然然可以做出无限级栏目的信息发布站点的.

下面是一些实现的要点:
1)首先解决页面只能保存到根目录下的问题,参考这篇文章的代码:MOSS publishing功能:创建页面到子文件夹
我们采用修改系统的CreatePage.aspx页面的方式,使CMS发布出来的页面可以保存到不同的文件夹甚至不同的文档库.
或者,不要覆盖系统的Createpage.aspx,复制一个新的页面进行修改 ,然后修改相应内容类型的模板Url即可。

注意:这样 修改 CreatePage.aspx后 ,右上角“网站操作”菜单 里面 的“创建页面”菜单仍然会创建页面到 pages/跟下,因为它没有传递当前目录的参数,
如ListID,RootFolder。通过文档库的新建按钮才能正常操作。


2)系统默认的发布页面库(pages)其实也是一个普通的文档库,然后添加了发布内容类型.
认识到这一点后,我们可以新建一个普通的文档库,到文档库设置的"高级设置"里启用内容类型,然后添加"发布"内容类型即可.
为了要实现页面编辑期间普通用户看不到只有发布后才能看到的效果,需要启用文档库的"版本控制",
设置 > 版本控制设置 页面,选中  "创建主要版本和次要版本" 和 "仅限可编辑项目的用户" , 如下图:


3)采用页面文档库和多层次的文件加,我们已经可以构建多层次栏目的站点了.

4)利用网站设置里的"母版页和页面布局"管理,可以控制最终用户能够使用的发布页面布局.

5)可以重写母版页的导航控件,将页面库和子文件夹显示到快速启动栏.采用asp.net自带的Menu控件可以较容易的做到这一点.
系统默认的文件夹只有一个“名称”的属性,我们希望给它多加几个属性,如描述,排序字段,有了排序字段,用户可以自由排列栏目的顺序。
参考这篇文章:WSS 扩展文件夹的属性--如何给文件夹添加扩展字段

注意:遍历文件夹时(获取SPFolder.SubFolders),如果文件夹下页面太多,速度将非常缓慢,为解决这个问题,可以限制文件夹遍历的深度,尽量不要调用最后一级文件夹(包含页面)的SubFolders属性.

 6)以上配置好的文档库可以另存为列表模板,这样以后我们可以直接新建页面发布库了。

后记:
!!!慎用这个方法,单库文件超过2万后发布页面时可能出现性能问题,解决中..... (2008-4-19)

解决方法:安装KB948947 补丁,这个补丁并没有正式发布,有门路的可以向MS要。


posted on 2008-03-22 23:15  jianyi  阅读(1871)  评论(9编辑  收藏  举报