Выбрать страницу

В стандартную комплектацию CMS Prestashop входит модуль blockwishlist, который позволяет добавлять понравившиеся товары в свой список избранного. Судя по всему, он существует только для того, чтобы добавить возможность поделиться списком с кем-либо с помощью отправки его по e-mail. Никакого другого функционала модуль не даёт (кроме хранения своего списка и возможности его просмотра, разумеется). Логично было бы иметь возможность добавлять в корзину товар из своего списка (или весь список целиком), но это не предусмотрено. Исправим же это упущение!

Внутри Prestashop используется две возможности добавления товара в корзину – добавление с последующим переходом в корзину и добавление с помощью ajax, с возможностью остаться на исходной странице. Второй вариант мне кажется более подходящим, потому его я и буду использовать.

Открываем файл themes/ваша_тема/modules/blockwishlist/views/templates/front/managewishlist.tpl (если его не существует, просто скопируйте файл из стандартного шаблона), находим элемент с классом btn_action и добавляем ему в конец код кнопки:

Это стандартная кнопка, в которую мы обязательно указываем атрибут data-id-attribute, значением которого является номер “комбинации” товара, что в корзину добавлялся не основной товар, а именно та комбинация (цвета, размера и прочих параметров), которая была добавлена в избранное.
Должно получиться примерно так:

В принципе, этого достаточно – кнопка появится в нижней части товара (не забудьте добавить ей перевод) и будет добавлять его в корзину. Но, в зависимости от версии CMS, кнопка будет добавлено либо то количество товара, которое было сохранено в поле выше, либо вообще всегда 1. Чтобы это исправить, необходимо внести изменения в файл themes/ваша_тема/js/modules/blockcart/ajax-cart.js (если его нет, ищите файл в папке модулей). Необходимо изменить код обработчика клика на элемент с классом ajax_add_to_cart_button на:

В этом случае, в в качестве количества берётся значение, сохранённое в поле выше. Если вы изменили это значение, но не сохраняли и не обновляли страницу – будет применено введённое вами количество. В ином случае, количество будет равно единице. Данный код работает и в Prestashop 1.6.0.9.
Ну вот и всё. Осталось только добавить стили, если это необходимо – у кнопки есть класс add-to-cart-in-wl, который можно использовать для этих целей.