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 разнести блоки так чтобы удобно было редактировать.

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