$APPLICATION->ShowHead();
CJSCore::Init();
$APPLICATION->IncludeComponent(
"bitrix:news",
"",
[
"AJAX_MODE" => "Y",
"AJAX_OPTION_ADDITIONAL" => "",
"AJAX_OPTION_HISTORY" => "Y",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "N",
// ... и другие параметры вызова компонента
],
false
);
Не работает AJAX расширение JS-библиотеки Bitrix (отсутствует
$arParams["AJAX_ID"]
). На сайте реализована многосайтовость. Русскоязычный сайт находится в корне, тогда как англоязычный в
/en.
Интересно то, что проблема проявляет себя только на хостинге. Еще интереснее, что AJAX НЕ работает только в том случае, если php-файл с вызовом комплексного компонента bitrix:news и включенным AJAX_MODE находится НЕ в папке русскоязычного сайта (
/), а в папке англоязычного сайта (
/en). Я пробовал переместить этот php-файл с вызовом комплексного компонента bitrix:news и включенным AJAX_MODE на уровень выше в папку русскоязычного сайта (
/), не изменяя его. AJAX работает.
Я сделал резервную копию и развернул ее на BitrixVM. В этом случае проблему повторить не могу - AJAX работает, а все ссылки, встреченные внутри компонента, преобразуются в AJAX-вызовы. На BitrixVM я могу повторить проблему только с включенным SEF_MODE.
Я обошел проблему тем, что настроил роутинг (в urlrewrite.php):
$arUrlRewrite = [
[
'CONDITION' => '#^/en/folder/#',
'PATH' => '/folder_en/index.php',
],
];
Как видите, физически теперь php-файл с вызовом комплексного компонента bitrix:news и включенным AJAX_MODE (
/folder_en/index.php) лежит не в
/en , а в корне (
/). Таким образом все работает!
Но проблема не решена. Может быть есть хотя бы предположения в какую сторону копать?