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

web developer

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

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

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

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

    /div>
    —-
    Так?

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

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

  4. Добрый день!
    Возможно ли вывести в публичную часть кнопки для редактирования/удаления контента, выводимого из пользовательских полей разделов и подразделов инфоблока? При том, что вывод контента осуществляется напрямую без использования компонентов и шаблонов.
    Каким компонентом можно воспользоваться для вывода такой информации?

    1. Если речь про администратора и включенный режим правки, то да, вы можете взять пример из статьи и адаптировать его под свой код. Тогда кнопки появятся.
      А вот если вы хотите дать такую возможность для, ну скажем, авторизованного пользователя но не админа, то тут придется писать своё решение.

  5. Добрый день!
    Возможно ли вывести в публичную часть кнопку «добавить раздел»? Инфоблок НОВОСТИ.

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

Ваш адрес email не будет опубликован.

#SaveUkraine