Customize - uniqcle/Bitrix GitHub Wiki

Подключаем свои скрипты в init.php
use Bitrix\Main\EventManager;
EventManager::getInstance()->addEventHandler(
	'main',
	'OnEpilog',
	[StrahEvents::class, 'OnEpilog']
);

EventManager::getInstance()->addEventHandler(
	'main',
	'OnProlog',
	[StrahEvents::class, 'OnProlog']
);

class StrahEvents
{
	public static function OnProlog()
	{
		global $USER;
		$arJsConfig = array(
			'custom_start'=>array(
				'js'=>'/local/additional/main.js',
				'css'=>'/local/additional/main.css',
				'rel'=>array()
			)
		);
		foreach ($arJsConfig as $ext => $arExt) {
			\CJSCore::RegisterExt($ext, $arExt);
		}
		CUtil::InitJSCore(array('custom_start'));

	}


	public static function OnBeforePrologHandler()
	{
		CJSCore::Init(array('jquery2'));
	}

	public static function OnEpilog()
	{

	}

}
Через подключенные CSS и JS

local/additional/main.css

local/additional/main.js

/*#crm_scope_detail_c_deal__tab_quote{*/
/*    display: none !important;*/
/*}*/

/*Долг по компаниии: 1000 руб*/
:root {
    --black_red: rgba(254, 44, 49, 0.72);
}

.companyAlert {

    padding-top: 10px;
    padding-bottom: 10px;
    padding-left:10px;
    background-color: var(--black_red);
    color: white;
}
// Долг по компаниии: 1000 руб
//
BX.ready(function () {

    let url = window.location.href.split('/');
    let companyID = url[6];

    let urlCompany = "/crm\/company\/details\/" + companyID + "\/";

    // Если мы находимся в компании
    if ( urlCompany === window.location.pathname ) {

        let detailTabs = document.getElementById("company_" + companyID +"_details_tabs");

        if ( detailTabs ) {

            let fd = new FormData();
            fd.append('COMPANY', companyID);

            showAlertDiv( detailTabs );

            // $.ajax({
            //     url: 'get.php',
            //     type: 'post',
            //     data: fd,
            //     contentType: false,
            //     processData: false,
            //     success: function(response){
            //
            //         let showAlert = JSON.parse(response);
            //
            //         if ( showAlert === true ) {
            //
            //             showAlertDiv( detailTabs );
            //
            //         }
            //
            //     },
            // });

        }
    }

});

function showAlertDiv( detailTabs ) {

    var divAlert = document.createElement("div");
    var text = document.createTextNode("Долг по компаниии: 1000 руб");
    divAlert.appendChild(text);
    divAlert.className = "companyAlert";

    detailTabs.prepend(divAlert);

}
Через модификацию шаблона системных компонентов

Копируем компонент в local/templates/.default/components/bitrix/catalog.productcard.details/

Модификация только в данном случае только шаблона компонента.

1.Редактируем

/home/bitrix/www/local/templates/.default/components/bitrix/catalog.productcard.details/.default/template.php

2.Создаем

/home/bitrix/www/local/templates/.default/components/bitrix/catalog.productcard.details/.default/tabs/images.php

Модификация через result_modifier.php

1.Создаем файл result_modifier в нужном системном компоненте и добавляем вкладку

/bitrix/components/bitrix/crm.company.details/templates/.default/result_modifier.php

if ( is_array ( $arResult["TABS"] ) ) {

    $tab['id'] = 'company_history';
    $tab['name'] = "История компании";
    $tab['loader']['serviceUrl'] = "/local/components/itjet/history/lazyload.ajax.php?&sites1&sessid=".$_SESSION["fixed_session_id"];
    $tab['loader']['componentData']['template'] = "";
    $tab['loader']['componentData']['params'] = [
        "OWNER_ID"=> $arResult["ENTITY_ID"]
    ];

    $arr1 = array_slice($arResult["TABS"],0,1, true);
    array_push($arr1, $tab );
    $arr2 = array_slice($arResult["TABS"], 1, count($arResult["TABS"]) - 1, true) ;

    $arResult["TABS"] = array_merge( $arr1, $arr2 );

}
  1. Создаем компонент

/home/bitrix/www/local/components/itjet

local\components\itjet\history\lazy_load.ajax.php

<?php

define('NO_KEEP_STATISTIC', 'Y');
define('NO_AGENT_STATISTIC', 'Y');
define('NO_AGENT_CHECK', true);
define('PUBLIC_AJAX_MODE', true);
define('DisableEventsCheck', true);

$siteID = isset($_REQUEST['site']) ? substr(preg_replace('/[^a-z0-9_]/i', '', $_REQUEST['site']), 0, 2) : '';
if ($siteID !== '') define('SITE_ID', $siteID);

require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

if (!check_bitrix_sessid()) die();

$componentData = isset($_REQUEST['PARAMS']) && is_array($_REQUEST['PARAMS']) ? $_REQUEST['PARAMS'] : array();
$componentParams = isset($componentData['params']) && is_array($componentData['params']) ?
    $componentData['params'] : array();

$componentParams['MODE'] = "LIST";

global $APPLICATION;
Header('Content-Type: text/html; charset=' . LANG_CHARSET);
$APPLICATION->ShowAjaxHead();

$APPLICATION->IncludeComponent('itjet:history',
    'history',
    $componentParams,
    false,
    array('HIDE_ICONS' => 'Y')
);

completeLazyLoad();

function completeLazyLoad($message = '')
{
    require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php');
    die($message);
}

local\components\itjet\history\component.php

$this->IncludeComponentTemplate();

local\components\itjet\history\templates\history\

<h1>История компании</h1>
<h2>История компании</h2>
<h3>История компании</h3>
⚠️ **GitHub.com Fallback** ⚠️