Золотое правило разработки под Битрикс24 заключается в том, что в первую очередь разработчик должен найти способ, который не затронет стандартный функционал коробки.
Задача: на личной странице сотрудника добавить блок, в котором обозначена отметка о том, что сотрудник вакцинировался
Рассмотрим пример js инъекции в профиль пользователя Битрикс24.
BX.ready(function() {
//region получаем Instance слайдера
var currentWindow = top.window;
if (top.BX.SidePanel && top.BX.SidePanel.Instance && top.BX.SidePanel.Instance.getTopSlider())
{
currentWindow = top.BX.SidePanel.Instance.getTopSlider().getWindow();
//region подписываемся на событие, когда контент слайдера загружен.
BX.addCustomEvent(currentWindow, "SidePanel.Slider:onLoad", function (event) {
let sliderObject = event.getSlider();
//region ограничиваем код только для профлиля пользователя
if (sliderObject.contentClassName === 'bitrix24-profile-slider-content') {
let pageProfile = /\/company\/personal\/user\/(\d+)\//,
resURL = pageProfile.exec(sliderObject.url), // URL слайдера
userId = resURL[1], // получим ID пользователя
frameWindow = event.getSlider().getFrameWindow(); //объект слайдера
if (frameWindow) {
//получаем необходимый элемент DOM
let insertNode = frameWindow.document.querySelector('.intranet-user-profile-column-left');
//если элемент найден, производим js инъекцию
if (insertNode) {
insertNode.appendChild(BX.create('DIV', {html: "Я вакцинировался"}));
}
}
}
//endregion
});
}
//endregion
});