@Makesh111

Как получить список подключенных компонентов на странице?

Здравствуйте! Есть ли какой-нибудь способ в bitrix framework получить список подключенных на странице компонентов?
  • Вопрос задан
  • 308 просмотров
Пригласить эксперта
Ответы на вопрос 3
на панели есть кнопка компоненты, если в режиме правка на нее нажатть то получите что нужно
Ответ написан
Grayfox90
@Grayfox90
Пушистый дядь
В Bitrix Framework нет готового метода для получения списка подключенных на странице компонентов. Однако, вы можете попробовать реализовать это самостоятельно, используя обработчики событий и глобальную переменную.

Вот пример того, как это можно сделать:

1. Создайте файл init.php в папке /bitrix/php_interface/, если его еще нет.
2. В файле init.php добавьте следующий код:
// Объявление глобальной переменной
global $connectedComponents;
$connectedComponents = [];

// Функция-обработчик для события 'OnBeforeProlog'
function storeConnectedComponents(&$arFields) {
    global $connectedComponents;

    if (isset($arFields["COMPONENT_NAME"]) && isset($arFields["TEMPLATE_NAME"])) {
        $component = [
            'component' => $arFields["COMPONENT_NAME"],
            'template' => $arFields["TEMPLATE_NAME"],
            'params' => $arFields["PARAMETERS"],
        ];
        $connectedComponents[] = $component;
    }
}

// Регистрация обработчика события 'OnBeforeProlog'
AddEventHandler("main", "OnBeforeProlog", "storeConnectedComponents");

Этот код создает глобальную переменную $connectedComponents, которая будет хранить информацию о подключенных компонентах. Затем мы регистрируем обработчик события OnBeforeProlog, который будет вызываться перед выводом компонента на странице. Обработчик сохраняет информацию о компоненте в глобальной переменной $connectedComponents.

Теперь, когда вы захотите получить список подключенных компонентов на странице, вы можете обратиться к глобальной переменной $connectedComponents:
global $connectedComponents;
print_r($connectedComponents);

это может быть полезным временным решением для получения списка компонентов на странице.
Ответ написан
@4gotaboutjs
От bitrix не дождешься внятных методов
Решайте с помощью php

$files = get_included_files();
$files = array_filter($files, fn($f) => str_contains($f, '/components/'));
print_r($files);


https://www.php.net/manual/en/function.get-include...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы