Я пытаюсь заставить Sitecore создать новый элемент перед диалоговым окном «Выбор источника данных», которое открывается из редактора страниц, когда на страницу добавляется новый рендеринг.
мы создаем многосайтовое решение, в котором каждый сайт представлен так (концептуально)
site1 (template = website)
Datasources (template = datasourcefolder)
Module X Sources (template = module1container)
Module Source 1 (template = module1)
Module Y Sources (template = module2container)
...
Home (template = startpage)
Сайты будут созданы с использованием шаблона филиала, который будет создавать элементы на основе веб-сайта шаблонов, папки источника данных и стартовой страницы.
Вот что я хочу, чтобы произошло:
При добавлении нового вложенного макета проверьте, существует ли источник, если нет, создайте новый элемент в site1/Datasources/[Module name] на основе указанного шаблона (определяемого как Родительский шаблон источника данных). и добавлен в шаблон Подмакет). Затем добавьте этот новый элемент в диалоговое окно DatasourceRoots, чтобы пользователь мог создавать элементы источника данных под ним.
Я успешно внедрил конвейер для проверки и создания элемента, если он не существует, а в диалоговом окне Выбрать источник данных для рендеринга отображается вновь созданный элемент и позволяет пользователю создать новый элемент источника данных ниже это, как и ожидалось. Однако после нажатия кнопки «ОК» отображается предупреждение с сообщением «Произошла ошибка». Закрытие этого диалогового окна и повторное выполнение операции (когда корень источника данных уже существует) работает нормально.
Используя Reflector, я убедился, что элемент, созданный из диалогового окна (Sitecore.Shell.Applications.Dialogs.SelectRenderingDatasourceForm), возвращается правильно, и диалог закрывается с правильными аргументами и вызовом SetDialogValue с ожидаемым элементом.
Я предполагаю, что мой вопрос; что происходит ПОСЛЕ закрытия этого диалога? Какой конвейер запускается для фактической установки источника данных при рендеринге? Мне нужно выяснить, где возникает эта ошибка, и, конечно же, исправить то, что не так...
Я понимаю, что это может быть немного сложно понять, я с удовольствием предоставлю код, если это необходимо.