Задать вопрос
@kimsasha

Где прописать вызов метода BX.SidePanel.Instance.bindAnchors?

Добрый день!

В документации https://dev.1c-bitrix.ru/api_help/js_lib/sidepanel... написано "Если требуется обрабатывать ссылки на всех страницах сайта, вызов BX.SidePanel.Instance.bindAnchors необходимо перенести в шаблон сайта."

Где писать сам вызов метода, если запрещено кастомизировать шаблон bitrix24?
  • Вопрос задан
  • 1531 просмотр
Подписаться 2 Простой Комментировать
Решения вопроса 1
gromdron
@gromdron Куратор тега Битрикс24
Работаю с Bitrix24
1) Подписываемся на событие OnEpilog модуля main.
Подробнее в документации: https://dev.1c-bitrix.ru/learning/course/index.php...

Почему onEpilog? Потому что основной код страницы уже выполнен, а буферизация еще не закончена.

2) На событии:
- Проверяем что это не Ajax запрос

$req = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
// $req->isAjaxRequest()


- Проверяем что страница не админка (будет определена константа ADMIN_SECTION и она будет true)

И если ок, то регистрируем и подключаем свою js-библиотеку и подключаем ее.
Подробнее о js-библиотеках: https://dev.1c-bitrix.ru/api_help/js_lib/my_extens...
3) В коде своей библиотеки регистрируем подписку, как вы указали
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
toorr2p
@toorr2p
https://github.com/Cleverscript
Почему то у меня при регистрации правил в расширении, в консоли вылетает 2 ошибки (хотя и слайдер открывается)

  1. slider-manager.js:786 BX.SitePanel: anchor rules were created in a different context. This might be a reason for a memory leak.
  2. Side Panel Wrapper: do not use an old toolbar.


(function () {
    BX.namespace('Sliderinfo');

    BX.Sliderinfo = {
        init: function () {
            BX.SidePanel.Instance.bindAnchors({
                rules: [
                    {
                        condition: ["/test/info/(\\d+)/"],
                        options: {
                            width: 980
                        },
                    }
                ]
            });
        }
    }

    BX.Sliderinfo.init();
})();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы