Как реализовать избранные товары на сайте?
Здравствуйте!
Подскажите пожалуйста с помощью какого компонента можно реализовать избранное на сайте? Где-то писали, что можно реализовать с помощью Tickets. Дайте подсказку как связать товары и Tickets? Или есть ли какой-либо бесплатный аналогичный msFavorites компонент?
p.s покупать компонент msFavorites не могу, так как бюджет уже потрачен на Office и mSearch2.
Подскажите пожалуйста с помощью какого компонента можно реализовать избранное на сайте? Где-то писали, что можно реализовать с помощью Tickets. Дайте подсказку как связать товары и Tickets? Или есть ли какой-либо бесплатный аналогичный msFavorites компонент?
p.s покупать компонент msFavorites не могу, так как бюджет уже потрачен на Office и mSearch2.
Комментарии: 11
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Имхо, проще выделить 1000р, и использовать удобное решение, чем подобные костыли. =)
Всего одна табличка в базе данных плюс взаимодействие с ней.
Если хочешь могу подсказать логику реализации.
1. Нужно создать таблицу в базе данных. Поля user_id — число, session_id — строка, product_id — число
2. Создать модель для этой таблицы, чтобы modx знал о ее существовании.
3. Создать класс управления таблицей. Основные методы add(), remove(), getList(), может быть getCount()
4. В каждом методе написать обращение к таблице и ее чтение, добавление записи, удаление записи.
5. При записи в таблицу если пользователь авторизован — записывать его Id как идентификатор, если нет — то записывать session_id
6. Подготовить js файл который по клику будет определять чего хочет пользователь и слать запрос на корневой адрес сайта
7. Подготовить плагин на событие OnHandleRequest который будет слушать обращения JS файла и вызывать класс компонента и соответствующий метод.
Больно уж много знать нужно о MODX
То есть, при добавлении в избранное, идет проверка, авторизован ли пользователь на фронтенде. Если да, то id товара пишется в extended пользователя, если нет, то сажаем ему куку в браузер. Список айдишников просто через запятую, при добавлении, есесно, проверяем наличие этого айдишника в избранном, если есть, то удаляем из избранного и наоборот.
Плюс этого варианта в отсутствии необходимости добавлять отдельную таблицу. Но какие-то подводные камни были… Вроде бы, связанные с разными контекстами