В итоге, погуглив и потратив на это день или два, таки получилось вывести контекстное меню с кнопками редактирования для элемента.
Опишу алгоритм, может кому пригодиться:
1) В файле result_modifier.php имеем след. код:
2) В template.php
3) В component_epilog.php
Хочется кинуть очередной камень, в огород документации bitrix, за недосказанность и отсутствие нужной информации.
Опишу алгоритм, может кому пригодиться:
1) В файле result_modifier.php имеем след. код:
| Код |
|---|
$arResult['ADVANTAGES_TOP_EDIT_AREAS'] = [];
// Собираем наши элементы
$rsElement = CIBlockElement::GetList(
$arOrder = array("SORT" => "ASC"),
$arFilter = array(
"ID" => $props['ADVANTAGES_TOP']['VALUE'],
"ACTIVE" => "Y"
),
false,
false,
$arSelectFields = array("ID", "IBLOCK_ID", "NAME", "PREVIEW_TEXT", "PROPERTY_ICON")
);
// Проходимся по элементам в цикле
while ($arElement = $rsElement->fetch()) {
// Получаем массив кнопок для элемента
$buttons = CIBlock::GetPanelButtons(
$arElement['IBLOCK_ID'],
$arElement['ID'],
0,
array("SECTION_BUTTONS" => false, "SESSID" => false)
);
// Сохраняем связь id элемента и его кнопок в массив
array_push($arResult['ADVANTAGES_TOP_EDIT_AREAS'], ['ID' => $arElement['ID'], 'BUTTONS' => $buttons]);
}
// Передаём данные в component_epilog.php
$cp->SetResultCacheKeys(array('ADVANTAGES_TOP_EDIT_AREAS')); |
2) В template.php
| Код |
|---|
<article id="<?=$this->GetEditAreaID($advantage['ID'])?>"> ... </article> |
3) В component_epilog.php
| Код |
|---|
foreach ($arResult['ADVANTAGES_TOP_EDIT_AREAS'] as $editArea) {
$APPLICATION->SetEditArea($this->GetEditAreaID($editArea['ID']), CIBlock::GetComponentMenu("configure", $editArea['BUTTONS']));
} |
Хочется кинуть очередной камень, в огород документации bitrix, за недосказанность и отсутствие нужной информации.