1. Главная страница » Компьютеры

Bitrix iblock element add form

Автор: | 16.12.2019

Компонент осуществляет вывод формы создания (редактирования) элемента указанного информационного блока. Компонент стандартный и входит в дистрибутив модуля.

В визуальном редакторе компонент расположен по пути: Контент > Добавление элементов > Форма добавления / редактирования.

Компонент относится к модулю Информационные блоки.

Секции настроек компонента:

Описание параметров

Поле Параметр Описание
Источник данных
Тип инфоблока IBLOCK_TYPE Указывается один из созданных в системе типов информационных блоков.
Инфоблок IBLOCK_ID Для выбранного типа инфоблоков указывается информационный блок, элементы которого необходимо создавать (редактировать).
Параметры компонента
Статус после сохранения STATUS_NEW Значение поля зависит от того в каком режиме используется инфоблок:

  • Обычный: с какой активностью создаются элементы (активный/неактивный).
  • В режиме документооборота: указывается статус, в который переводятся элементы при их создании/редактировании.
  • В режиме бизнес-процессов: устанавливается статус снять с публикации.
Страница со списком своих элементов LIST_URL Задается адрес страницы со списком доступных пользователю элементов. После обновления данных редирект происходит именно на эту страницу.
Использовать CAPTCHA USE_CAPTCHA [Y|N] При отмеченной опции будет выводиться изображение и поле ввода CAPTCHA в форме добавления элемента.
Сообщение об успешном сохранении USER_MESSAGE_EDIT Задается сообщение, которое выводится при успешном сохранении элемента.
Сообщение об успешном добавлении USER_MESSAGE_ADD Задается сообщение, которое выводится при успешном добавлении элемента.
Размер полей ввода DEFAULT_INPUT_SIZE Указывается размер полей ввода в форме создания/редактирования элемента.
Использовать настройки инфоблока для обработки изображений RESIZE_IMAGES [Y|N] При отмеченной функции элементы, добавленные через публичную часть будут преобразовываться согласно настройкам инфоблока.
Свойства инфоблока
Свойства, выводимые на редактирование PROPERTY_CODES Указываются поля и свойства инфоблока, которые выводятся в форме создания/редактирования элемента.
Свойства, обязательные для заполнения PROPERTY_CODES_REQUIRED Указываются обязательно заполняемые поля и свойства инфоблока в форме создания/редактирования элемента.
Читайте также:  Intel core 2 duo t6600 характеристики
Параметры доступа Группы пользователей, имеющие право на добавление/редактирование GROUPS Указываются группы пользователей, имеющие право на добавление/редактирование элементов инфоблока. Редактирование возможно для статуса STATUS Значение поля зависит от того в каком режиме используется инфоблок:

  • Обычный: в каком состоянии активности редактируются элементы (в любом — any или в неактивном — N).
  • В режиме документооборота: указываются статусы, находясь в которых элементы будут доступны для редактирования и удаления.
  • В режиме бизнес-процессов: бизнес-процессы аналогичны обычному инфоблоку.
Привязка к пользователю ELEMENT_ASSOC Задается привязка к пользователю:

  • создателю (CREATED_BY) — привязка по создателю: в дальнейшем пользователю будут показаны только созданные им элементы.
  • по свойству инфоблока —> (PROPERTY_ID) — привязка по свойству инфоблока. В этом случае доступен параметр ELEMENT_ASSOC_PROPERTY.
по свойству инфоблока —> ELEMENT_ASSOC_PROPERTY Указывается свойство, по которому выполняется привязка. Ограничить кол-во элементов для одного пользователя MAX_USER_ENTRIES Указывается максимальное количество элементов, которые может добавить пользователь. Ограничить кол-во рубрик, в которые можно добавлять элемент MAX_LEVELS Указывается максимальное количество разделов инфоблока, в которые пользователь может добавить один и тот же элемент. Разрешить добавление только на последний уровень рубрикатора LEVEL_LAST [Y|N] При отмеченной опции пользователям разрешено добавлять элементы только в последний раздел дерева разделов инфоблока. Максимальный размер загружаемых файлов, байт (0 — не ограничивать) MAX_FILE_SIZE Указывается максимальный размер загружаемых файлов. Если указано 0, то размер файлов не ограничен. Использовать визуальный редактор для редактирования текста анонса PREVIEW_TEXT_USE_HTML_EDITOR [Y|N] При отмеченной опции будет использоваться визуальный редактор для редактирования текста анонса. Использовать визуальный редактор для редактирования подробного текста DETAIL_TEXT_USE_HTML_EDITOR [Y|N] При отмеченной опции будет использоваться визуальный редактор для редактирования подробного текста. Управление адресами страниц Включить поддержку ЧПУ SEF_MODE [Y|N] При отмеченной опции будет включена поддержка ЧПУ.
Читайте также:  Asus rog poseidon geforce gtx 1080 ti

