Приветствую всех! Есть компонент, в котором получаю количество элементов, это количество элементов нужно передать на вкладку, которая создается в result_modifier страницы, где используется компонент.
Проблема в том, что компонент подключается уже после создания вкладки.
Я пробовал:
1. Первая попытка была передачи через глобальную переменную. В компоненте результатов считаем количество, в глобальную укладываем и передаем. Не работает. Значение складывается в переменную уже после того, как вкладка создана. На вкладке всегда будет 0.
2. Вторая попытка была через передачу параметра в arResult. Вот так: $count_questions = isset($arResult['COUNT_QUESTIONS']) ? $arResult['COUNT_QUESTIONS'] : 0;. Ситуация такая же.
3. Была мысль обратиться к arResult['Questions'], не сработало. На странице нет доступа к нему.
4. Последний вариант пробовал с кешированием, он ниже.
Код:
Компонент:
$count_questions = count($processedQuestion);
$cache = \Bitrix\Main\Data\Cache::createInstance();
$cacheTime = 10; // Время жизни кэша (например, 1 час)
$cacheId = 'count_questions_faq_product'; // Уникальный идентификатор кэша
$cacheDir = '/form_faq_product/';
$count_questions = count($processedQuestion); // Ваш существующий код для подсчета вопросов
// Начинаем кэширование
if ($cache->startDataCache($cacheTime, $cacheId, $cacheDir)) {
$cache->endDataCache(['COUNT_QUESTIONS' => $count_questions]);
}
result_modifier.php (сюда надо передать):
$cache = \Bitrix\Main\Data\Cache::createInstance();
$cacheId = 'count_questions_faq_product'; // Используем тот же идентификатор кэша
$cacheDir = '/form_faq_product/';
if ($cache->initCache(10, $cacheId, $cacheDir)) {
$cachedData = $cache->getVars();
$count_questions = $cachedData['COUNT_QUESTIONS'];
} else {
$count_questions = 0; // Значение по умолчанию, если кэша нет
}
// Добавляем вкладку с количеством вопросов
$arResult['PROPERTIES']['TABS'][] = array(
'CODE' => 'FAQ',
'TITLE' => 'Вопросы о товаре ' . $count_questions, // Отображаем количество вопросов
'VALUE' => 'FAQ_FORM' // Временное значение
);
Значение, разумеется в компоненте есть. Это проверено. Но во вкладке всегда 0, т.к. не получаем значение.