woodplow CMS的存储框架

01月 3rd, 2008

woodplow publisher具有开放式、模块化的系统结构,域、分支、文档、专题、页面五个元素构成了系统的核心数据模型。

域是顶级管理单元,对应着一个站点域名或二级、三级域名,物理上对应着文件系统中某个目录,当然目录可以不在一个逻辑驱动器上。

节点的域名可以为路径,例如:http://www.woodplow.com/news,注意不要以”/”结尾。如果你想线上管理域所在的目录,可以配置文件系统,增加一个配置点,使其与域对应的目录相关联。

分支是站点资源的组织单元,分支必须基于某个域名创建,文档、专题、页面的组织都是基于分支的。分支理论上不限定深度,但是建议不要超过3级。

文档是站点内容的图文展示,由编辑通过所见即所得的编辑器录入产生,文档的表现形式有其所属分支的文档模板决定,文档可以有很多逻辑属性,比如:热点新闻、推荐新闻等,为了形成内容的交叉,文档还可以携带文档类型,比如:新闻、行情、评测、导购、厂商、促销等。

文档的分页内容要集中管理,woodplow将文档基本信息和主体内容分开存储以便提升检索速度。

专题是对满足某一主题(比如:2007年巴基斯坦总统大选)的文档进行集中组织的单元,专题可以弥补分支的物理组织为逻辑组织,使用指针把散落到各个分支和域的符合同一主题的文档集中展示出来。

你可以把文档添加进专题或者选择指定文档加入专题。

页面是站点频道页、首页、文档页、专题页中的分割区域,比如:新闻周排行、首页热评新闻等。

第一个版本有三种类型的页面:手动页面、动态页面、包含页面。

关于文件系统的配置文件的特别说明

01月 3rd, 2008

文件系统是内容的物理存储结构,合理的划分文件系统对日后的维护影响很大,woodplow建议采取”分而治之”的方法,把图片、静态页、素材图标、css样式表、javascript脚本、广告页等建站元素分开存储或者组合存储,默认的文件系统配置:

该配置文件只有网站管理员才可修改,基于安全性,无法通过后台线上修改。
默认划分的四个配置点能够满足中小型网站的使用,配置文件的结构很简单,通过xml标记名能很容易的获知。
每一个item单元代表一个配置项,物理上对应一个磁盘目录,逻辑上对应一个二级域名或者访问路径,index标签标识了该配置项的索引值,注意索引值要从小到大排列,path标签可以为相对路径和物理路径,注意不要以”/”或者”\”结尾。url就是逻辑上的访问地址,以”/”结尾,该地址可以用于下载素材、css文件、javascript等。upload、edit、delete、move、create依次代表上传、编辑、删除、移动、创建的权限,其中包含了允许操作的文件类型,比如:htm|html|css,便是允许操作.htm、.html、.css的文件。
注意:要确保iis安全帐号对配置项中path标签指定的路径有读写权限。

特别说明以下几点

1、不要把后台cms目录放入配置点。
2、不允许上传.asp文件。
3、设定服务器不允许下载directory.xml文件。(修改iis解析映射)
4、如果能满足要求,尽量使用static文件夹作为静态存储点。比如:/static/news可为新闻中心,/static/mp3可为mp3频道等等。
5、为专题策划单独设置素材存放点。

文档模板中加入分页的方法

01月 3rd, 2008

woodplow的模板中可以很容易的对多分页的文档进行描述,其中用到了几个系统定义好的模板助记符。

<!–cms:page(pagetype,pagetemplate,currtemplate)–>

其中pagetype为1时为下拉式分页,pagetype为2时为平面式分页,可以自己扩展其他pagetype

下拉式分页示例:

<!–cms:page(1,’<option value=”$pageurl$”>第$pageindex$页:$pagetitle$</option>’,’<option value=”” selected>第$pageindex$页:$pagetitle$</option>’)–>

在这里$pagetitle$ 代表分页标题,$pageindex$代表分页索引号,$pageurl$代表分页的访问地址。

平面式分页示例:

<!–cms:page(2,’<li class=”li_blue”><a href=”$pageurl$”>第$pageindex$页:$pagetitle$</a></li>’,’<li class=”li_red”>第$pageindex$页:$pagetitle$</li>’)–>

如果要显示上一页、下一页,则使用下面两个模板项:

<!–cms:prev(prevTemplate,firstTemplate)–>

<!–cms:next(nextTemplate, lastTemplate)–>

上一页示例:

<!–cms:prev(’<a href=”$pageurl$”>上一页</a>’, ‘第一页’)–>

下一页示例:

<!–cms:next(’<a href=”$pageurl$”>下一页</a>’, ‘最后页’)–>

当然,你也可以使用图片来标识上一页、下一页 。

对零散页面的深入理解

01月 3rd, 2008

woodplow所提出零散页面的概念,也就是块状结构。 

零散页面之静态更新机制

大型发布系统的内容的更新机制一般分为三种。
1、手动更新。
中小型的发布系统一般支持手动更新,woodplow主要支持的也是这种,通过编辑或者发布人员手动维护发布文档、专题、页面等需要静态化的地方。此方法的优点是只更新目标页面,发布服务器的压力不会太大,缺点是加大了维护成本。
2、触发更新。
通过设定触发点,当满足触发条件时,由系统自动更新静态页面。woodplow的1.0版本暂不支持,后续版本会考虑加上。
3、计划更新。
通过添加更新计划,由任务管理器监控时间,到了更新时间自动运行更新程序进行静态化。woodplow推荐当站点结构稳定以后,采用此方法,该方法也是国内大型门户网站(比如:新浪网)普遍采用的方法,通过在linux中用perl或者php等书写维护脚本,放到crontab的任务队列中循环执行。在windows os中可以使用schedule计划任务实现,或者将更新计划做成windows service,常驻内存。

woodplow的下一版本,即2.0将增加对计划更新的支持

零散页面之页面类型

woodplow 奉行的区域划分、分而治之的主要体现点就是琐碎页面(piece block),在功能上类似于很多发布系统中的自定义标签(custom label),按照实现方式分为3种:动态页面(dynamic,从数据库中按照某种条件筛选出来,按照一定的item template展现)、包含页面(include,采用capture手段把某种应用的output作为input来引用,可以用来跟其他系统整合)、静态页面(static,有编辑或者美工手动设计的小页面)。

零散页面之创建向导

动态页面(dynamic block)

1、添加动态页面基本信息。进入页面管理,选择左边的分支,将页面加入到指定的分支中。如图:添加动态页面到”新闻中心”

页面名称:为了维护方便,请起用友好的页面名称。页面类型:一共三种类型,选择动态页面。作用文件:该页面将作用到的文件,可以为频道页、首页、某个单独的包含页面、js文件等,注意:该文件的路径是相对于发布节点的。即:如果”新闻中心”所属的域的路径为/static/news,则示例中的作用页面就是/static/news/index.html,即新闻中心的首页。开始标记:出现在作用文件中,用于确定块的起始位置。结束标记:出现在作用文件中,用于确定块的结束位置。简介:尽量详细的描述此页面的功用,方便用户维护、识别。 2、补充页面的调用条件。添加完毕后,程序自动跳转到条件补充窗口,如图:

文档数量:调用的文档的数量。指定文档:如果你知道要调用的文档的标识号,可以直接输入文档的标识号,用逗号分割,比如:3,8,9,14,16 。一旦指定,则其他条件都失效。文档分支:选择所属分支的文档,过滤条件之一。(通过”手工设置”,可以设定选择该分支的子分支)文档属性:选择属于选择的文档属性的文档,过滤条件之一。如果选择多个属性,可以设定并集还是交集。文档类型:选择属于该文档类型的文档,过滤条件之一。如果不选,则默认所有的文档类型。单行模板:指定显示页面块时一行新闻的模板,又称item template,单行模板中可以嵌入模板变量,也可以使用模板函数,请查阅。页面头部:块的头部。页面尾部:块的底部。 3、手工设置。如果向导不能满足你的调用需求,你可以进行手工设置。如图:

静态页面(static)

1、广告、头部、尾部、友情链接、不定长文档调用等可选择使用静态页面。

2、创建静态页面后,便可以在编辑区域离线(使用dreamweaver)设计好页面后,把source code拷贝其中,发布即可。如图:

静态页面内容添加(大图)

包含页面(include)

1、包含页面主要用于与其他应用的整合。

2、你需要指定调用地址,区域开始定界符号,区域结束定界符号,如图:

包含页面添加(小图)

包含地址:远程调用地址,可以指定其他内部应用或外部应用的绝对访问地址,不能用相对路径。

开始字符:远程地址的执行结果中唯一标定的区域开始符号。

结束字符:远程地址的执行结果中唯一标定的区域结束符号。

如图:

那么,<!–   循环开始   –> 和 <!–  循环结束  –> 之间夹的内容将被截取到包含页面中,如果要更改样式,只需修改外部程序的参数即可。

