Пришел негативный отзыв о моем модуле в маркетплейс Битрикс. Содержание: "Не работает". Установил себе, действительно не работает. При проверке выяснилось, что отсутствуют библиотеки jquery. Но до определенной поры все работало. Библиотека jquery подключается в моем модуле из ядра методом CJSCore::Init(Array('jquery'));
Почему-то этот метод перестал работать как раньше. Проведя детальный анализ проблемы выяснил, что метод перестал работать с версии ядра 22.100.00, где библиотеки jquery были обновлены. В моем случае помогло подключение через CJSCore::Init(Array('jquery3')); Но, к сожалению, пока не удалось проверить работоспособность метода на старых версиях ядра Битрикс.
Для гарантированного результата подойдет подключение через cdn jquery или можно скачать библиотеки локально, подключив их через ядро. Для модуля это делается в файле include.php.
CJSCore::RegisterExt("module_js_lib", array(
"js" => "/bitrix/js/jquerylib.js",
"skip_core" => true
));
/* module_js_lib - произвольное название нашей библиотеки.
Этим кодом мы зарегистрировали зависимости.
Далее, в нужном месте кода нужно их подключить методом */
CUtil::InitJSCore(array('module_js_lib'));
Также можно зарегистрировать и подключить css библиотеки, языковые файлы, зависимости. Подробнее в официальной документации.
Если у вас несколько библиотек, то можно их зарегистрировать в цикле.
$arJsConfig = array(
'custom_main' => array(
'js' => '/bitrix/js/custom/main.js',
'css' => '/bitrix/js/custom/main.css',
'rel' => array(),
),
'custom_crm' => array(
'js' => '/bitrix/js/custom/crm.js',
'css' => '/bitrix/js/custom/crm.css',
'rel' => array(),
),
);
foreach ($arJsConfig as $ext => $arExt) {
\CJSCore::RegisterExt($ext, $arExt);
}
После регистрации в нужном месте кода(например, шаблон компонента) можно подключить их
/*в случае одной библиотеки */
CUtil::InitJSCore(array('custom_main'));
/*в случае двух и более */
CUtil::InitJSCore(array('custom_main', 'custom_crm'));