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 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

9 коментаря

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

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

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

    /div>
    —-
    Так?

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

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

Залишити коментар до Алексей Скасувати коментар