У меня в детальной странице приснутствует кнопка подписки на товар, представленный компонентом bitrix:catalog.product.subscribe, расположенный в шаблоне компонента bitrix:catalog.element . Чтобы правильно работала кнопка в условиях кеширования в вызов компонента bitrix:catalog.element было принято решение добавить параметр
Как видно из кода для определения подписан ли товар я использовал сессию. Но возникла проблема, что когда теряется сессия то параметр SUBSCRIBED будет всегда N. Даже если пользователь на товар подписан, кнопка будет показывать, что не подписан. Я так понял надо как то подгружать из базы данные в случае если $_SESSION['SUBSCRIBE_PRODUCT'] пустой. Я посмотрел код компонента bitrix:catalog.product.subscribe но не нашел место где обновляется сессия. Помогите пожалуйста как правильно определить подписан ли пользователь на товар если сессия потеряна?
Код |
---|
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 ); |
С уважением, Сергей Дмитриев.