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

问题描述 投票:1回答:2

我是EPiServer的新手,所以您可能会发现我的问题很简单。请帮助!

问题:如何在新创建的EPiServer页面上插入以编程方式创建子页面的代码?

Context:当编辑者转到EPiServer网站的“编辑”视图并创建新页面时,系统将按预期方式创建所选页面类型的实例。但是,我还希望系统根据自定义代码为该新创建的页面创建一个子页面。

我已经看到了很多有关如何以编程方式创建页面的示例,但是我没有看到在何处插入此代码的示例。

假设我有汽车分类页面类型。当编辑器通过EPiServer手动创建此实例时,我希望系统进入数据库,获取所有不同的分类,并为新创建的Cars Categories Page Type(即Sedan)下的每个分类创建一个子页面。页,掀背车页面,体育页面)。

webpage episerver programmatically-created
2个回答
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。

Edit:没关系,只是意识到您已经找到了Anders关于该主题的帖子。 :)祝你好运!


0
投票

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

找到了非常有用的帖子here。但是,代码来自2011年,因此某些类不再存在(EPiServer Framework 6R2与我的8.0),因此我不得不对其进行更新。但是要旨在那里。对于那些有兴趣查看我的代码的人,打我吧!

编辑:这是我的解决方法-https://blog.nicolaayan.com/2015/03/episerver-auto-create-child-pages-on-add-new-page/

© www.soinside.com 2019 - 2024. All rights reserved.