检查节点是否已在Umbraco 6.1.4 asp.net c#中发布?

时间:2013-09-30 11:24:02

标签: c# asp.net asp.net-mvc umbraco

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

这有点工作,但你可以在你的doc类型中添加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询问任何特定的实施问题。

答案 1 :(得分:0)

最好的办法是在Umbraco的发布事件中编写钩子,然后获取正在发布的文档的节点ID。在数据库中有一个表,用于存储用于构建Umbraco审计跟踪的数据(不确定它是哪一个),在那里您可以检查文档上次发布的时间或者在那里添加语言逻辑的次数。请参阅fr引用下面的主题: example of a publish event hook

Overview of all events in umbraco