Здравствуйте! Хотелось бы реализоватьь функцию "Прошлый раз Вы смотрели". Задание, понятно, не из простых, поэтому хочется услышать тех, кто подобное делал (техническую сторону). Позволяет ли "гибкость" БУСа пострадать над этим вопросом?
С одной стороны это очень хороший психологический прием, клиент думает "фигасе... меня еще и помнят" и ставит плюс в сторону нашего интернет-сервиса, с другой - сложность и вопрос окупаемости потраченого времени)) Что думаете?
2. Перед подключением компонента вывода списка просмотренных товаров из куков вытаскиваете сохраненные ранее значения и формируете по ним фильтр. http://dev.1c-bitrix.ru/api_help/main/reference/cmain/get_cookie.php Сгенерированный фильтр передаете подходящему стандартному компоненту. Если фильтр пустой, то и подключать компонент нет смысла (ну, или в зависимости от задачи). Результат компонента лучше не кэшировать. Абсолютно все значения просмотренных посетителем элементов сохранять не следует, хватит последних 5-10.
Следует иметь в виду, что значения, получаемые из куков, являются небезопасными, необходимо делать intval(), проверять знак, количество этих значений...
тоже делал через куки. хотя, в чем разница хранения данных в куках, а не в сессии? в сроке жизни и месте хранения данных или еще есть преимущества? формировал фильтр - массив из ID. непосредственно у меня остался нерешенным вопрос о порядке сортировки при выборке через CIBlockElement::GetList (чтобы вывести элементы в хронологии просмотра). я пошел по пути хранения ID, имени элемента вместе с DETAIL_PAGE_URL для того, чтобы не обращаться к CIBlockElement::GetList. конечно, теоретически можно какой-нибудь компонент в цикле, но думаю - вариант не из лучших. как в подобном случае поступить более оптимально?