Я хочу создать настраиваемую страницу, которая позволяет мне вручную отслеживать каждое изменение данных, сделанное kentico в базе данных. Я понял, что могу реализовать это с помощью кода с помощью NewClassWizard. Но когда это будет сделано, как я могу использовать его в админке Kentico? Я пытаюсь загрузить его из модуля Page Type, но могу найти способ указать свой собственный класс. Это правильный способ его использования? Документация не совсем ясна, спасибо за вашу помощь
Используйте NewClassWizard в kentico admin
Ответы (1)
Я бы предложил создать глобальный обработчик событий для отслеживания изменений. . Хотя Kentico уже будет выполнять большую часть этого отслеживания за вас, вы можете специально добавить любые конкретные события, которые хотите, в качестве глобального события. Это будет обрабатывать любые изменения, сделанные на общедоступном веб-сайте, ориентированном на клиентов, внутри пользовательского интерфейса 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>
. Это не ограничивается каким-либо объектом, вы можете отслеживать обновления преобразований, изменения полей типа страницы и т. Д. Вам просто нужно знать имя / тип объекта и написать код вокруг него.