我对Tridion 2011中的事件系统有疑问.....当其他页面被发送到发布队列时,是否可以发布另一个页面?
我们目前有一个XML文件来定义我们的网站导航和站点地图,但遗憾的是,每次将新页面添加到网站时,目前都需要手动发布.
我对从事件系统中自动发布的关注也是必须多次发布同一页面,而实际上它只需要在发布队列中的最后一个项目结束其事务后才需要发布.
每当您想要更改Tridion为响应发布操作而发布的项目数时,我的脑海中立刻会尖叫自定义解析器.
克里斯·萨默斯不久前写了一篇关于他们经历的精彩文章:http://www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-attribute
Nuno更简洁地写下了他的经历:http://nunolinhares.blogspot.com/2011/10/tridion-publisher-and-custom-resolvers.html
听起来像你应该简单地将导航添加到那里的ResolvedItems集合.如果您始终如一地使用解析器,您也不会获得您似乎担心的发布事务的爆炸性增长,而是在单个事务中发布(和部署)所有相关项.
您可以通过订阅PublishTransaction Save事件来发布每个事务的Sitemap(可以包含许多页面,结构组等).
您可以考虑验证发布队列并查看是否有等待事务,但理论上这可能会推迟Sitemap的发布很长一段时间.
EventSystem.SubscribeAsync<PublishTransaction, SaveEventArgs>(
(subject, args, phase) =>
{
if (!PublishStransactionStateIsSuccessfullyCompleted(subject))
return;
// Code to publish sitemap
},
EventPhases.TransactionCommitted
);
Run Code Online (Sandbox Code Playgroud)
static bool PublishStransactionStateIsSuccessfullyCompleted(PublishTransaction transaction)
{
return transaction.State == PublishTransactionState.Success ||
transaction.State == PublishTransactionState.Warning;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
665 次 |
| 最近记录: |