如何以编程方式在EPiServer 8.0中创建子页面

时间:2015-03-04 09:17:25

标签: webpage episerver programmatically-created

我是EPiServer的新手,所以你可能会发现我的问题非常简单。请帮忙!

问题:在哪里可以将以编程方式创建子页面的代码插入新创建的EPiServer页面?

上下文:当编辑者进入EPiServer网站的编辑视图并创建新页面时,系统会按预期创建所选页面类型的实例。但是,我还希望系统根据自定义代码为这个新创建的页面创建一个子页面。

我已经看到了大量关于如何以编程方式创建页面的示例,但我还没有看到插入此代码的示例。

我们说我有汽车分类页面类型。当编辑器通过EPiServer手动创建此实例时,我希望系统转到DB,获取所有不同的分类,并为新创建的汽车分类页面类型(即Sedan)下的每个分类创建子页面。页面,两厢页面,体育页面。

2 个答案:

答案 0 :(得分:0)

好的,我找到了解决问题的方法。它是创建可附加到页面类型的自定义属性和继承IInitializableModule(EPiServer.Framework)的类的组合,该类拦截页面创建并检查创建的页面是否具有所提及的新属性。如果是,则调用创建子页面的方法。

找到了一个非常有用的帖子here。但是,代码来自2011年,因此一些类不再存在(EPiServer Framework 6R2与我的8.0),所以我不得不更新它们。但要点就在那里。对于那些有兴趣看我的代码的人,请打我!

答案 1 :(得分:0)

简而言之,您可以创建一个InitializableModule,您可以在其中连接ContentRepository的PageCreated事件,以在新创建的页面下创建一个页面。

如下所示:http://tedgustaf.com/blog/2010/5/attach-episerver-event-handlers-on-startup-using-initializablemodule/

注意:在EPiServer 7/8中,在附加事件处理程序和以编程方式编辑内容时,您将使用ServiceLocator.Current.GetInstance<IContentRepository>()而不是DataFactory。

编辑:没关系,只是意识到你找到了Anders&#39;关于这个问题的帖子。祝你好运!