文档管理的常规维护

01月 3rd, 2008

文档常规维护:
1、修改基本信息,不推荐修改文档tag。
2、分页信息,可以删除分页,编辑分页,添加分页。注意:编辑完要重新发布该文档。
3、审核,如果文档未经审核,无法发布,前台无法调用。
4、删除,woodplow的删除是直接从库中删除,无法恢复,谨慎使用。
5、发布,文档的静态化。

分开管理的简单说明

01月 3rd, 2008

分支是站点的逻辑结构和物理存储的骨架,因此维护时须谨慎,一旦设定好分支,不要频繁的更改,尤其是删除操作,会导致分支下内容的丢失,或者导致垃圾信息的产生。woodplow不支持分支的合并,内容的转移等操作,如果必须要做,请维护人员在数据库中批量操作。
待续… 

分支管理之内容归档
很多发布系统都按照分支进行归档,woodplow建议按照分支、文档属性、记者、编辑、来源、文档类型、发表时间等组合进行归档,尤其是按照时间归档,可以降低归档造成的服务器负载。
待续…

用woodplow cms 建立网站的步骤

01月 3rd, 2008

step1:安装系统
1、系统的运行时环境,windows2000或者windows2003(推荐),iis5.x web server(推荐iis6.0),sqlserver2000或者sqlserver2005 网络数据库。
2、在sqlserver的企业管理器中创建一个数据库,设定数据库用户名和操作密码。
3、创建一个系统帐号(例如:web_user),解压缩您下载的程序包到某个目录,并设定web_user用户对该目录的读、写权限,在iis中绑定该目录设定站点,建议使用ip直接访问后台程序,注意:打开iis的父路径,设定web_user为iis的权限用户。
4、运行安装向导(例如:http://127.0.0.1:8080/install/install.asp),按照提示一步一步完成安装。
step2:确定站点逻辑结构和存储结构
1、划分域名,根据站点的规模合理的分配域名。(例如:新闻中心=http://news.woodplow.com;体育频道=http://sport.woodplow.com)


2、划分基于域名的分支,为了合理的组织内容,建议分支深度不要超过3级,扁平、交叉的组织结构比较合理。


3、配置文件系统,文件系统是内容的物理存储方式,文档的静态化存储最好具有逻辑上、语义上的意义,便于维护。默认的安装分配了静态发布、模板文件、风格修饰、上传附件4个配置点,静态发布点是文档静态化的存储目录,捆绑了static文件夹,模板文件点是站内模板的存储目录,集中存放模板文件,捆绑了template文件夹,风格修饰点是css、javascript、icon图标等风格文件的存储目录,捆绑了style文件夹,上传附件点是文档图片、下载文件、办公文档等附件的存储目录,捆绑了attach文件夹。这四个配置点基本满足了大众化的需求,当然你也可以通过修改配置文件进行自主配置。如图:


注意:要为图片的上传选择一个配置点,默认index=4,是attach文件夹对应的上传附件配置点。
4、设定文档属性和类型,文档属性和类型是站点扁平化、交叉化的有力补充,也是woodplow的一大亮点。
可以为全站建立一个通用属性组


建议为专题策划建立一个专题属性组


然后再为不同的域创建域属性组


这样,你便可以随意的把一个或多个属性与文档关联起来,进而方便把指定的内容推到首页或者频道页,归档也灵活起来。
另外,为了建设行业门户网站的方便,我们加入了文档类型的概念,以IT类型的门户为例,不同的文档会有不同的类型,或者属于新闻类型,或者属于行情新闻,或者属于厂商新闻,或者属于导购评测,等等。


域、分支、文档属性、文档类型的紧密结合,便形成了站点扁平、可扩展的组织结构。
step3:相关杂项
1、管理文档来源,网站内容可以是原创(搜索引擎喜欢原创,原创是网站的核心资源)的,也可以是转载的,转载要注明来源(不注明来源,那是抄袭^_^)。

2、管理撰稿记者,站内的市场人员或者前方记者是原创的动力,采集的原始稿件是编辑创作的有力支撑。

3、管理站内编辑,网站的编辑是使用woodplow最频繁的人员,负责把记者采集到的信息进行加工、编篡成赏心悦目的文章,奉献给网友,随着”内容为王”理念日渐深入人心,编辑的作用越来越重要。
编辑属于系统用户

在1.0的版本中,我们并没有把编辑的权限绑定到频道上,在后期的版本中,这一点会加强。
step4:创建模板
网友访问你的网站,第一眼看到的就是网站的face、interface、looks,网站的总体风格、布局、排版、样式等等是用户体验的一部分,变得越来越重要,当然,简介、明快、让网友能迅速的捕捉到自己想要的内容,站点结构和布局就是第一位的,这是网页设计师、UI设计师、UE设计师、总编辑配合的结果,因此制作好的模板,确定好的风格和布局,现在就开始吧
1、确定网站的主色调,好的网站,主色调不会超过5中颜色,具体到频道,会有频道的次色调,这些是有css样式表决定的,随着div + css的xhtml布局的日渐推崇,css设计也越来越标准化,以便应对不同浏览器的兼容性,woodplow建议把style集中管理,上传到风格修饰存储点中。

上传css文件到风格素材存储点

2、制作模板,制作模板的工具一般采用dreamweaver,请具体看模板制作向导。
3、编辑分支,为分支指定具体的模板文件。

step5:生产内容
内容的来源一般有两种方式,转载和原创,当然大部分站长在刚开始建站的时候还会使用采集工具抓取别人的内容(不推荐,也没意义,woodplow不支持,百度谷歌也不支持)。具体查看内容生产向导。
step6:内容发布
数据库中有了内容,便可以静态化发布了,这是常规的方法、也是推荐的方法。
1、选择发布,选择你要发布的文档、专题、页面直接发布。

点击右下角,发布按钮
2、批量发布

发布进程

step7:首页、频道页、归档页
1、制作首页和频道页,处于对首页和频道页重要性的考虑,我们需要单独制作,主要是layout的制作,layout中有对区域页面的调用,一般采用服务器端的包含(SSI=server side include),区域页面则需要添加。制作完layout页面,上传到指定的目录即可。
2、文档的归档采用动态和伪静态的方式表达,可以降低维护量。并且一般按照时间进行归档。
step8:日常维护
平时工作可能大部分时间花在了维护上,为此,你可以自己书写发布脚本,进行计划任务。这个功能将在后续的版本中添加。

先决条件之域名划分

01月 3rd, 2008

域名代表网站的内容模型,也是网站内容分布式存储的体现。一个中、大型的网站往往有多个域名,一是为了站点结构的清晰,组织内容的方便;二是为了按照域名划分服务器,提高负载承担能力。在woodplow中可以创建多个域,即发布点。
例如:


编辑:

其中节点路径可以是相对路径或绝对物理路径,相对路径是相对于woodplow工作台的根目录,物理路径可以是硬盘上的任意目录(注意:要保证iis帐号对该目录的可读、可写权限)。节点域名就是你要配置的域名,当然节点域名也可以是访问路径,比如:http://static.woodplow.com/news ,无论是域名还是访问路径,都不要以”/”结尾。为了保证站点的正常访问,你至上得创建一个发布点,因为分支和文档的存储都是以域的节点路径为参照点。除非必要,请不要随意修改或者删除已经有数据的域,会导致该域下的文档丢失。

养成好的使用习惯,让woodplow cms更得心应手

01月 3rd, 2008

使用任何系统都需要养成好的使用习惯,好的使用习惯能够提高效率,降低维护成本。
1、积极做好准备工作,凡事预则立,不予则废,建站以前一定要做好市场调研,明确内容模型和站点结构,好的网站要有好的定位和盈利模式,这些东西都要反应到系统的使用中,尤其是好的站点结构,不仅能提高网友的用户体验,而且能够降低编辑、维护人员的维护成本。
2、定期归档,做好内容、模板、数据库等备份,防患于未然。内容和用户是网站的核心竞争力,如果数据库崩溃一切都玩完,因此要求维护人员要进行内容冗余。建议发布服务器和内容服务器分离,通过同步的方式把静态化的文档同步到内容服务器上,做到静态内容的冗余,还可以有效的提高服务器的吞吐量。
3、根据woodplow的数据库结构开发维护脚本,定期清除建站过程中产生的垃圾。
4、合理的使用官方或者第三方提供的插件,比如:统计插件、评论插件、rss插件、digg插件、投票插件、归档插件等等,并对这些资源进行合理的整合,进而增强与网友的交互。
5、如果有条件,进行分布式部署。发布服务器、多个内容服务器、图片服务器、素材服务器分离,动态内容(比如:论坛、blog)和静态内容(比如:静态化的新闻页面)分离,这样可以提高平台的高可用性(High Availability)和安全性(security)。
6、合理使用第三方软件,比如:photoshop、dreamweaver、防火墙软件、内容同步软件等等,提高工作效率。