Создал форму редактирования элементов. Но теперь нет возможности настроить из админки названия и порядок (первое, второе...) полей. А надо... Взял из \bitrix\modules\iblock\admin\iblock_element_edit.php от //START of the custom form до //END of the custom form Не понял где в файле написано как система выводит НЕ пользовательскую форму.
Получилось. Опишу весь процесс создания форм редактирования элементов. Копируем bitrix\modules\iblock\admin\iblock_element_edit.php в /bitrix/php_interface/include/iblock_element_edit_my.php и в нашем новом файле оставляем строки от
Код
//START of the custom form
до
Код
//END of the custom form
и редактируем как нам нужно. Как называть поля ввода в форме (name="???";)? В исходном коде поля выводятся так
Функция _ShowPropertyField находится в bitrix\modules\iblock\admin_tools.php Смотрим в ней как поля в форме называть...
В настройках инфоблока данный файл указываем в качестве "Файл с формой редактирования элемента".
Смотрим что получилось... Теперь поля не отсортированы. И кнопки "Настроить" нет. Не хочется в iblock_element_edit_my.php добавлять механизм сортировки и отказываться от стандартной функции?
Проверяем... Теперь появился еще один Toolbar с одним пунктом "Настроить". Хотелось бы конечно в уже существующий добавить, но увы... Уж лучше так чем совсем никак.
P.S. В iblock_element_edit.php создаются вкладки
Код
$tabControl = new CAdminForm($bCustomForm? "tabControl": "form_element_".$IBLOCK_ID, $aTabs);
(см. bitrix\modules\main\interface\admin_lib.php) ... поля
Теперь поля не отсортированы. И кнопки "Настроить" нет. Не хочется в iblock_element_edit_my.php добавлять механизм сортировки и отказываться от стандартной функции?
А еще можно просто добавить в начале файла (bitrix v12)
Код
$tabControl->SetShowSettings(true);
Правда у меня проблема =\
Захожу в настройки, редактирую, сохраняю - всё работает! Но стоит добавить еще один ИБ со своей формой редактирования, то там эти настройки тоже всплывают и не получается настроить поля отдельно для каждого ИБ со свой формой. Кто знает как это победить?
Суть проблемы: В файле "bitrix\modules\iblock\admin\iblock_element_edit.php" создается экземпляр класса CAdminForm, при этом если у ИБ своя форма редактирования, то имя задается просто "tabControl", затем когда вызывается метод "Show" у класса "CAdminForm" (в файле "bitrix\modules\main\interface\admin_lib.php" ) идет проверка на опцию
Результат: - получаем стандартную кнопку настроек; - настройки работают для каждого кастумного ИБ; - не затронуты системные файлы.
Недостатки: В файле "bitrix\modules\iblock\admin\iblock_element_edit.php" до вызова кастумного шаблона формы используется метод "$tabControl->ActiveTabParam()" который использует "$this->name", но вроде он используется для получения части ссылки для редиректа, что в свою очередь не должно пагубно сказаться на работе ИБ.
PS: поиском проблем с ссылкой редиректа не занимался
Бился, бился, но не осилил динамическое добавление таба на форму редактирования элемента инфоблока. Ткните пжлста носом! И так, и сяк, и в $tabControl в массиве tabs присутствует новая вкладка, но выводиться не хочет. Надо вынести на отдельный таб все свойства типа "привязка к элементу инфоблока PROPERTY_TYPE="E" и на этом отдельном табе сразу выводить свойства связанных элементов с возможностью их редактирования. Конечно, можно из админки создать таб, перекинуть нужные свойства, а дальше ковырять ее в файле пользовательской формы редактирования элемента, но хочется сделать таб, создающийся по-умолчанию, как дефолтные табы.
Вот с чем столкнулся: подключаю в пользовательской форме редактирования элемента инфоблока java скрипт (ловит нажатие на созданную мной кнопку в форме и запускает обработчик нажатия) - в публичке работает, из админки нет. Подскажи куда копать!