Реализация модуля Magento который позволяет пользователям ставить "Like" товарам на Frontend. Выполнено во время прохождения стажировки в Go Top (апрель 2017)
- Рядом с изображением товара на страницах Category View, Product view отображается кнопка "Like" и число - количество "Лайков".
- При нажатии на кнопку "лайк" сохраняется в отдельную таблицу magedoc_product_like. В таблице храните customer_ip, customer_id, product_id, created_at.
- Общее кол-во лайков товара хранится в отдельной таблице magedoc_product_like_aggregate: product_id, store_id, like_count.
- При добавлении лайка идет проверка, что бы один и тот же пользователь (или гость с одного и того же IP) не мог "лайкнуть" один и тот де товар дважды. Гости с одного и того же IP могут лайкать товар не чаще раза в сутки. Если пользователь или гость не может добавить лайк, то кнопка добавления не активна. После добавления лайка кнопка становится не активной.
- Добавлен виджет отображения продуктов с наибольшим количеством лайков. Виджет настраивается через админку, можно выбрать категории по которым отображать лайки. Если текущая категория не выбрана в настройках виджета, то отображаются продукты с наибольшими лайками по всем категориям магазина.
- Добавлен грид для отображения лайков в админке. Поля: id записи, id магазина, название продукта, IP адрес покупателя, имя покупателя. Имя покупателя составное (Full Name). Если лайк ставил гость, то Full Name отображается Guest.
Для реализации проделано:
- Задана конфигурация модуля.
- Реализован sql_setup (при дальнейших изменениях добавил update).
- Реализованы Модели + Контроллер.
- Реализован вывод на frontend (layout updates). Добавлен блок в main product info block.
- Реализована возможность загрузки модели из БД по двум полям и более. Для этого переопределен метод _getLoadSelect класса Mage_Core_Model_Resource_Db_Abstract, принимающий в качестве параметра массив.
- Добавлен отдельный стиль для отображения лайков.
- Добавлен Observer, который добавляет количество лайков продуктов в колекцию. (Для отображения лайков в каталоге товаров).
- Для отображения лайков в админке реализован грид, добавлен пункт в меню. Добавлено к гриду составное поле из First name и Last Name каждого Customer, поставившего лайк. Если поля пустые, то отображается Guest.
- Реализован поиск по составному полю Full Name.
- Реализован базовый перевод виджета, грида, блока.