arrilot/bitrix-hermitage

此包已被弃用且不再维护。未建议替代包。

1.1.1 2018-03-22 17:07 UTC

This package is auto-updated.

Last update: 2023-01-29 03:34:22 UTC


README

Latest Stable Version Total Downloads Scrutinizer Quality Score

此包不再活跃维护

原因是我们不再使用 Bitrix 进行我们的项目。如果您对这个项目感兴趣并希望维护它 - 分支它并在本存储库中创建 Issue,以便我们将链接放在这里。

Bitrix Hermitage 工具

安装

composer require arrilot/bitrix-hermitage

使用

此包提供简单、便捷的 API 以通过 Hermitage(编辑模式)与 Bitrix 的实体交互

支持

  1. 添加、修改、删除信息块元素(包含在 Bitrix 中,但内置 API 过于复杂)
  2. 添加、修改、删除信息块分区(包含在 Bitrix 中,但内置 API 过于复杂)
  3. 修改、删除嗨加载块元素(Bitrix 中不存在)

按钮编辑和删除示例

// Без пакета
foreach($arResult["ARTICLES"] as $article) {
    $arButtons = CIBlock::GetPanelButtons(
        $article["IBLOCK_ID"],
        $article["ID"],
        0,
        array("SECTION_BUTTONS" => false, "SESSID" => false)
    );

    $article["EDIT_LINK"] = $arButtons["edit"]["edit_element"]["ACTION_URL"];
    $article["DELETE_LINK"] = $arButtons["edit"]["delete_element"]["ACTION_URL"];

    $areaId = 'iblock_element_' . $advice['ID'];
    $this->AddEditAction($areaId, $article['EDIT_LINK'], CIBlock::GetArrayByID($element["IBLOCK_ID"], "ELEMENT_EDIT"));
    $this->AddDeleteAction($areaId, $article['DELETE_LINK'], CIBlock::GetArrayByID($element["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => 'Вы уверены, что хотите удалить элемент?'));

    ?><div id="<?=$this->GetEditAreaID($areaId)?>"><?= $article['NAME'] ?></div><?
}

// с пакетом
use Arrilot\BitrixHermitage\Action;

foreach($arResult["ARTICLES"] as $article) {
    ?><div id="<?= Action::editAndDeleteIBlockElement($this, $article) ?>"><?= $article['NAME'] ?></div><?
}

与信息块分区和嗨加载块元素类似。

方法组

Action::editAndDeleteIBlockElement($template, $element);
Action::editIBlockElement($template, $element);
Action::deleteIBlockElement($template, $element, $confirm = 'Вы уверены, что хотите удалить элемент?');

Action::editAndDeleteIBlockSection($template, $section);
Action::editIBlockSection($template, $section);
Action::deleteIBlockSection($template, $section, $confirm = 'Вы уверены, что хотите удалить раздел?');

Action::editAndDeleteHLBlockElement($template, $element);
Action::editHLBlockElement($template, $element);
Action::deleteHLBlockElement($template, $element, $confirm = 'Вы уверены, что хотите удалить элемент?');

所有这些方法都返回一个字符串,需要将其插入到相应 HTML 标签的 id 中。

按钮添加示例

在 Hermitage 中实现的按钮添加方式不同。它们不需要指定特定的 HTML 块,而是直接绑定到整个组件。

// Без пакета
if($APPLICATION->GetShowIncludeAreas()) {
    $arButtons = CIBlock::GetPanelButtons($iblockId, 0, 0, [...]);
    $this->addIncludeAreaIcons(CIBlock::GetComponentMenu($APPLICATION->GetPublicShowMode(), $arButtons));
}

// С пакетом
\Arrilot\BitrixHermitage\Action::addForIBlock($this, $iblockId, [...]);
// В отличии от варианта выше, данный метод можно вызывать как в компоненте, так и в шаблоне. Он понимает и то, и другое в качестве первого параметра.

选项数组 [...] 完全对应于 CIBlock::GetPanelButtons 方法的 $arOptions 数组。例如,传递 'SECTION_BUTTONS' => false 可以禁用显示分区添加按钮,而传递 'CATALOG'=>true 可以启用与目录模块的工作。在最简单的情况下,甚至可以省略此参数。

$element$section 是什么?

$element$section 是数组(或实现 ArrayAccess 接口的对象)。对于信息块,它们应包含 IDIBLOCK_ID。对于嗨加载块,它们应包含 IDHLBLOCK_ID/HLBLOCK_TABLE_NAME。此外,对于信息块,您还可以直接传递元素或分区 ID 作为 $element$section。在这种情况下,将执行数据库查询,但它们将在编辑模式下执行。

注意:如果您在处理高负荷广告拦截器时使用 eloquent(来自 arrilot/bitrix-models),那么请将以下方法添加到模型中

public function getHlblockIdAttribute()
{
    return 1; // поменять на нужный идентификатор
}