Здравствуйте. У меня тут возникла такая проблемка: написал функцию-обработчик результат заполнения веб-формы и поместил её по инструкции в файлик init.php. Все норм, все работает. Но нужно сделать универсально: т.е..скажем, если будет обновление битрикса, то этот файлик затрется. И функции соотвественно не будет уже никакой. Как мне поступить в данной ситуации, может кто знает? Там как-то вроде можно вообще обработчики добавлять в папки самих модулей, в шаблоны сайта. Читал с оф.документации: http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=3493 http://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=2916. Судя по всему, чтобы обновления не сносили обработчики лучше пользоваться RegisterModuleDependences. Но где имеено в битриксе, в каком файле или где вообще код регистрации и обработки писать? Сам я в битриксе недавно работаю, новичок ещё. Заранее спасибо)
Да я вот даже не знаю, как лучше. Мне просто на заводе дали такое задание: сделать веб-форму, в которой человек выбирает службу, которой хочет отправить письмо. И отправляется ей. Я сделал по вот по такому описанию, а именно: http://hamdeew.ru/page/veb-forma-otpravki-pochty-na-bitriks. Т.е. создал событие, почтовый шаблон (с переменными, в которые передаю информацию из обработчика), в init.php написал функцию обработки события добавления новой веб-формы, которая отсылает письмо в нужную службу. И это работает. Но, мне сказали на работе, что при обновлении битрикса файлик init.php будет тоже обновляться, затираться. И мой обработчик в итоге исчезнет при первом же обновлении Битрикса. Сказали сделать с учетом этого, и как сказали: "делай это напрямую в модулях". Пояснений больше не дали. Я вот и не пойму, как это сделать..Вот здесь: http://dev.1c-bitrix.ru/learning/course/?COURSE_ID=48&TYPE=Y#CH4745 в разделе "Система обновлений" нашел следующее: "Важные замечания по работе системы обновлений Система обновлений не изменяет публичную часть. Служебная область изменяется только в рамках необходимости, при этом существующие файлы и записи не изменяются (т.к. они уже могли быть изменены владельцем копии продукта под свои нужды). Ядро продукта может быть изменено системой обновлений сколь угодно сильно (при этом, конечно, обеспечивается обратная совместимость).". а так же: " Служебная область - все подкаталоги каталога /bitrix/, за исключением каталогов /bitrix/modules/ (т.е. ядра продукта) и /bitrix/updates/" init.php - получается, относится к служебной части. И по описанию не понятно, будет ли он затираться при обновлении или нет. я так понял, что битрикс его не трогает, поскольку считает, что этот файл я, как пользователь, уже использовал под свои нужды. Таким образом, мой вопросик: 1) при обновлении битрикса перезаписывается ли файл init.php (лежаший в \bitrix\php_interface\) ; 2) если регистрировать обработчик добавления новой веб-формы через RegisterModule, то где конкретно регистрацию эту прописывать и где код самого обработчика писать? Заранее спасибо
В битриксе формы почему-то убого организованы. Обычно формы сам делаю, и обрабатываю на этой же странице. Никаких вопросов с событиями и почтовыми шаблонами. Может это и не гуд, но битриксовскими формами пользоваться не хочется
Ни разу init.php не затирается. Так что пишите там свои обработчики с AddEvent... Хотя лучше не плодить код в init, а вынести в отдельный файл с понятным названием ,а в init его инклудить.
Понял. спасибо большое) А если регистрировать обработчики событий через RegisterModule, то как это делается: где и как регистрировать и где писать код самого обработчика?
Это вам в курс по написанию собственных модулей. Эта функция регит обработчик события при установке модуля. Обработчик будет работать пока для не будет вызвана Unregister...(обычно вызывается при удалении модуля).
У меня вот было на заводе вот такое вот задание: нужно реализовывать при заполнении веб-формы посылку письма. Это через обработчик события добавления новой формы реализовал, все норм. письма посылаются. Но там было изначально: что есть список из 5 служб, при выборе определенной посылается письмо конкретно ей: статично прописал в коде функции-обработчика, на какие адреса при соответствующем выборе посылать. А потом сказали, что типа если поменяются адреса служб, то админу будет сложно лезть в код и менять там эти адреса и нужно ему дать возможность как-то через админку их менять. У меня появилась такая идея: создать группу пользователей "Службы", добавить в неё эти 5 служб с их почтовыми адресами. И дать админу права доступа на редактирование данных этой группы пользователей. 1) как выдать админу права на редактирование данных именно этой группы (я только знаю, как давать права чтения, редактирования страничек сайта, инфоблоков, а тут не понял как..); 2) вот если я так занесу 5 служб в битрикс ка пользователей, то как потом в функции-обработчике, написанной в файле init.php получить эту информацию? Возможно в каком-то массиве или как-то из самой базы SQL-запросами вручную? Если из базы, то какая табличка за это отвечает, а то что-то не нашел.. 3) возможно у меня неправильный подход к решению поставленной передо мной задачи и есть другие более корректные способы решения, прошу подскажите, пожалуйста, какие ещё могут быть варианты решения. Заранее большое спасибо))))