Если режим поддержки ЧПУ включен, то необходимо настроить следующие параметры:

Каталог ЧПУ (относительно корня сайта) SEF_FOLDER Каталог ЧПУ: путь до папки, с которой работает компонент. Этот путь может как совпадать с физическим путём, так и не совпадать.
Имена переменных VARIABLE_ALIASES Имена переменных для управления страницами.

SEF_FOLDER.

Собственные названия полей *поле_инфоблока* CUSTOM_TITLE_ Задаются названия полей инфоблока для отображения пользователям. Вместо указывается следующее:

  • NAME — наименование;
  • TAGS — теги;
  • DATE_ACTIVE_FROM — дата начала;
  • DATE_ACTIVE_TO — дата завершения;
  • IBLOCK_SECTION — раздел инфоблока;
  • PREVIEW_TEXT — текст анонса;
  • PREVIEW_PICTURE — картинка анонса;
  • DETAIL_TEXT — подробный текст;
  • DETAIL_PICTURE — подробная картинка.

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

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

В большинстве случаев, достаточно воcпользоваться стандартным компонентом iblock.element.add.form. Однако, данный компонент очень давно не обновляется. Назвать его гибким и тонко настраеваемым ни как нельзя. Достаточно часто, для создания формы приходиться писать свои костыли. Например: форму добавления элемента инфоблока через API Битрикс

Компонент iblock.element.add.form написан таким образом, что вы не сможете (не попотев изрядно и не используя js) как угодно переставлять поля ввода. Например сделать заполненеие текста анонса до ввода разделов. Или переставить чекбоксы свойств до ввода названия (хотя это глупо, но вы не сможете сделать такую глупость даже если захотите)

Расскажу как сделать форму через API. Абсолютным костылем данный способ не назвать, в любом случае задача будет решена. И у вас будет возможность оформлять форму как угодно.

Работать будем с методом CIBlockElement::Add — добавляет новый элемент информационного блока. Перед добавлением элемента вызываются обработчики события OnBeforeIBlockElementAdd, из которых можно изменить значения полей или отменить добавление элемента вернув сообщение об ошибке.

Создаем форму на произвольной странице сайта или в основном шаблоне

Для начала: имеем инфоблок "Тест", у которого созданы свойства "Строка", "Список", "Чекбокс", "Файл", "Привязка к разделам". ID этого инфоблока 12

Кстати: в стандартном компоненте не хватает некоторых свойств, например он не умеет выводить свойство привязка к раздел. Как это реализовать можете подсмотреть тут

Далее: Создаем в корне сайта страницу add_form_page.php с таким содержимым

Это наша форма, которую заполняет пользователь

Рядом создаем файл add_form_result.php, которому будет передаваться POST запрос и пользователю будет выдаваться сообщение о результате добавления. Содержимое файла:

Цитата
Сергей Манник пишет:
Добрый день. Благодарю за действительно понятные уроки по битрикс.
у меня вопрос к вашему уроку
"Самодельная форма добавления элемента на API Битрикс"
Собственно сам вопрос: как сделать вывод не по ID а по ЧПУ

спасибо за оперативный ответ. все работает.
И вопрос не в тему:

Когда планируете дальнейшие видео по созданию инфопортала?

Цитата
Сергей Манник написал:
подскажите ответ еще вот на такой вопрос.
руководство захотело добавлять новости в подробное описание не через textarea а через визуальный редактор такой же как и комментарий к записи. если хотя бы в общих чертах опишите как это реализовать буду признателен.

Цитата
Motocross Inua написал:
Здравствуйте.
Как вывести свойства из раздела инфоблока? То есть в инфоблоке "объявления" разделы — мото, экипировка. Для каждого раздела разные свойства. Как сделать чтоб при выборе раздела выводились свойства именно этого раздела? Спасибо

