Bitrix эрмитаж, отредактировать нередактируемое.

Что делать, Постоянно бегать к программистам не вариант, можно конечно попробовать найти нужные области в папке /local/include/, благо по стандарту все лежит в одном месте, но это не удобно + пункты меню так не добавишь (для этого правда есть и другие инструменты).

Выход нашелся довольно простой и быстрый в реализации.

Весь лайфхак можно разбить на 2 этапа.

1) в init.php «ловим» событие построения админ панели в публичной части сайта и добавляем кнопку при помощи которой будем активировать режим редактирования шапки.

AddEventHandler("main", "OnPanelCreate", Array("HeaderEdit", "OnPanelCreateHandler"));
class HeaderEdit{
    // добавим кнопку в панель управления
    function OnPanelCreateHandler(){
        global $APPLICATION;
        if($_REQUEST['header_edit']!='y'||$_REQUEST['bitrix_include_areas']=='N'){
            $APPLICATION->AddPanelButton(array(
                "HREF"      => "?bitrix_include_areas=Y&header_edit=y", // ссылка на кнопке
                "SRC"       => "/local/include/tpl/img/header_edit.png", // картинка на кнопке
                "ALT"       => "Включить режим редактирования шапки",
                "MAIN_SORT" => 9000,
                "SORT"      => 100,
                "TYPE"      => "BIG",
                "ICON"      => "faq",
                "TEXT"      => "Включить режим
редактирования шапки"
            ));
        }elseif($_REQUEST['bitrix_include_areas']!='N'){
            $APPLICATION->AddPanelButton(array(
                "HREF"      => $APPLICATION->GetCurPage(false), // ссылка на кнопке
                "SRC"       => "/local/include/tpl/img/header_edit_a.png", // картинка на кнопке
                "ALT"       => "Выключить режим редактирования шапки",
                "MAIN_SORT" => 9000,
                "SORT"      => 100,
                "TYPE"      => "BIG",
                "ICON"      => "faq",
                "TEXT"      => "Выключить режим
редактирования шапки"
            ));
        }
    }
}

Двумя APIшными функциями мы строим кнопку либо активации режима, либо деактивации, если мы уже находимся в режиме редактирования шапки.

См. скриншот № 1.

2) В шаблон сайта нужно заложить блок который будет содержать все необходимые для редактирования области, он будет отображаться только в режиме правки шапки. По факту это просто Bootstrap сетка в которой свободно размещены включаемые области и компоненты, весь блок обрамлен условием, в котором считываются определенные $_GET запросы.

См. скриншот № 2.

Благодаря этому нехитрому коду, любой администратор сайта сможет отредактировать нужные ему данные. Есть конечно и минусы, к примеру компоненты так все же не перенастроишь. Но вывод можно допилить, к примеру разверстывать шапку таким образом, чтобы все удобно редактировалось и без дополнительного блока, но в мои задачи сейчас это не входило.

Оставить комментарий

Комментарии (2)

  1. Андрей 12.04.2017 Ответить
    1.Где находится папка init.php
    2.В шаблон сайта нужно заложить блок который будет содержать все необходимые для редактирования области - как это сделать?
  2. Дмитрий
    Дмитрий 13.04.2017 Ответить
    1.Где находится папка init.php - /bitrix/php_interface/init.php либо /local/php_interface/init.php
    2. - Если говорить про шапку сайта то она скорее всего находится в heder.php текущего шаблона. В этом файле где-нибудь ближе к концу надо продублировать вызовы того что сложно редактировать. Продублированные вызовы нужно обрамить в условие - "if($_REQUEST['header_edit']=='y'){тут ваш блок}".
    Но на самом деле лучше менять отображение шапки в режиме правки. И при помощи css разнести блоки так чтобы удобно было редактировать.