Как программно получить ссылки на изменение и удаление элемента в 1С-Битрикс

Как программно получить ссылки на изменение и удаление элемента в 1С-Битрикс

Как программно получить ссылки на изменение и удаление элемента в 1С-Битрикс

Когда вы пишете свой компонент или просто используете API для вывода элементов из базы, вам может потребоваться, чтобы при наведении на элемент у вас были доступны опции "Изменить элемент" и "Удалить элемент". Сделать это очень просто.

Достаточно в цикле, который выводит ваши элементы, добавить следующий код:

//получаем ссылки для редактирования и удаления элемента
$arButtons = CIBlock::GetPanelButtons(
	$arItem["IBLOCK_ID"],
	$arItem["ID"],
	0,
	array("SECTION_BUTTONS"=>false, "SESSID"=>false)
);
$arItem["EDIT_LINK"] = $arButtons["edit"]["edit_element"]["ACTION_URL"];
$arItem["DELETE_LINK"] = $arButtons["edit"]["delete_element"]["ACTION_URL"];

//добавляем действия (экшены) для управления элементом
$this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_EDIT"));
$this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BNL_ELEMENT_DELETE_CONFIRM')));

Затем на том блоке, в котором будет располагаться содержимое элемента, нужно будет добавить уникальный id для управления этим элементом:

	<p id="<?=$this->GetEditAreaId($arItem['ID']);?>">
		<!--содержимое элемента-->
	</p>

Вот и все. Теперь у вас при наведении курсора мыши на элемент инфоблока появились кнопки управления оным.

P.S. весь код выше предполагает, что элементы у вас будут названы $arItem. Если они у вас названы по-другому, просто замените название в коде на свое.


  • А что если при выводе списка элементов и разделов на одной странице будет совпадать id элемента и id раздела? В моём случае получился так, что первый выводимый DOM объект имеет 4 кнопки(2 изменить и 2 удалить соответственно), а другого совпадавшего который выводился ниже не отображается эти кнопки. :(
  • Здравствуйте! Не вижу никаких проблем при совпадении ID элемента и раздела. Ведь это разные сущности. Вам лишь нужно понимать, что вы обрабатываете: элемент или раздел. Для элемента вы прописываете параметры те, что указаны в статье: $arItem["IBLOCK_ID"], $arItem["ID"], // это ID элемента 0, // это ID раздела Если же это раздел, то нужно немного изменить параметры: $arItem["IBLOCK_ID"], 0, // это ID элемента $arItem["ID"], // это ID раздела Ну и следите за своим DOM-деревом. Порой при выводе может быть кавардак =)