网站制作发布过程中,通常发布一篇文档,需要自动更新使用到此文档的栏目或者站点首页,而这样的首页可能有很多,为了保证细览页面和概览页面更新的实时性和高效性,这些首页概览页面不需要手工去操作发布,而是在发布细览的同时,会自动触发其发布。
在WCM发布逻辑中,如果新闻中心栏目首页模板包含如下内容:
<TRS_Documents ID="娱乐新闻"> ...... </TRS_Documents>
那么娱乐新闻栏目首页更新时,新闻中心栏目就会同时也发布更新。
新闻中心与娱乐新闻栏目之间的触发关系,我们称之前静态触发关系,在模板保存时,系统将进行自动分析并进行保存。
为了减少模板的撰写量,同时也为了做专题,一般也都会按照下面的方式撰写模板:
<!-- 获取当前栏目的第一个子栏目的文档 --> <TRS_Documents ChildIndex="0"> ...... </TRS_Documents> <!-- 分别获取当前栏目的各个子栏目的文档 --> <TRS_Channels> <TRS_Documents> ...... </TRS_Documents> </TRS_Channels>
从WCM52发布体系调整以后,WCM都会鼓励在模板中聚合内容,不推荐采用检索栏目或者自动分发的方法聚合内容,所以项目中会有很多TRS_RollDocuments的灵活使用,解决用户各种发布需求。
一般直接指定ChannelIds都可以正常触发发布,但是对于如下情况,不能自动触发:
<!-- 将新闻中心下的各级子栏目的文档都显示 --> <TRS_RollDocuments ParentChannelId="新闻中心" ChildLevel="5" AutoTrigger="true"> ........ </TRS_RollDocuments> <!-- 将分别将站点下一级子栏目下的各级子栏目的文档都显示 --> <TRS_Channels> <TRS_RollDocuments ParentChannelId="新闻中心" ChildLevel="5" AutoTrigger="true"> ........ </TRS_RollDocuments> </TRS_Channels>
以上情况的模板都有一个共同特性,就是随着WCM的使用,可能会建立新的栏目,而此时发布时,用户期望提取新栏目的内容,但在模板保存时,这些栏目当时还是没有新建的,这种触发关系我们称之为动态触发关系,动态关系不会在模板新建或修改时建立,而需要后期手工运行触发发布分析工具。
"TRS_OUTLINE", "TRS_DOCUMENTS", "TRS_VIEWDATAS"
TRS_ROLLDOCUMENTS
"TRS_ROLLDOCUMENTS", "TRS_OUTLINE", "TRS_DOCUMENTS","TRS_VIEWDATAS
TRS_PAGEGENERATE
前面提到,静态触发关系在模板新建或修改时系统将自动建立,而动态触发关系需要手工运行工具建立,运行该工具后,将建立触发关系。
工具使用方式:
以管理员身份进入WCM工具台,手工执行触发发布关系创建工具
http://<WCM服务器IP + 端口>/wcm/wcm_use/
通过wcm工具可以查看当前系统的触发关系,包括静态和动态的触发关系。 以管理员身份进入WCM工具台,手工执行触发发布相关工具:
http://<WCM服务器IP + 端口>/wcm/wcm_use/
点击栏目触发分析工具,查看触发关系已经建立
对于一些特殊的需求,WCM分析不出引用的情况(一般可以分析出来,分析不出的项目请将站点导出以回复方式附上,我们可以协助诊断),系统还支持手工强行加入触发发布的关系。
例如:
用户要求娱乐新闻栏目一旦有更新以后,新闻中心栏目必须同时更新,系统分析不出他们的触发关系,假定娱乐新闻ID为10,新闻中心ID为4,那么执行以下SQL即可:
insert into WCMChannelChildIndexQuote (TemplateId, FolderType, FolderId, QuoteChannelId)values(0, 101, 4, 10);
用户要求娱乐新闻栏目一旦有更新以后,XXX站点必须同时更新,系统分析不出他们的触发关系,假定娱乐新闻ID为10,XXX站点ID为2,那么执行以下SQL即可:
insert into WCMChannelChildIndexQuote(TemplateId, FolderType, FolderId, QuoteChannelId) values(0, 103, 2, 10);
注意FolderType的值为103,栏目10触发的为站点