1С-Битрикс Просмотренные товары при помощи $_COOKIE

В редакциях 1С-Битрикс постарше, например «Малый бизнес», есть стандартный компонент просмотренные товары. Рассмотрим ситуацию, когда у нас редакция «Стандарт», а ваш каталог выполнен через компонент новостей.

Как записать переменную в $_COOKIE на PHP

Вы уже знаете про глобальные массивы, и наверняка слышали про массив $_SERVER, если не знаете, обязательно почитайте. Не то чтобы это было тем же самым, но вам это может пригодится, узнаете ниже почему.

$_COOKIE хранится в вашем браузере, срок хранения и имя переменной вы определяете сами. Чаще всего используется для сохранения «выбранной цветовой схемы» или любых других настроек уникальных для каждого пользователя.

Узнать содержимое массива можно как обычно:

Вполне может быть, что у вас там ничего не будет. Давайте запишем уже наконец-то свою первую куки переменную:

В этот раз давайте укажем больше параметров

По порядку — имя переменной, значение, время жизни переменной, путь, домен.
Теперь важная особенность — путь мы записываем относительно корня сайта, чтобы сделать нашу переменную более мобильной, или я б даже сказал, глобальной. Она будет работать на всех страницах, и не будет записываться для какой-то конкретной страницы. Тут-то нам и пригодится глобальный массив СЕРВЕР — если вы не любите хардкодить (указывать динамические значения, статическими), то можно вытащить домен, а если нужен путь то и его (для нашей задачи не нужен).

Как записать просмотренные товары в куки 1С-Битрикс

Хватит теорий, займемся делом 🙂 Нам понадобится детальная страница новости, в нашей задачи это детальная страница товара. В коде детального шаблона есть $arResult[‘ID’] — он то нам и нужен.

Идея довольно простая — мы записываем максимум 4 товара в массив, при этом удаляем последний, а если переменная пустая — записываем ID. Сам массив, состоящий из ID, представляет собой строку, в котором идет перечисление через запятую. Но это не значит что нельзя записать массив:

Как вывести просмотренные товары записанные в COOKIE

Для начала прочитайте статью про то, как узнать список элементов. Покажу вам самый главный фрагмент кода, т.к. детальный шаблон и его свойства все равно у всех свои. К тому же если вы поняли о чем идет речь в статье 🙂 значит вы и сами сможете все реализовать:

Вы сейчас наверное смотрите на цикл в цикле и думаете — WTF? 🙂 Все дело в том, что массив он сортирует в порядке возрастания, а сортировка arOrder, не позволяет нормально отсортировать товары перед выводом.

Подобное решение писалось относительно давно и я уверен, его можно переписать и улучшить в несколько раз, но это уже другая история 🙂

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года.

Предоставляю услуги по созданию проектов на CMS 1С-Битрикс - сайты, шаблоны и компоненты с нуля.

Другие виды работ:
  • Доработка функционала на уже существующих проектах
  • Вёрстка макетов (HTML, CSS, JavaScript, jQuery, JADE, SASS, Gulp)
  • Скрипты на PHP и JS (jQuery)

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.

E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

3 комментария

  1. Пишу плагин на wp — надо запоминать в куки id записей custom post type (в моем случае product) Не подскажешь, как быть? голову сломал уже) Спасибо)

    1. id записей? я так понимаю нужно записать в виде строки, например через запятую, а потом преобразовывать строку в массив через функцию implode.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *