Вложенное мультиполе или мультиполе с в мультиполе в CQ5
Хотел построить вложенный мультипольный диалог в cq5.
Мое требование заключается в создании одного компонента с
заглавие
LinkText
Linkpath
ImageUpload
в этом мультиполе я хотел бы иметь текст ссылки в качестве другого мультиполя.
Замечания:
Я смог создать заголовок, текст ссылки, путь ссылки, загрузку изображения как мультиполе, но не мог сделать текст ссылки как другое мультиполе внутри мультиполя. Я новичок в cq5 dev,Kinldy. Предложите, если есть какой-либо другой подход.
3 ответа
Я считаю, что единственный способ сделать это - написать свой собственный виджет. Я выполнил это, но не могу поделиться кодом. Если вы хотите, вы можете проверить эту библиотеку с открытым исходным кодом, над которой я работал, по адресу https://github.com/Velir/AEM-Toolbox. Виджет StucturedMultiList может удовлетворить ваши потребности.
Это будет включать в себя настройку мультиполя js и создание пользовательских xtypes путем расширения составного поля. Большая часть вложенности пользовательских мультиполей аналогична созданию отдельного мультиполя.
Внутреннее мультиполе вернет строку, разделенную запятыми, в getValue, ее нужно будет объединить с другими полями внешнего мультиполя, разделенными разделителем. Заданное значение внутреннего мультиполя будет ожидать строкового массива, для этого вам придется изменить мультиполе js внутреннего мультиполя и переопределить метод заданного значения, чтобы взять строку, разделенную запятыми, и разбить ее на массив.
Внешнее мультиполе также необходимо обновить при изменении содержимого внутреннего мультиполя. Это можно сделать, вызвав метод update сразу после обновления внутреннего мультиполя (ссылку на внешнее мультиполе можно получить с помощью метода findParentBy)
Конечный результат будет выглядеть так
Массив строк
[0]: a-external-field1<# - > a-external-field2<# -> a-1-inner-field1<# - #>a-1-inner-field2<# - #>, a-2 -innerfield1<# - #>а-2-innerfield2<# - #><# - *>
[1]: b-external-field1<# - > b-external-field2<# -> b-1-inner-field1<# - #>b-1-innerfield2<# - #>, b-2-innerfield1<# - #>Ь-2-innerfield2<# - #><# - *>
Проверьте эту ссылку http://cq5tutorials.blogspot.com/2014/04/cq5-multifield-in-multifield.html
Пример реализации пользовательского виджета, описанного Крисом Леггеттом, можно найти по адресу:
http://cq.shishank.info/2011/12/19/multifield-with-custom-xtype/
Как я сохранил значение в формате:
[Item1|item2]
Используя немного логики, вы можете затем извлечь текст ссылки и URL, но третье значение кажется плохим, если вы используете этот формат, но стиль хранения этой информации будет таким же. Может быть, вы могли бы хранить информацию как JSON, но я лично не видел реализацию этого.
Надеюсь, это поможет.