Добавить кнопки редактирования элементов в своем компоненте
Как в Битриксе добавить кнопки для редактирования элементов в собственном компоненте
Например, у нас есть свой компонент с шаблоном template.php:
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/** @var array $arResult */
foreach ($arResult['ITEMS'] as $arItem): ?>
<div>
<?= $arItem['NAME'] ?>
</div>
<?php endforeach; ?>
Для добавления режима редактирования используется метод CIBlock::GetPanelButtons, который возвращает массив с кнопками управления элементами инфоблока.
В классе class.php, после того, как получили элементы инфоблока, или в result_modifier.php шаблона добавляем следующий код:
<?php
foreach ($arResult['ITEMS'] as &$arItem) {
$arLinks = CIBlock::GetPanelButtons($arParams['IBLOCK_ID'], $arItem['ID']);
// кнопка редактирования
$arItem['EDIT_LINK'] = $arLinks['edit']['edit_element']['ACTION_URL'];
// кнопка удаления
$arItem['DELETE_LINK'] = $arLinks['edit']['delete_element']['ACTION_URL'];
}
Теперь внесем в файл шаблона template.php необходимые правки, чтобы появились кнопки редактирования.
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/** @var array $arResult */
foreach ($arResult['ITEMS'] as $arItem) :
$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'),
[
'CONFIRM' => GetMessage(
'CT_BNL_ELEMENT_DELETE_CONFIRM'
),
]
);
?>
<div id="<?= $this->GetEditAreaId($arItem['ID']) ?>">
<?= $arItem['NAME'] ?>
</div>
<?php endforeach; ?>
Не забывайте добавить атрибут id на DIV элемента. Именно его-то часто и забывают указать.
Оставьте комментарий
Если эта статья была полезной для вас, оставьте комментарий ниже или задайте интересующий Вас вопрос. Ваш опыт может помочь другим читателям!
Написать комментарий