Ссылка на элемент источника данных DropLink с пользовательским поставщиком данных в Sitecore - PullRequest
2 голосов
/ 20 февраля 2012

Как связать DropLink с помощью пользовательского провайдера данных?

Дополнительная информация: Я пытаюсь создать сайт каталога товаров с помощью Sitecore.К каждому продукту в дереве контента sitecore могут быть добавлены звездный рейтинг и краткий текстовый обзор (, который будет связан с пользователем, расширенным с поставщиком профилей, но это другой вопрос ).

Я планирую сохранить обзорную информацию во внешней базе данных и ссылаться на нее, используя собственный поставщик данных.Я скачал NorthwindDataProvider из общего источника ( здесь ) и изменил его, чтобы использовать таблицу, которая содержит рейтинг, текст и поле уникального идентификатора для хранения идентификатора продукта, из которого на сайте прилагается обзорto.

Поле шаблона представляет собой дроплинк, а для источника данных заданы продукты в каталоге.

Когда я редактирую обзор в пользовательском поставщике данных с помощью редактора контента sitecore, состояние дроплинк«Значение отсутствует в списке выбора», даже если я выберу один из заполненных продуктов и сохраню его с помощью sitecore.

Он сохраняет идентификатор в базе данных, но если я посмотрю на необработанное значение, он отобразит идентификатор без фигурных скобок.Необработанные значения рабочих полей droplink содержат квадратные скобки.

Для создания обзора я использую сообщение jquery для веб-службы, которая пишет в базу данных с использованием внешнего текста данных.Должен ли я использовать какой-либо API Sitecore для использования пользовательского провайдера данных вместо этого?

Любая информация с использованием пользовательских провайдеров данных будет полезна.В документации, которую я смог найти, все указано, что можно сделать, но я изо всех сил пытаюсь найти реальную реализацию.

1 Ответ

1 голос
/ 16 марта 2012

Итак, во-первых, у вас есть поле шаблона, и вы используете droplink, который собирается сохранить guid для выбранного элемента.Я не совсем понимаю, указываете ли вы источник данных на элемент Sitecore или нет ... но это важно, если вы используете droplink.Вот что я бы предложил вместо этого для наиболее простого способа сделать это:

Создайте шаблон, в который вы добавите поля для обработки логики, имеющей дело с элементами вашего каталога.То, как вы это делаете, - ваш выбор, и Sitecore это не волнует, поскольку он собирается работать только с этим элементом, и все, о чем он заботится, - это найти элемент ... вы пишете бизнес-логику для управления внешними данными.

Если у вас есть папка, в которой хранятся элементы каталога, вы можете легко написать сценарий, который будет запускаться механизмом правил в Sitecore, или задачу Sitecore, которая регулярно запускается, чтобы элементы каталога добавлялись, обновлялись или удалялисьсоответствующий список предметов Sitecore.

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

Надеюсь, это полезно!

...