Меню

Компонент добавления элемента в инфоблок, с отправкой письма о добавлении и AJAX.

RSS
Компонент добавления элемента в инфоблок, с отправкой письма о добавлении и AJAX., Битрикс компонент для реализации формы добавления элемента инфоблока
 
Сделан по быстрому, в качестве базовой заготовки для дальнейшего развития.
Развиваться будет, в полноценный компонент, в рамках видеокурса "Разработка доски объявлений на Битрикс" https://bxstore.ru/

Пока, можно использовать как форму обратной связи, с записью в инфоблок и отправкой письма.

Скачать: https://camouf.ru/upload/fo_all/feedback.form.element.zip

На данный момент умеет:
- Выводить, на заполнение,  свойства инфоблока. Только не множественные.
- Загружать файлы в свойство "Файл". Использует штатный компонент main.file.input (dragn_n_drop).
- Защита, от совсем простых ботов (проверка скрытого поля на заполнение)
- Поддерживает AJAX
- Отправляет письмо о добавлении элемента
- Все параметры управляемые (картинка 1)
- Шаблон маскимально простой (картинка 2)
- Легко дорабатывается, управляется и расширяется.

Письма отправляет обычной функцией php-mail, но в файле component.php есть закомментированый участок
(картинка 3):
Можно использовать штатный метод Битрикс Event::send - который передаст поля в штатное же почтовое событие FEEDBACK_FORM

Спустя какое-то время после написании заметки, сделан видеокурс по созданию доски объявлений. В течении трех серий видеокурса, рассматриваю как сделать компонент на базе способов и методов описанных в заметке.

Кроме того, рассмотрен вариант использования D7 методов. Сам компонент используется и для добавления элемента инфоблока и для редактирования.
https://bazarow.ru/video/video_new/seazon_2_2024/add_edit_form_2/
Изменено: Михаил Базаров - 05.05.2024 19:09:58
 
Что бы добавить в форму множественное свойство с типом файл.
Создаем массив со свойствами файлов, методом CFile::MakeFileArray и передаем в $PROP["MORE_PHOTO"] (в моем случае, свойство с доп картинками)
Код
$arMorePhoto["VALUE"];
$i = 0;    
foreach ($_POST["MORE_PHOTO"] as $morePhoto) {        
      $arMorePhoto['n'.$i] = array("VALUE"=>CFile::MakeFileArray($morePhoto));        
      $i++;
}
$PROP["MORE_PHOTO"] = $arMorePhoto;
Изменено: Михаил Базаров - 21.06.2021 14:32:04
 
Здравствуйте, подскажите, как подключить эти файлы? Куда нужно добавить их?
 
Цитата
Мария написал:
Здравствуйте, подскажите, как подключить эти файлы? Куда нужно добавить их?

Нужно закинуть файлы в свое пространство имен компонентов, например "/local/components/MY_SPASE/" и вызвать компонент в нужном месте сайта - ровно так же как вызываются штатные компоненты битрикс
 
Михаил, добрый день.
Релевантнее места чем тут спрсоить не нашел)
bitrix:main.file.input можно как-то подружить с element.add.form? У меня есть идеи как получать айди файлов и передовать их в элемент, но я не понимаю как при удалении элемента также удалять изображения, если сделать не учитывая этот нюанс - боюсь, рано или поздно сайт превратится в свалку неиспользованных изображений)
Так же мне интересно, возможно ли с помощью него получать изображения из свойства?
Условно опубликована запись, в галерее 3 изображения загруженные с помощью bitrix:main.file.input, человек решил отредактировать свою запись, удалить 1 изображение и добавить новое. Он это умеет?
Буду крайне признателен за ответ, компонент не то, чтобы популярен и думаю у вас достаточно опыта работы с ним, чтобы дать мне подсказки)
 
Да, main.file.input это тоже самое что и простой input type=file.
Просто выводите его в нужном месте шаблона компонента и передаете файлы в обработку.
Изменено: Михаил Базаров - 15.11.2022 11:22:59
 
Цитата
написал:
Да, main.file.input это тоже самое что и простой input type=file.
Просто выводите его в нужном месте шаблона компонента и передаете файлы в обработку.
Не могу сообразить, как в штатном element.add.form добавить изображение к элементу с помощью main.file.input :cry:
Помогите пожалуйста, Михаил.
Не хочу угрожать, но если вы мне не поможете - я заплачу, у меня уже все ссылки в гугле фиолетовые
Я получаю ID изображений, но я не понимаю где в компоненте обрабатываются файлы, как скормить эти ID форме при добавлении, чтобы изображения оказались в свойстве типа "файл".
Изменено: Михаил Базаров - 04.12.2022 17:53:20
 
Зная ID файла можно получить путь к нему

Код
$rsFile = CFile::GetByID('ID ФАЙЛА');
print_r($rsFile);

В $rsFile будут все данные о нем, включая путь, дату, название и так далее.
Сохранить можно через
Код
$arMorePhoto["VALUE"];
    $i = 0;
    foreach ($_POST["NAME ВАШЕГО  main.file.input"] as $morePhoto) {
        $arMorePhoto['n'.$i] = array("VALUE"=>CFile::MakeFileArray($morePhoto));
        $i++;
    }
