我正在努力在用户创建页面时触发事件以自动创建页面.
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
它不是自动创建页面.我认为这段代码需要进行一些修改.
我收到错误"此用户模拟需要将Machinename\MTSUser帐户配置为模拟用户".
有人可以帮助进行所需的修改吗?我正在使用TOM.net API.
谢谢.
该错误是由您尝试创建的新会话引起的.这不应该是必要的.你可以从Page获得它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);
Run Code Online (Sandbox Code Playgroud)
你所需要的参数sg,theTitle,pt,ct,component.例如,您可以从文件夹元数据中读取它们.
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |