Как программно создать дочернюю страницу в EPiServer 8.0

Я новичок в EPiServer, поэтому мой вопрос может показаться вам очень простым. Пожалуйста помоги!

Вопрос: куда я могу вставить код, который программно создает дочернюю страницу на вновь созданной странице EPiServer?

Контекст: когда редактор переходит в режим редактирования веб-сайта EPiServer и создает новую страницу, система, как и ожидалось, создает экземпляр выбранного типа страницы. Однако я также хочу, чтобы система создавала дочернюю страницу для этой вновь созданной страницы на основе пользовательского кода.

Я видел кучу примеров того, как программно создать страницу, но не видел примеров того, куда вставить этот код.

Допустим, у меня есть тип страницы классификации автомобилей. Когда редактор вручную создает экземпляр этого через EPiServer, я хочу, чтобы система перешла в базу данных, получила все различные классификации и создала дочернюю страницу для каждой из классификаций в рамках вновь созданного типа страницы классификации автомобилей (т. Е. Sedan Страница, Страница хэтчбека, Страница спорта).


person Nicola    schedule 04.03.2015    source источник
comment
Какую версию EPiServer вы используете?   -  person Johan Kronberg    schedule 04.03.2015
comment
@JohanKronberg, извините, забыл указать эту деталь. используя версию 8.0 - только что обновили заголовок, чтобы включить эту информацию. Благодарность   -  person Nicola    schedule 04.03.2015


Ответы (2)


Короче говоря, вы можете создать InitializableModule, в котором вы подключаетесь к событию PageCreated ContentRepository, чтобы создать страницу под вновь созданной страницей.

Примерно так: http://tedgustaf.com/blog/2010/5/attach-episerver-event-handlers-on-startup-using-initializablemodule/

Примечание: в EPiServer 7/8 вы должны использовать ServiceLocator.Current.GetInstance<IContentRepository>() вместо DataFactory при присоединении обработчиков событий и программном редактировании содержимого.

Изменить: да ладно, только что понял, что вы нашли сообщение Андерса на эту тему. :) Удачи!

person Ted Nyberg    schedule 09.03.2015

Итак, я нашел решение своей проблемы. Это комбинация создания настраиваемого атрибута, который может быть прикреплен к типам страниц, и класса, наследующего IInitializableModule (EPiServer.Framework), который перехватывает создание страницы и проверяет, имеет ли созданная страница упомянутый новый атрибут. Если да, то вызовите метод, создающий подстраницы.

Нашел очень полезный пост здесь. Однако код взят из 2011 года, поэтому некоторые классы больше не существуют (EPiServer Framework 6R2 против моей версии 8.0), поэтому мне пришлось их обновить. Но суть здесь. Для тех, кто хочет увидеть мой код, звоните мне!

РЕДАКТИРОВАТЬ: Вот как я это решил - https://blog.nicolaayan.com/2015/03/episerver-auto-create-child-pages-on-add-new-page/

person Nicola    schedule 04.03.2015
comment
Начал новый блог с решением этой проблемы в качестве моей первой публикации! nicolaayan.blogspot.com - person Nicola; 08.03.2015