Цитата
Владислав Кузнецов написал:
P.S.: Я разобрался, вывел ошибки и решил их. Извиняюсь, если Вас отвлек.

Цитата
Дмитрий Гайчук пишет:
Здравствуйте, Михаил!
1) Подскажите как организована обработка событий формы стандартного компонента main.feedback?
2) какой путь будет более правильным: добавить нужную мне функциональность в стандартный обработчик или написать свой собственный обработчик так, как показано в этом уроке?

Цитата
Дмитрий Гайчук написал:
Цитата
Дмитрий Гайчук пишет:
Здравствуйте, Михаил!
1) Подскажите как организована обработка событий формы стандартного компонента main.feedback?
2) какой путь будет более правильным: добавить нужную мне функциональность в стандартный обработчик или написать свой собственный обработчик так, как показано в этом уроке?

Добрый день, Михаил. Конкретизирую вопрос. При кастомизиции компонента main.faadback скопировал шаблон с помощью команд меню ( не файловым менеджером), при этом файл component.php остался в папке с компонентами Битрикс. Таким образом, получилось, что форма находится в папке шаблона сайта, а обработчик событий формы остался в папке с компонентами Битрикс и пришлось изменять его там. Это нормальная ситуация или я что-то неправильно сделал?

пробовал скопировать component.php в свое пространство имен, туда же где и весь компонент, но переменная POST_FORM_ACTION_URI упорно указывает на component.php из ядра.

Значит нужно прописать путь к обработчику вручную и добавить в начало этого обработчика:

а дальше логику обработки события. Правильно?

Добрый день. Столкнулся с проблемой. Задача: есть три группы пользователей: администраторы, руководители и менеджеры. Менеджер должен редактировать только свой элемент инфоблока, руководители и администраторы должны редактировать элементы инфоблока всех менеджеров. В компоненте делаю проверку:

1 и 6 — это группы "администраторы" и "руководители" соответственно. Всё хорошо. Для них выводятся все элементы, для менеджера — только тот, где стоит "привязка к пользователю по свойству инфоблока". Но при редактировании элемента инфоблока через форму, это свойство перезаписывается на текущего пользователя, который редактирует элемент. Соответственно, если элемент отредактировал администратор или руководитель, для менеджера он становится недоступным.

Не подскажете, в какую сторону копать?

Разобрался. В компоненте надо закомментировать кусок

Цитата
Антон Шаповал написал:
Разобрался. В компоненте надо закомментировать кусок

Цитата
Desperial написал:
Добрый день.
Вопрос по уроку: а как быть с множественной передачей файлов? Скажем, хочу я сделать галерею, отправляю через файловый инпут 4 картинки, он [скрипт] мне в отладке их демонстрирует, но в инфоблоке они не появляются :С

На самом деле, кое что есть.

Сразу проясню, я немного не договорил: я подавал картинки в форму через инпут с атрибутом multiple. Проблема в том, что он создает массив $_FILES такого рода:

Добрый день. очередной затуп с формой. по Вашему руководству вывел и кастомизировал под себя все просто и чертовски удобно за это отдельное СПАСИБО.
как навесить на форму отправку по почтовому шаблону? и еще 1 вопрос он больше относиться к защите от спамеров ссылками:

