Случилось такое, что клиенту было недостаточно поля описания у свойства типа "Файл" с фотографиями - слишком мало текста помещается (ограничение в базе на 255 символов, тип VARCHAR), а работать с изображениями через медиабиблиотеку неудобно. Было принято решение дополнить текстовое поле описания более подробным полем. Вот так:
То есть после нажатия на кнопку "Добавить описание" появляется не одно поле, а два - первое с помощью шаблона пойдет в alt и title к картинке, а второе будет подписью.
Суть решения в работе с событиями OnAfterIBlockElementUpdate, OnBeforeProlog и OnEndBufferContent.
Почему не кастомизация страницы редактирования элемента? Оказалось, что список файлов, представленный на картинке генерируется методом модуля fileman - кастомизировать его "легально" не получится - обновления затрут изменения.
Таким образом суть решения заключается в добавлении своей таблицы, которая хранит ID значения свойства и подробное описание к этому свойству (картинке).
С помощью OnEndBufferContent и регулярных выражений редактируем страницу, добавляя textarea рядом с полем ввода описания.
Через событие OnAfterIBlockElementUpdate сохраняем введенные значения в нужной таблице.
А в OnBeforeProlog подключаем простой скрипт, который показывает текстовые поля с детальным описанием для тех свойств, где не введено обычное описание (хотя это можно было сделать и в OnEndBufferContent, но так проще и быстрее).
В целом решение простое, но его поиск занимает определенное время, поэтому надеюсь, что кому-нибудь помог.
Сам код довольно большой, не вижу смысла выкладывать его целиком. Однако, хочу узнать у сообщества, есть ли смысл сделать такое решения для MarketPlace?
То есть после нажатия на кнопку "Добавить описание" появляется не одно поле, а два - первое с помощью шаблона пойдет в alt и title к картинке, а второе будет подписью.
Суть решения в работе с событиями OnAfterIBlockElementUpdate, OnBeforeProlog и OnEndBufferContent.
Почему не кастомизация страницы редактирования элемента? Оказалось, что список файлов, представленный на картинке генерируется методом модуля fileman - кастомизировать его "легально" не получится - обновления затрут изменения.
Таким образом суть решения заключается в добавлении своей таблицы, которая хранит ID значения свойства и подробное описание к этому свойству (картинке).
С помощью OnEndBufferContent и регулярных выражений редактируем страницу, добавляя textarea рядом с полем ввода описания.
Через событие OnAfterIBlockElementUpdate сохраняем введенные значения в нужной таблице.
А в OnBeforeProlog подключаем простой скрипт, который показывает текстовые поля с детальным описанием для тех свойств, где не введено обычное описание (хотя это можно было сделать и в OnEndBufferContent, но так проще и быстрее).
В целом решение простое, но его поиск занимает определенное время, поэтому надеюсь, что кому-нибудь помог.
Сам код довольно большой, не вижу смысла выкладывать его целиком. Однако, хочу узнать у сообщества, есть ли смысл сделать такое решения для MarketPlace?