Как сопоставить имя поля с другим именем поля

У меня есть два поля, которые проходят по всему веб-сайту, и я хотел бы сопоставить их, чтобы при вводе пользователем значения в одно из полей оно совпадало с другим полем. Я использую Sitecore Rocks и пытаюсь использовать запрос для этого.

 select @#h1#, @#Title#
 from /sitecore/Content/Home//*[@#h1# !="@#Title#"];

 update set @#h1# = @#Title# from /sitecore/Content/Home//*[@#Title# = "<id>"];

Что мне здесь не хватает?

2 ответа

В этой статье говорится о подключении к item:saving Событие, которое позволяет сравнивать значения полей элемента до и после изменений:

http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2010/11/Intercepting-Item-Updates-with-Sitecore.aspx

Используя это, вы можете определить, какое поле было изменено, а затем изменить другое для соответствия.

Мне пришлось сделать что-то похожее на это, когда было добавлено новое поле, и мы хотели установить начальное значение равным существующему полю. Это может быть ошибка в Sitecore Rocks, но я обнаружил, что она будет обновлять поле только тогда, когда статическое значение является частью запроса.

Когда я побежал @#h1# = @#Title#анализатор запросов будет возвращать правильное количество обновленных элементов, но никакие значения не были обновлены. Тем не мение, @#h1# = '<id>' работал отлично. Попробовав несколько вещей, я обнаружил, что сделал то, что хотел.

update set @#h1# = '' + @#Title# from /sitecore/Content/Home//*[@#Title# = "<id>"];

Надеюсь, это поможет.

Другие вопросы по тегам