{"id":16345460,"url":"https://github.com/unclechu/bitrix-advanced-form","last_synced_at":"2025-11-07T15:30:26.398Z","repository":{"id":12247772,"uuid":"14862182","full_name":"unclechu/bitrix-advanced-form","owner":"unclechu","description":"Advanced Form (Bitrix component)","archived":false,"fork":false,"pushed_at":"2014-10-29T04:27:43.000Z","size":232,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-27T22:24:43.228Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unclechu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-12-02T12:52:28.000Z","updated_at":"2017-10-31T13:19:51.000Z","dependencies_parsed_at":"2022-09-23T05:23:18.642Z","dependency_job_id":null,"html_url":"https://github.com/unclechu/bitrix-advanced-form","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unclechu%2Fbitrix-advanced-form","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unclechu%2Fbitrix-advanced-form/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unclechu%2Fbitrix-advanced-form/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unclechu%2Fbitrix-advanced-form/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unclechu","download_url":"https://codeload.github.com/unclechu/bitrix-advanced-form/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239533067,"owners_count":19654617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-11T00:31:53.997Z","updated_at":"2025-11-07T15:30:26.328Z","avatar_url":"https://github.com/unclechu.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"Битрикс-компонент «продвинутая форма»\n=====================================\n\nЭтот компонент работает с инфоблоками (рассматривается как замена модуля веб-форм). Поля формы берутся из свойств инфоблока и данные заполненной формы сохраняются в этот же инфоблок. Результаты формы так же отправляются на e-mail администратору и на e-mail, заполнившему форму (если имеется свойство с символьным кодом \"email\" и оно было заполнено). Шаблоны этих e-mail-ов хранятся как элементы другого инфоблока (см. инструкции ниже).\n\nУстановка\n=========\n\n1. [Скачиваем](https://github.com/unclechu/bitrix-advanced-form/archive/master.zip) и распаковываем содержимое в директорию /bitrix/components/custom/ от корня вашего сайта, где custom — это произвольное имя директории, для неофициальных компонентов Битрикса, можете создать директорию custom, если у вас таковой не имеется (что вполне вероятно), а можете создать директорию с другим именем и распаковать содержимое архива туда (но ни в коем случае ничего не кладите и не меняйте в директории /bitrix/components/bitrix/, почему этого делать не стоит — расскажет вам [документация Битрикс](http://dev.1c-bitrix.ru/docs/));\n2. Переименовываем распакованную директорию из архива «bitrix-advanced-form-master» в «advanced_form», а впрочем при желании можете оставить как есть, работать и так должно;\n3. По дальнейшей настройке см. ниже.\n\n«Быстрая» установка через терминал\n==================================\n\n    cd КОРЕНЬ_САЙТА \u0026\u0026 cd ./bitrix/components \u0026\u0026 mkdir custom \u0026\u0026 cd ./custom \u0026\u0026 git clone git://github.com/unclechu/bitrix-advanced-form.git advanced_form\n\nПредварительная настройка\n=========================\n\nВсего понадобится 2-а инфоблока:\n\n1. Для результатов формы;\n2. Для шаблонов E-Mail.\n\nРекомендую сразу создать отдельный тип инфоблоков с идентификатором (ID) \"forms\" специално под задачи формы.\n\nДалее создаём обязательный инфоблок для сохранения результатов формы (даже если вы не хотите сохранять результаты формы — он вам всё-равно понадобится, потому как поля формы — определяются свойствами этого инфоблока):\n\n1. Обязательно укажите символьный код для инфоблока (обратите внимание: символьные коды указывать нужно везде, где только увидите такую возможность, потому как компонент опирается всюду на эти символьные коды, а не на идентификаторы (ID) как обычно, поскольку такой способ более надёжен и гибок, и особенно удобен в задачах, которые реализует данный компонент);\n2. В поле «название» введите нужное вам название инфоблока, например ваше название будующей формы;\n3. Перейдите во вкладку «поля» и укажите там значение по умолчанию для поля «название» (не путать с предыдущим полем) для элементов инфоблока с результатами формы. По каким-то причинам это поле является обязательным к заполнению;\n4. В этой же вкладке укажите значение по умолчанию для поля «начало активности» — «текущие дата и время», чтобы отслеживать дату и время заполнения формы;\n5. Сразу перейдите во вкладку «доступ» и поставьте «для всех пользователей» — «чтение», иначе неавторизованный пользователь не сможет отправить данные формы;\n6. Переходим во вкладку «свойства» и начинаем наполнять будущую форму полями. Поддерживаемые типы полей смотрите ниже. Типы, которые не поддерживаются — игнорируются формой. Для каждого свойства нужно указывать символьный код. Если вам нужно иметь свойство, которое не попадёт в форму, то в начале его символьного кода должен быть префикс «nf_». Учитываются галочки «обязательное» для обязательных полей формы к заполнению. Если вам нужно отправлять пользователю e-mail уведомление о заполнении им формы, то должно быть текстовое поле с символьным кодом «email». Для полей типа TEXTAREA используется тип свойства «HTML/текст». Для типа «список» обязательно нужно указывать в значениях «XML_ID». Для типа «список» ещё не реализована поддержка чекбоксов, см. [TODO](./TODO.md);\n7. Сохраняем инфоблок, и на этом инфоблок для самой формы готов;\n\nПо желанию можно перейти в сам инфоблок и настроить отображение списка элементов, убрав оттуда лишние поля («название») и добавив некоторые опознавательные поля из формы. Можно перейти к добавлению нового элемента и там тоже зайти в «настройки» и поубирать всё лишнее, оставив единственную вкладку с полями:\n\n1. Название (которое убрать нельзя, т.к. оно является обязательным);\n2. Начало активности (чтобы видеть, когда была заполнена форма);\n3. И наконец сами поля формы.\n\nПри этом в этих настройках желательно ставить галочку «установить данные настройки по умолчанию для всех пользователей», потому как вряд ли кому-то понадобится отличное отображение (если понадобится — поменяют), а тем более стандартное.\n\nТеперь нужно создать инфоблок шаблонов e-mail писем, что является не обязательным, если нет нужды отправлять e-mail уведомления, — просто проигнорируйте дальнейшие инструкции и перейдите к «настройке компонента».\n\n1. Переходим к типу инфобоков «формы» и создаём новый инфоблок, желательно с символьным кодом: «email_templates» (можно указать и другой символьный код, но этот будет определяться по-умолчанию в настройках компонента);\n2. Устанавливаем название инфоблока, например: «Шаблоны E-Mail»;\n3. Перейдите во вкладку «доступ» и поставьте «для всех пользователей» — «чтение»;\n4. Во вкладке «поля» делаем поле «символьный код» обязательным с помощью галочки, а справа от него ставим галочку «проверять на уникальность»;\n5. Перейдите во вкладку «свойства» и укажите там 4-е обязательных свойства:\n    1. «От кого» (строка), символьный код: «from»;\n    2. «Кому» (строка), символьный код: «to»;\n    3. «Тема письма» (строка), символьный код: «subject»;\n    4. «Тело письма» (HTML/текст), символьный код: «body»;\n\n    Символьные коды должны быть именно такими, какими указаны в списке выше;\n6. Сохраняем инфоблок.\n\nМожно также настроить отображение списка элементов этого блока, убрав лишние и добавив что-нибудь из 4-ёх добавленных свойств, но определяющим на этот раз будет «название».\n\nПереходим к добавлению нового элемента в этом инфоблоке, заходим в настройки отображения. Удаляем всё возможное, все лишние вкладки кроме одной. На этой одной вкладке оставляем следующие поля:\n\n1. «Название»;\n2. «Символьный код»;\n3. «Детальное описание» (не обязательно, в нём можно оставлять вспомогательные комментарии, например список возможных хеш-тегов для автозамены);\n4. «От кого»;\n5. «Кому»;\n6. «Тема письма»;\n7. «Тело письма».\n\nВ зависимости от того, выберите вы тип «текст» или «HTML» для поля «тело письма», — будет зависеть тип отправляемого письма (Content-Type будет установлен в text/plain или text/html), данные полей будут соответствующим образом преобразованы.\n\nДалее приведён список хеш-тегов автозамены:\n\n1. #DOMAIN_NAME# — доменное имя сайта (например: domain.org);\n2. #SITE_NAME# — наименование сайта, берётся из настроек сайта («администрирование» → «настройки» → «настройка продукта» → «сайты» → «список сайтов» → ваш сайт, в настройках которого имеется поле «название веб-сайта»);\n3. #EMAIL_FROM# — адрес отправителя писем (устанавливается в настройках компонента);\n4. #ADMIN_EMAIL# — адрес администратора, которому отправляются уведомления (устанавливается в настройках компонента);\n5. #HIDDEN_COPY_ADMIN# — адрес для скрытой копии письма администратору (устанавливается в настройках компонента);\n6. #HIDDEN_COPY_USER# — адрес для скрытой копии письма заполнившему форму (устанавливается в настройках компонента);\n7. В остальном идут хеш-теги для полей формы следующего вида: #TITLE_code# — для названия поля, и #VALUE_code# — для значения поля, где «code» — символьный код поля (свойства инфоблока). ВНИМАНИЕ! Чувствительно к регистру! Если символьные коды полей были в нижнем регистре, то в хеш-тегах они указываются в нижнем регистре (что показано на примере с «code»).\n\nЧтобы было понятнее, — рассмотрим пример шаблона уведомления администратору. Будем предполагать что в инфоблоке формы у нас имеются следующие свойства:\n\n1. «Имя» (строка), символьный код: «name»;\n2. «E-Mail» (строка) символьный код: «email»;\n3. «Сообщение» (HTML/текст), символьный код: «message»;\n\nА теперь создаём новый шаблон (добавляем новый элемент в инфоблок шаблонов e-mail), заполняя поля:\n\n1. «Название» = «Уведомление администратору о заполнении формы»;\n2. «Символьный код» = «admin_email_template»;\n3. «Детальное описание» — сюда можно скопировать список доступных хеш-тегов (если вы вообще оставили это поле, т.к. оно не обязательное);\n4. «От кого» = «#EMAIL_FROM#»;\n5. «Кому» = «#ADMIN_EMAIL#»;\n6. «Тема письма» = «Некто #VALUE_name# заполнил форму»;\n7. «Тело письма»:\n\n        \u003ch1\u003e#SITE_NAME#\u003c/h1\u003e\n\n        \u003ch2\u003eДанные формы\u003c/h2\u003e\n\n        \u003cdl\u003e\n            \u003cdt\u003e#TITLE_name#\u003c/dt\u003e\n            \u003cdd\u003e#VALUE_name#\u003c/dd\u003e\n\n            \u003cdt\u003e#TITLE_email#\u003c/dt\u003e\n            \u003cdd\u003e#VALUE_email#\u003c/dd\u003e\n\n            \u003cdt\u003e#TITLE_message#\u003c/dt\u003e\n            \u003cdd\u003e#VALUE_message#\u003c/dd\u003e\n        \u003c/dl\u003e\n\n        \u003cp\u003eЭто письмо отправлено автоматически, отвечать на него не нужно. С вопросами обращаться по этому адресу: #ADMIN_EMAIL#\u003c/p\u003e\n\nНастройка компонента\n====================\n\n1. Добавляем компонент на выбранную вами страницу, на всякий случай сбросив кеш компонентов (компонент находится в разделе «служебные» под именем «продвинутая форма»);\n2. В разделе «инфоблок с результатами» выбираем инфоблок формы, можно снять галочку «сохранять результаты формы в инфоблок», если это не нужно, но сам инфоблок всё-равно нужно указывать (из него берутся поля формы);\n3. В разделе «уведомления на e-mail» указываем e-mail адреса (если e-mail уведомления не нужны, просто ничего в этом разделе не трогаем), — отправителя писем, администратора, скрытые копии (если нужно). Все e-mail-ы, в т.ч. и в форме могут быть двух типов: простой e-mail адрес (например: vasia@domain.ru), и e-mail с указанием имени (например: Василий Иванов \u0026lt;vasia@domain.ru\u0026gt;), также можно указывать по нескольку адресов через запятую (за исключением отправителя и e-mail-а из формы, если убрана соответствующая галочка). Ниже выбираем инфоблок шаблонов e-mail писем и сами шаблоны;\n4. В последнем разделе «дополнительные настройки» есть поле «уникальная „соль“ формы», — его лучше заполнять, хоть это и не обязательно. Обязательно в том случае, когда на одной странице находятся 2-е формы и более, тогда для каждой формы должна быть уникальная «соль», в которой могут быть совершенно произвольные символы (или например просто имя формы), в противном случае будут возникать конфликты форм при отправке данных;\n5. Всё готово к использованию, вам разве что остаётся применить соответствующие вашему сайту CSS-стили, или кастомизировать шаблон компонента при необходимости.\n\nПоддерживаемые типы полей\n=========================\n\n1. Строка;\n2. Число;\n3. Список;\n4. Текстовое поле;\n\nКнига жалоб и предложений\n=========================\n\nhttps://github.com/unclechu/bitrix-advanced-form/issues\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funclechu%2Fbitrix-advanced-form","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funclechu%2Fbitrix-advanced-form","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funclechu%2Fbitrix-advanced-form/lists"}