1

有没有办法检查 Umbraco ( v. 6.1.5) 内容中的节点是否已经发布或节点已经发布了多少次,这样,例如,如果这是第二次按“发布”相同节点,我可以应用一些逻辑吗?

我需要发布的翻译计数,以便我可以更新其他语言节点中内容中的文本,因为 MS Translator 仅在我要翻译的节点首次发布时才起作用。

谢谢!

4

2 回答 2

1

这是一个小工作,但您可以将publishedCount标签属性添加到您的文档类型,然后每次使用以下代码保存时递增该值:

public class SaveEvent : ApplicationEventHandler
{

    protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
    {
        ContentService.Saving += ContentService_Saving;
    }

    void ContentService_Saving(IContentService sender, SaveEventArgs<IContent> e)
    {
        foreach (var item in e.SavedEntities)
        {
            if (!item.HasProperty("publishedCount"))
                return;

            int workingCount = item.GetValue<int>("publishedCount");                              
            item.SetValue("publishedCount", workingCount++);

            if(workingCount => 1)
            {
                // do additional work here
            }
       }
    }


}

然后,您的已发布节点将始终具有您可以检查的 publishedCount 属性。

您可以在http://our.umbraco.org/wiki/reference找到更多信息,也可以在http://our.umbraco.org询问任何具体的实施问题。

于 2013-10-01T08:03:55.003 回答
0

你最好的办法是将钩子写入 Umbraco 的发布事件,然后获取正在发布的文档的节点 ID。在数据库中有一个表,它存储用于构建 Umbraco 审计跟踪的数据(不确定它是哪一个),在那里您可以检查文档上次发布的时间或多少次,然后在那里添加您的语言逻辑。请参阅下面的线程参考文献: 发布事件挂钩的示例

umbraco 中所有事件的概述

于 2013-10-01T06:07:13.107 回答