Как добавить свой пункт меню в Рабочей группе на портале
Дано:
меню рабочей группы
меню рабочей группы
Требуется: добавить туда какой-либо свой пункт.
Для упрощения задачи - будем добавлять наш пункт последним.
В нашем примере - это пункт "Трудозатраты", по нажатию на который мы должны перейти по адресу /timetrack/group/ID группы/
Решение:
Задача не такая тривиальная.как представляется на первый взгляд. Меню группы строится компонентом bitrix:socialnetwork.group в зависимости от настроек данной группы, сам компонент подключается внутри комплексного компонента bitrix:socialnetwork_group . Таким образом - чтобы поменять меню группы, надо кастомизировать два компонента - а это влечет за собой разрыв со всеми дальнейшими обновлениями "родных" компонентов Битрикс.
Поэтому решать будем иначе - перехватывая событие формирования страницы.
Код подвесим на событие OnAfterEpilog модуля main.
RegisterModuleDependences('main', "OnAfterEpilog", "mymodule", "MyClass", "addMenuLink", 1); |
Событие OnAfterEpilog не имеет параметров, но генерируется в тот момент, когда код страницы (включая все отложенные функции) уже сгенерирован.
Чтобы понять, что следует писать в нашу функцию, посмотрим этот код внимательно:
Очевидно, что нам нужно найти тег profile-menu-filter и добавить к нему дочерний элемент в виде нашего пункта меню.
Итак, код функции выглядит следующим образом:
Подключение JQuery
начиная с 11 версии происходит таким образом:
CJSCore::Init("jquery"); |
Выход:
написать еще одну функцию, всего из одной строки - подключения JQuery, и подвесить её на событие OnBeforeProlog
Код подключения события:
RegisterModuleDependences('main', "OnBeforeProlog", "mymodule", "MyClass", "initLib", 1); |
function initLib() { CJSCore::Init("jquery"); } |