$PROP["MORE_PHOTO"] = $arMorePhoto;
Изменено: Михаил Базаров - 04.12.2022 17:58:50
 
Не уходят изображения с помощью
Код
$arMorePhoto["VALUE"];    $i = 0;
    foreach ($_POST["TEST_NAME_INPUT"] as $morePhoto) {
        $arMorePhoto['n'.$i] = array("VALUE"=>CFile::MakeFileArray($morePhoto));
        $i++;
    }
$PROP["MORE_PHOTO"] = $arMorePhoto;
при сабмите формы :(
Код свойства - MORE_PHOTO
Вызов формы
Код
<?$APPLICATION->IncludeComponent("bitrix:main.file.input", "drag_n_drop",
    array(
        "INPUT_NAME"=>"TEST_NAME_INPUT",
        "MULTIPLE"=>"Y",
        "MODULE_ID"=>"iblock",
        "MAX_FILE_SIZE"=>"",
        "ALLOW_UPLOAD"=>"A",
        "ALLOW_UPLOAD_EXT"=>""
    ),
    false
);
?>
Ваш код - внутри темплейта, после формы.
 
Вот так

В template.php
Код
$APPLICATION->IncludeComponent("bitrix:main.file.input", "dragn_n_drop", Array(
   "INPUT_NAME" => 'MORE_PHOTO',
   "MULTIPLE" => "Y",
   "MODULE_ID" => "main",
   "MAX_FILE_SIZE" => "",
   "ALLOW_UPLOAD" => "A",
   "ALLOW_UPLOAD_EXT" => ""
),
false
); 

В component.php
Код
if ((!empty($_REQUEST['NAME'])) && (!empty($_REQUEST['sessid'])) && (empty($_REQUEST['USER']))) {

    $el = new CIBlockElement;
    $section_id = false;
    $sendFields = array();
    foreach ($arResult['PROPERTY_DATAS'] as $sendProps) {
        $sendFields[$sendProps['CODE']] = strip_tags($_POST[$sendProps['CODE']]);
    }


    $arMorePhoto["VALUE"];
    $i = 0;
    foreach ($_POST["MORE_PHOTO"] as $morePhoto) {
        $arMorePhoto['n'.$i] = array("VALUE"=>CFile::MakeFileArray($morePhoto));
        $i++;
    }
    $PROP["MORE_PHOTO"] = $arMorePhoto;

    $fields = array(
        "IBLOCK_ID" => $arParams['IBLOCK_ID'],
        "PROPERTY_VALUES" => $sendFields,
        "NAME" => strip_tags($_REQUEST['NAME']),
        "PROPERTY_VALUES" => $PROP, 
    );

    $ID = $el->Add($fields));
} 
Изменено: Михаил Базаров - 04.12.2022 18:28:03
 
Добрый вечер Михаил !
Как отправить множественное свойство ФАЙЛ на почту, после создания элемента инфоблока ?
Какой код необходим прописать в init.php ?
 
Сейчас под рукой ни чего похожего нет. Но достаточно передать массив всех файлов через CFile::GetFileArray
И лучше всего не создавать лишнее в init.php - достаточно вызвать CEvent::Send прямо в компоненте
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Bst

Блог-note: заметки разработчика

E-mail вместо логина при регистрации и оформлении заказа в 1C-Битрикс

Задача: при регистрации нового пользователя и оформлении заказа нужно убрать поле Логин и использовать электронную почту...

Заполнить картинки разделов каталога из картинок товаров

Задача: в каталоге, разделы и подразделы выводятся в виде плитки над товарами, с картинками разделов. Так как разделов и...

Пошагово получить информацию о заказах и сохранить как Excel (xls)

Задача: Нужно получить информацию о заказах с возможностью указания даты создания "от"" и "до" ...

CRM Битрикс-24 на веб-окружении под Ubuntu 24.04, c поддержкой PUSH и многосайтовости

Задача: Так как с 30 июня 2024 года операционная система CentOS-7 полностью снята с поддержки и не будет получать обновл...

Установить цену товара из свойства инфоблока

На одном из проектов, нужно было единоразово заполнить цены товаров из свойства инфоблока. Сделать это можно через API, ...

Автоматический повтор заказа на D7 со списанием с внутреннего счета

На сайте товары и услуги доступны по подписке, пользователи пополняют внутренний счёт, после чего происходит автоматичес...

Правильное подключение стилей и скриптов в Битрикс

Есть несколько способов подключения файлов стилей и скриптов, при верстке шаблонов в системе управления 1С-Битрикс. Если...

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

Если нужно в карточке товара или новости, вывести структуру разделов в котором находится элемент. С одной стороны, это у...

Выбор основного раздела для элемента инфоблока в 1С-Битрикс

Проблема: при привязке элемента инфоблока к нескольким разделам возникают дубли его детальной страницы, в зависимости от...