есть код который просто вырезает ссылки из текста
$detail_value = $_REQUEST[‘description_detail’];
$detail_value = preg_replace(‘@((https?://)?([-w]+.[-w.]+)+w( d+)?(/([-w/_.]*(?S+)?)?)*)@’, », $detail_value);
$fields = array(
"DETAIL_TEXT" => $detail_value
);
но проблема в том что там как правило кроме ссылки 2-3 слова и весь раздел куда добавляются данные с формы превращается в помойку.

можно как то сделать проверку на наличие ссылок в тексте и если оные имеются просто не пропускать на запись а выводить какой нибудь текст.

Цитата
Сергей Манник написал:
Добрый день. очередной затуп с формой. по Вашему руководству вывел и кастомизировал под себя все просто и чертовски удобно за это отдельное СПАСИБО.
как навесить на форму отправку по почтовому шаблону? и еще 1 вопрос он больше относиться к защите от спамеров ссылками:

есть код который просто вырезает ссылки из текста
$detail_value = $_REQUEST[‘description_detail’];
$detail_value = preg_replace(‘@((https?://)?([-w]+.[-w.]+)+w( d+)?(/([-w/_.]*(?S+)?)?)*)@’, », $detail_value);
$fields = array(
"DETAIL_TEXT" => $detail_value
);
но проблема в том что там как правило кроме ссылки 2-3 слова и весь раздел куда добавляются данные с формы превращается в помойку.

можно как то сделать проверку на наличие ссылок в тексте и если оные имеются просто не пропускать на запись а выводить какой нибудь текст.

вроде придумал костыль как проверять ссылки. если у кого то есть идеи как улучшить всегда буду рад
как то так

$mystring = ‘abc xyzervev://googlwcwcwec.cwecom reverveververvevever rveervev’;
function fuckinghref($mystring)
<
$findme = array(‘http’, ‘//’, ‘.ru’, ‘.com’, ‘bz’, ‘net’, ‘.org’, ‘.info’, », », ‘href’);
$i = "0";
foreach ($findme as $findme_value) <
$pos = strpos($mystring, $findme_value);
if ($pos === false) <
> else <
$i = $i + 1;
>
>
return $i;
>
echo $mystring . " ";
if (fuckinghref($mystring) > "0" <
echo ". опять ссылки шлют!!";
>else <
echo "все норм";
>

как то так выглядит мой add_form_result.php если есть идеи по улучшению и защите от sql иньекций и прочей гадости буду рад услышать

SetPageProperty("ROBOTS", "noindex, nofollow");
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
?>

"0") || (fuckinghref($b) > "0") ) <
LocalRedirect($_SERVER[‘HTTP_REFERER’]);
>else<

if (!empty($_REQUEST[‘name’]) and !empty($_REQUEST[‘description_detail’]) ) <

//Погнали
$el = new CIBlockElement;
$iblock_ > $section_ > $section_ ]; //Разделы для добавления

//Свойства
$PROP = array();

$PROP[‘PERSONAL_YUR’] = $_POST[‘personal_yur’]; //Свойство (частное/юр лицо)
$PROP[‘NAMES’] = $_POST[‘names’]; //Свойство название
$PROP[‘PHONE’] = $_POST[‘phone’]; //Свойство телефон
$PROP[‘CITY’] = $_POST[‘city’]; //Свойство город
$PROP[‘FILE’] = $_FILES[‘file’]; //Свойство файл

//Основные поля элемента
$fields = array(
"DATE_CREATE" => date("d.m.Y H:i:s"), //Передаем дата создания
"CREATED_BY" => $GLOBALS[‘USER’]->GetID(), //Передаем ID пользователя кто добавляет
"IBLOCK_SECTION" => $section_id[$i], //ID разделов
"IBLOCK_ID" => $iblock_id, //ID информационного блока он 31-ый
"PROPERTY_VALUES" => $PROP, // Передаем массив значении для свойств
"NAME" => strip_tags($_REQUEST[‘name’]),
"ACTIVE" => "N", //поумолчанию делаем активным или ставим N для отключении поумолчанию
"PREVIEW_TEXT" => TruncateText((strip_tags($_REQUEST[‘description_detail’])), 250),// strip_tags($_REQUEST[‘description_detail’]), //Анонс
"PREVIEW_PICTURE" => $_FILES[‘image’], //изображение для анонса
"DETAIL_TEXT" => strip_tags($_REQUEST[‘description_detail’]),
"DETAIL_PICTURE" => $_FILES[‘image_detail’] //изображение для детальной страницы
);
/*
if (strpos($_REQUEST[‘description_detail’], ‘банкрот’) !== false) // именно через жесткое сравнение
<
echo ‘Найдено’;
> else <
echo ‘Не найдено’;
>
*/

//Результат в конце отработки
if ($ >Add($fields)) <
$rsParentSection = CIBlockSection::GetByID($section_id[$i][0]);
if ($arParentSection = $rsParentSection->GetNext()) <
LocalRedirect($arParentSection[‘SECTION_PAGE_URL’]);
>
>else <
echo ‘Произошел как-то косяк Попробуйте еще разок’;
>
>
else <
LocalRedirect($_SERVER[‘HTTP_REFERER’]);
>
>
?>

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

Компонент для "1С-Битрикс: Управление сайтом" на базе стандартного bitrix:iblock.element.add.form, позволяющий определять свойства, выводимые на редактирование, для элементов конкретных разделов инфоблока.

  • © 2019 GitHub , Inc.
  • Terms
  • Privacy
  • Security
  • Status
  • Help

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *