当用户创建页面时,我正在处理触发事件以自动创建页面的问题。
namespace TestEventHandler
{
[TcmExtension("MyEventHandlerExtension")]
public class MyEventHandler : TcmExtension
{
public MyEventHandler()
{
Subscribe();
}
public void Subscribe()
{
EventSystem.Subscribe<Page, SaveEventArgs>(HandlerForProcessed, EventPhases.Processed);
//EventSystem.Subscribe<Page, PublishEventArgs>(HandlerForInitiated, EventPhases.Initiated);
}
private void HandlerForProcessed(Page subject, SaveEventArgs args, EventPhases phase)
{
//create page.
Tridion.ContentManager.Session mySession = new Tridion.ContentManager.Session(@"user");
XmlElement XmlElement = null;
Page newPage = new Page(XmlElement, mySession);
newPage.Title = subject.Title + "_auto";
newPage.FileName = subject.FileName + "_auto";
newPage.PageTemplate = subject.PageTemplate;
newPage.Save(true);
newPage.CheckOut();
}
}
}
它不是自动创建页面。我认为需要对此代码进行一些修改。
我收到错误"此用户的模拟需要将Machinename\MTSUser帐户配置为模拟用户"。
有人能帮忙修改吗?我使用的是TOM.net API。
谢谢。
错误是由于您试图创建的新会话造成的。这不应该是必要的。您可以从subject.Session
页获取。
此外,您为页面使用了错误的构造函数。查看文档。
样本代码:
Page page = page = new Page(session, new TcmUri(sg));
page.Title = theTitle;
page.FileName = new Regex("\W").Replace(theTitle, "");
page.PageTemplate = session.GetObject(pt) as PageTemplate;
ComponentTemplate componentTemplate = session.GetObject(ct) as ComponentTemplate;
page.ComponentPresentations.Add(
new ComponentPresentation(component, componentTemplate));
page.Save(true);
您需要的参数是sg
、theTitle
、pt
、ct
、component
。例如,您可以从文件夹元数据中读取它们。