Я бы предложил создать глобальный обработчик событий для отслеживания изменений. Хотя Kentico уже выполнит большую часть этого отслеживания для вас, вы можете специально добавить любые указанные c события, которые вы хотите, в качестве глобального события. Это будет обрабатывать любые изменения, сделанные на общедоступном веб-сайте publi c, в пользовательском интерфейсе Kentico и в любых вызовах Kentico API.
В вашем собственном глобальном обработчике событий вы можете проверить различные типы событий в зависимости от объекта и активности CRUD. Например, что-то вроде этого:
using CMS;
using CMS.CustomTables;
using CMS.DataEngine;
using CMS.DocumentEngine;
// Registers the custom module into the system
[assembly: RegisterModule(typeof(CustomInitializationModule))]
public class CustomInitializationModule : Module
{
// Module class constructor, the system registers the module under the name "CustomInit"
public CustomInitializationModule()
: base("CustomInit")
{
}
// Contains initialization code that is executed when the application starts
protected override void OnInit()
{
base.OnInit();
// Assigns custom handlers to events
DocumentEvents.Insert.After += Document_Insert_After;
}
private void Document_Insert_After(object sender, DocumentEventArgs e)
{
if (e.Node.ClassName.ToLower() == "your.classname")
{
// create an event to log to a custom module table or a custom table so it's not logged directly in the Kentico Event log
CustomTableItem item = new CustomTableItem("customtable.name");
item.SetValue("ItemEventType", "Create document");
item.SetValue("ItemEventCode", "Your event code");
item.SetValue("ItemEventUserID", e.Node.DocumentModifiedByUserID);
item.SetValue("ItemEventUrl", e.Node.NodeAliasPath);
item.SetValue("ItemEventName", e.Node.DocumentName);
item.Insert();
}
}
}
Это простой пример создания документа. Вам не нужно проверять имя класса типа страницы, если вы не хотите. Вы также можете включить глобальный обработчик событий для любого «объекта», такого как cms_class
объект, просто используйте это определение в своем коде <name>Info.TYPEINFO.Events.<eventtype>
. Это не ограничивается каким-либо объектом, вы можете отслеживать обновления преобразований, модификации полей типа страниц и т. Д. c. Вам просто нужно знать имя / тип объекта и писать код вокруг него.