Найти в Дзене
BadProger

Добавление товара или статьи в избранное для modx (и не только)

Оглавление

Буду краток. Если проблем с программированием нет,то все получится. Какие задачи мы сегодня рассмотрим и реализуем?

  • Добавление  товара  в избранное
  • Удаление товара из избранного
  • Вывод товара на отдельной странице

Для разработки данного решения мне понадобится js, php и банка пепси (кому как). 

Поехали!

1. HTML

Первое,что мы должны сделать - сверстать наш каркас,который и будет опорной точкой.Так, давайте сразу определимся с чем мы работаем. Работать будем на примере товара. Договорились? Вот и славно.

-2

Как-то так. Важный момент здесь - input с атрибутом name,у которого значение id. Почему? Да потому что в этом поле будет уникальный индетификатор товара,который будет отдаваться в  сессию.Что такое сессии будет рассмотрено ниже. Еще нужна кнопка, которая будет посылать запрос и добавлять товар в избранное.

2. CSS 

Нам же нужно отслеживать состояние клика? Вот и я о том же. Как же так, мы кликнули и ничего не видем. Хотя бы цвет изменился что ли. Вот для этого мы и добавим стили. Да и вообще, немного стилей для товара не повредит!

-3

3. Javascript

Наконец-то что-то серьезное подъехало! С помощью данного кода мы будем отправлять наш id продукта на контроллер demo-page.html (у вас может быть свой) с помощью POST запроса,который в свою очередь и будет проверять id продукта на вшиво.....наличия в массиве значений! В зависимости от состояния будет отправляться некое событие на удаление или добавление id ресурса в массив. Демонстрирую код ниже

-4

4. PHP

Так, id товара мы получили и чо теперь? А теперь, мы его должны записать в сессию, но для начала разобьем все на чанки и выведем продукт с помощью сниппета msProducts,который входит  в состав minishop2 . Теперь наш чанк выглядит так

-5

А вывод через сниппет выглядит вот так. Кстати, прошу заметить,что я использую файловые чанки. Кто использует в работе pdoTools,тот поймет. P.S. будет отдельное видео по нему

-6

Добавим еще товар для того,чтобы эмулировать реальный случай и заодно убедится,что можно добавлять в избранное любое количество товаров.

Сниппет на php выглядит следующим образом

-7

Далее нужно отредактировать чанк с товаром,чтобы после перезагрузки мы видели,что товар уже находится в избранном

-8

Финальные правки вносим на страницу вывода товара. Здесь мы вызываем наш сниппет,который будет ловить POST запросы. Внимание! Сниппет msProducts вызываем некэшированным,чтобы увидеть состояние товара. На этой же странице мы выводим все товары,которые находятся в избранном.По параметрам вызова msProducts можно почитать на официальном сайте, а сейчас мы в параметр resources передаем наши id товаров.

-9

В итоге должно получится что-то вроде этого.

-10

Подытожим

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