1С-Битрикс — как добавить кнопки Изменить, Удалить, Добавить

Если вы используете компонент список новостей или какой-то свой собственный, вам могут понадобится кнопки управления элементом в публичной части.

Как добавить кнопки «Изменить элемент», «Добавить элемент», «Удалить элемент» в 1С-Битрикс

Для того чтобы добавить такие кнопки, вам нужно создать файл result_modifier.php или component_epilog.php и затем добавить экшены к вашим кнопкам.

<?
foreach($arResult["ITEMS"] as $arItem) {

	$arButtons = CIBlock::GetPanelButtons(
		$arItem["IBLOCK_ID"],
		$arItem["ID"],
		0,
		array("SECTION_BUTTONS"=>false, "SESSID"=>false)
	);
	//echo '<pre>', print_r($arButtons), '</pre>';
	$arItem["ADD_LINK"] = $arButtons["edit"]["add_element"]["ACTION_URL"];
	$arItem["EDIT_LINK"] = $arButtons["edit"]["edit_element"]["ACTION_URL"];
	$arItem["DELETE_LINK"] = $arButtons["edit"]["delete_element"]["ACTION_URL"];

	$arItem["ADD_LINK_TEXT"] = $arButtons["edit"]["add_element"]["TEXT"];
	$arItem["EDIT_LINK_TEXT"] = $arButtons["edit"]["edit_element"]["TEXT"];
	$arItem["DELETE_LINK_TEXT"] = $arButtons["edit"]["delete_element"]["TEXT"];

	$this->AddEditAction($arItem['ID'], $arItem['ADD_LINK'], $arItem["ADD_LINK_TEXT"]);
	$this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], $arItem["EDIT_LINK_TEXT"]);
	$this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], $arItem["DELETE_LINK_TEXT"], array("CONFIRM" => GetMessage('CT_BNL_ELEMENT_DELETE_CONFIRM')));
}
?>

Итак, разбираем AddEditAction — первый параметр айди элемента, второй ссылка на экшен, третий текст кнопки. Обратите внимание, что для удаление используется AddDeleteAction, где мы передаем четвертым параметром подтверждение через алерт браузера.

Чтобы всё это заработало, контейнеру нужно дать id:

<div id="<?=$this->GetEditAreaID($arItem['ID'])?>">
    <!-- контент блока -->
</div>

Самое главное, правильно передать ID элемента, и тогда всё у вас получится 🙂

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

- Создание сайтов на 1С-Битрикс любой сложности
- Вёрстка макетов Figma, Photoshop, Zeplin
- Поддержка проектов на Битриксе
- Разработка нового функционала для сайта
- Парсинг данных
- Выгрузка из файлов в формате XML, YML, XLS, XLSX, CSV, JSON
- Интеграция по API со сторонними сервисами
и многое другое

E-mail: dmitriyribka@gmail.com

6 комментария

  1. доброго здравия!
    я совсем с неинтересным вопросом, но не могу найти…
    подскажите..
    кнопка «подробнее» съехала на текст.
    как копать и где ковырять, чтоб ее подвинуть

    огромное спасибо, если ответите!

  2. Дмитрий, вы автор данной статьи про редактирование элементов в публичке?
    пытаюсь сделать, подскажите файл result_modifier я создаю в нужном компоненте вручную, и в него вставляю код, написанный в первом фрейме вашей статьи, там, где с кнопками ..
    Далее, в основном шаблоне оборачиваю стандартную там конструкцию в код
    —-
    div id=»GetEditAreaID($arItem[‘ID’])?>»>

    /div>
    —-
    Так?

  3. Мне кажется, что это не сработает. Если не будет элементов, то не выведится кнопка для добавления

    1. Вы правы. Этот код предназначен именно для элементов из массива $arResult[‘ITEMS’]

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

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