У меня в детальной странице приснутствует кнопка подписки на товар, представленный компонентом bitrix:catalog.product.subscribe, расположенный в шаблоне компонента bitrix:catalog.element . Чтобы правильно работала кнопка в условиях кеширования в вызов компонента bitrix:catalog.element было принято решение добавить параметр
| Код |
|---|
global $USER;
if ($USER->IsAuthorized() && array_key_exists($_REQUEST["ELEMENT_ID"], $_SESSION['SUBSCRIBE_PRODUCT']['LIST_PRODUCT_ID']))
{
$subscribed = 'Y';
} else {
$subscribed = 'N';
}
$APPLICATION->IncludeComponent("bitrix:catalog.element",
"main",
array(
...
'SUBSCRIBED' => $subscribed,
),
false
);
|
Как видно из кода для определения подписан ли товар я использовал сессию. Но возникла проблема, что когда теряется сессия то параметр SUBSCRIBED будет всегда N. Даже если пользователь на товар подписан, кнопка будет показывать, что не подписан. Я так понял надо как то подгружать из базы данные в случае если $_SESSION['SUBSCRIBE_PRODUCT'] пустой. Я посмотрел код компонента bitrix:catalog.product.subscribe но не нашел место где обновляется сессия. Помогите пожалуйста как правильно определить подписан ли пользователь на товар если сессия потеряна?