Обработчики событий
Обработчики событий позволяют выполнять собственный код, как до возникновения события так и после того, как события произойдет. Для данного руководства необходима установка Umbraco со стартовым набором Fanoe.
Подписывание на событие
Необходимо добавить строку текста в лог, когда публикуется документ.
Начнем с того, что добавим новый класс в проект. Назовем его LogWhenPublished. Для обработки событий необходимо подключить сервис
using Umbraco.Core; , а затем создать класс обработчика, который будет наследоваться от обработчика событий приложения : ApplicationEventHandlerusing System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Umbraco.Core;
public class LogWhenPublished : ApplicationEventHandler
{
///Здесь мы будем подписываться на событие
}
В первую очередь в нашем классе LogWhenPublished необходимо переопределить метод
ApplicationStarted а затем подписаться на событие Umbraco.Core.Services.Contentservice.Published.protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
Umbraco.Core.Services.ContentService.Published += ContentService_Published;
}
Для обработки события необходимо добавить соответствующий метод:
void ContentService_Published(Umbraco.Core.Publishing.IPublishingStrategy sender, Umbraco.Core.Events.PublishEventArgs<Umbraco.Core.Models.IContent> e)
{
// Здесь будет находиться код обработчика
}
Добавить сообщение в лог, когда событие произойдет. Для этого будем использовать LogHelper, поэтому добавим
using Umbraco.Core.Logging; :LogHelper.Info(typeof(LogWhenPublished), "Something has been published");
Окончательно класс будет выглядеть следующим образом:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Umbraco.Core;
using Umbraco.Core.Logging;
public class LogWhenPublished : ApplicationEventHandler
{
protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
Umbraco.Core.Services.ContentService.Published += ContentService_Published;
}
void ContentService_Published(Umbraco.Core.Publishing.IPublishingStrategy sender, Umbraco.Core.Events.PublishEventArgs<Umbraco.Core.Models.IContent> e)
{
// LogHelper запишет в tracelog.txt
LogHelper.Info(typeof(LogWhenPublished), "Something has been published");
}
}
Перейдите в бэк-офис и опубликуйте какой-нибудь контент. Далее откройте tracelog.txt, который располагается в
App-Data/Logs/, перейдите в конец документа, и и далее вы увидите, что сообщение попало в лог.
До события и после
Выше было продемонстрировано, как выполняется код, когда публикуется какой-то контент. Код выполняется уже после того, как контент был опубликован, потому что используется событие
Published. Если необходимо выполнять обработчик до возникновения события, то необходимо использовать Publishing. Точно также можно использовать и другие события Saving : Saved, Copying : Copied и так далее.