У нас есть рендеринг, перечисляющий выбранные элементы в TreeSelect в текущем элементе. В нашем случае мы называем их "Метки" (1)
Мы добавили кнопку редактора полей в компонент, чтобы редактор мог изменять выбранные элементы. (2) (Как описано, например, Добавление настраиваемого компонента)
Когда редактор нажимает (2) окно редактора (3), открывается в диалоговом окне. Редактор может выбирать различные элементы (называемые тегами в нашем случае) с помощью TreeSelect.
Когда редактор нажимает кнопку ok (4), значения устанавливаются.
Теперь к проблеме:
Значения на самом деле устанавливаются по мере их сохранения, когда редактор нажимает кнопку "Сохранить", но мы хотим, чтобы наш список на странице (1) сразу отражал установленные элементы, когда редактор нажимает кнопку ok (4), т.е. до чтобы фактически сохранить весь предмет.
Как мы это достигаем?
(Я нахожусь в контакте с поддержкой Sitecore, но до сих пор я не получил никаких ответов...)
Обновление После большого разговора с поддержкой у нас по-прежнему нет полезного решения.
Мы попытались превратить его в средство визуализации полей, отображающее ссылки. Что получилось:
- Поле обновляется, когда вы редактировали его в редакторе всплывающих окон. (Но...)
- В первый раз при загрузке страницы он выглядит хорошо.
- Вы можете сделать кнопку WebEdit с командами для редактирования поля и добавить его как пользовательскую кнопку в поле (register
<command name="webedit:fieldeditor" type="Sitecore.Shell.Applications.WebEdit.Commands.FieldEditor, Sitecore.Client"/>
) и установить Нажмите кнопку наwebedit:fieldeditor(command={3473DDA1-2983-493C-AF7A-054C75AA7AD3},fields=NameOfField
, где указатель указывает на себя и значок "Значок", установлен на нем.)
Что не получилось:
- Поле обновляется по необработанному значению, а не тому, что я хочу отобразить. Используется код сервера, но не в рендеринг html-кода.
- Когда я хочу отредактировать значение в редакторе полей, значение, отправленное редактору поля, не является необработанным значением, а тем, что фактически отображается на странице. (Я думаю, это можно как-то решить)
Проблема с поддержкой превратилась в запрос функции, позволяющий серверу участвовать в рендеринге поля, а не просто отправлять новое значение для обновления JavaScript. Сервер делает первый рендеринг, поэтому, когда он уже участвует в обновлении, ему также должно быть разрешено выполнять следующие действия.
Мы решили не тратить больше времени на это прямо сейчас (у нас есть и другие вещи, чтобы сделать тоже). У меня плохой опыт работы с редактором, поскольку поле не обновляется до тех пор, пока редактор не сохранит этот элемент.
Тем не менее у нас нет подходящего решения для этой проблемы. Если вы хотите продолжить работу над ним и хотите получить ссылку на мою проблему, это 439059.