我是EPiServer的新手,所以你可能会发现我的问题非常简单。请帮忙!
问题:在哪里可以将以编程方式创建子页面的代码插入新创建的EPiServer页面?
上下文:当编辑者进入EPiServer网站的编辑视图并创建新页面时,系统会按预期创建所选页面类型的实例。但是,我还希望系统根据自定义代码为这个新创建的页面创建一个子页面。
我已经看到了大量关于如何以编程方式创建页面的示例,但我还没有看到插入此代码的示例。
我们说我有汽车分类页面类型。当编辑器通过EPiServer手动创建此实例时,我希望系统转到DB,获取所有不同的分类,并为新创建的汽车分类页面类型(即Sedan)下的每个分类创建子页面。页面,两厢页面,体育页面。
答案 0 :(得分:0)
好的,我找到了解决问题的方法。它是创建可附加到页面类型的自定义属性和继承IInitializableModule(EPiServer.Framework)的类的组合,该类拦截页面创建并检查创建的页面是否具有所提及的新属性。如果是,则调用创建子页面的方法。
找到了一个非常有用的帖子here。但是,代码来自2011年,因此一些类不再存在(EPiServer Framework 6R2与我的8.0),所以我不得不更新它们。但要点就在那里。对于那些有兴趣看我的代码的人,请打我!
答案 1 :(得分:0)
简而言之,您可以创建一个InitializableModule,您可以在其中连接ContentRepository的PageCreated事件,以在新创建的页面下创建一个页面。
注意:在EPiServer 7/8中,在附加事件处理程序和以编程方式编辑内容时,您将使用ServiceLocator.Current.GetInstance<IContentRepository>()
而不是DataFactory。
编辑:没关系,只是意识到你找到了Anders&#39;关于这个问题的帖子。祝你好运!