Вывод нескольких форм добавления/редактирования элемента на одной странице в Битрикс

Если поставить несколько компонентов формы добавления/редактирования элемента инфоблока на одну страницу — возникнут конфликты. В Битриксе это не предусмотрено. К примеру сообщение об успешном добавлении элемента передается компонентом в url и при отправки одной формы сообщение выведется на всех формах, находящихся на странице. Также возникнут и другие проблемы.

Несколько форм добавления/редактирования элемента инфоблока на одной странице в Битрикс

Решается это копированием компонента форма добавления /редактирования элемента инфоблока.

Создаем в папке bitrix → components папку с произвольным именем, например my. Это новое пространство имен.

Далее копируем папку с компонентом iblock.element.add.fom из  bitrix → components → bitrix в папку bitrix → components → my.
Теперь вызов компонента будет выглядеть несколько иначе, а именно строка

<?$APPLICATION->IncludeComponent("my:iblock.element.add.fom", "", Array(

где мы «bitrix» заменили на «my».

Теперь зайдем в сам компонент bitrix → components → my → iblock.element.add.form → component.php и исправим имя кнопки submit, которое стандартно называется iblock_submit. Заменим его на свое, например «my_submit». Всего получится 2 замены.

Сменим имя переменной, в которой методом GET компонент передает сообщение об успешной отправке, т.е. «strIMessage» меняем на наш вариант, например «successMessage». Получиться опять же 2 замены.

Если в форме добавления/редактирования элемента инфоблока будет использоваться капча, то меняем еще 2 имени: «captcha_word» и «captcha_sid», получится по одной замене.

Далее нужно зайти в шаблон bitrix → components → my → iblock.element.add.form → templates → .default → template.php и сделать еще несколько замен: «iblock_submit» на «my_submit» (1 замена). Если используется капча — «captcha_word» (1 замена) и «captcha_sid» (2 замены).

Теперь все будет работать корректно. Если на странице требуется более двух форм добавления/редактирования элемента инфоблока, то просто в папке my будет несколько компонентов, с разными именами папок, т.е. не iblock.element.add.form, а к примеру feedback, some_request, some_require и т.п. В каждом скопированном компоненте должны быть сделаны замены с уникальными названиями и при вызове компонентов не забыть вписать свои названия папок.

Похожие статьи

Статья оказалась полезной? Вырази благодарность - поделись в соцсетях

Отзывы : Один комментарий

  1. Это позволяет добавить элементы формы в ячейки таблицы для их форматирования, а также использовать изображения.

Комментирование отключено