Как реализовать избранные товары на сайте?

Здравствуйте!

Подскажите пожалуйста с помощью какого компонента можно реализовать избранное на сайте? Где-то писали, что можно реализовать с помощью Tickets. Дайте подсказку как связать товары и Tickets? Или есть ли какой-либо бесплатный аналогичный msFavorites компонент?

p.s покупать компонент msFavorites не могу, так как бюджет уже потрачен на Office и mSearch2.
Lord Voldemort
15 мая 2021, 10:21
modx.pro
209
0

Комментарии: 11

Павел Романов
15 мая 2021, 12:09
1
0
Можете для избранного использовать Compare (там внутри инструкция есть).
    Lord Voldemort
    15 мая 2021, 12:11
    1
    0
    Благодарю. Уже нашел такое решение
      Андрей
      15 мая 2021, 13:07
      0
      А какой смысл от избранного которое нигде не хранится(в сессии)?

      Имхо, проще выделить 1000р, и использовать удобное решение, чем подобные костыли. =)
        Lord Voldemort
        15 мая 2021, 13:10
        0
        Я же написал в вопросе, что не выделят бюджет. Уговаривать нет смысла, если шеф сказал нет. Я то сам не против использовать хорошо работающий компонент
          Александр Мельник
          15 мая 2021, 15:39
          0
          Разве интересно всегда и везде использовать готовые компоненты? В чем тогда смысл быть программистом?
      Николай Савин
      16 мая 2021, 08:40
      0
      Это очень простая задача — и отлично подходит для практики написания собственного компонента.
      Всего одна табличка в базе данных плюс взаимодействие с ней.
      Если хочешь могу подсказать логику реализации.
        Амина
        16 мая 2021, 11:42
        0
        Подскажите, пожалуйста
          Николай Савин
          16 мая 2021, 11:52
          +1
          Суть будет примерно такая.

          1. Нужно создать таблицу в базе данных. Поля user_id — число, session_id — строка, product_id — число
          2. Создать модель для этой таблицы, чтобы modx знал о ее существовании.
          3. Создать класс управления таблицей. Основные методы add(), remove(), getList(), может быть getCount()
          4. В каждом методе написать обращение к таблице и ее чтение, добавление записи, удаление записи.
          5. При записи в таблицу если пользователь авторизован — записывать его Id как идентификатор, если нет — то записывать session_id
          6. Подготовить js файл который по клику будет определять чего хочет пользователь и слать запрос на корневой адрес сайта
          7. Подготовить плагин на событие OnHandleRequest который будет слушать обращения JS файла и вызывать класс компонента и соответствующий метод.
            Николай Савин
            16 мая 2021, 11:54
            0
            Вообще если честно судя по списку ваших вопросов я вам вряд ли смогу помочь подобными алгоритмами.
            Больно уж много знать нужно о MODX
          Alexey
          16 мая 2021, 12:24
          0
          Помню, несколько лет назад реализовывал функционал избранного, но не через сессии, а через куки.

          То есть, при добавлении в избранное, идет проверка, авторизован ли пользователь на фронтенде. Если да, то id товара пишется в extended пользователя, если нет, то сажаем ему куку в браузер. Список айдишников просто через запятую, при добавлении, есесно, проверяем наличие этого айдишника в избранном, если есть, то удаляем из избранного и наоборот.

          Плюс этого варианта в отсутствии необходимости добавлять отдельную таблицу. Но какие-то подводные камни были… Вроде бы, связанные с разными контекстами
            Lord Voldemort
            17 мая 2021, 06:08
            0
            у меня контекст один. Идея была такая же, только проблема в реализации — я свой первый сниппет буквально два 3 назад написал)
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            11