Автор Тема: Сообщение с подтверждением для пользователя при добавлении товара из категории  (Прочитано 384 раз)

19 Февраль 2020, 18:39:44
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем привет. Может кто знает как такое можно реализовать?
Я использую presta 1.6.1.6. Хочу немного изменить Front для клиента.
Мне нужно когда пользователь нажимает на странице продукта кнопку "Добавить в корзину" (продукт из определенной категории например с Id=31), перед тем как добавить сам продукт в корзину появляется окно (Вы точно хотите добавить данный товар в корзину) да/нет. Если да - то добавляем, нет - то просто закрываем данное окно.
Спасибо всем заранее. Хорошего дня!
19 Февраль 2020, 20:08:57
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1807
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В файле ajax-cart.js
//for product page 'add' button...
if ($('.cart_block').length) {
$(document).off('click', '#add_to_cart button').on('click', '#add_to_cart button', function(e){
e.preventDefault();
                // вот тут можно добавить условие показа окна
                if(category == 31)
                    alert("Вы точно хотите добавить данный товар в корзину");
ajaxCart.add($('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null);
});
}
20 Февраль 2020, 13:19:08
Ответ #2
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Mr.Sen спасибо огромное за подсказку!
Место вставки понял. Но если делаю так if(category == 31) то ничего не происходит.
Пробовал вместо /*category*/ поставить переменную id_product - тогда работает с одним продуктом.
А как сделать именно с категорией?
-----------------------------------------------
И у меня еще магазин на трех языках. Я понимаю, что в файле js этого не сделать, нужно работать с tpl. Только не знаю как это модальное окно связать с шаблоном product.tpl.
Заранее благодарен. Спасибо!

20 Февраль 2020, 16:25:20
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1807
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В tpl нужно определять id категории
{foreach from=Product::getProductCategoriesFull(Tools::getValue('id_product')) item=category}
    {if $category.id_category == 31}
        {addJsDef showAlert=true}
        // тут же можно переменную для вывода текста с переводами
    {else}
        {addJsDef showAlert=false}
    {/if}
{/foreach}
и в ajax-cart.js
if(showAlert)
    alert("Вы точно хотите добавить данный товар в корзину");
20 Февраль 2020, 18:15:25
Ответ #4
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В tpl сделал даже проверку.Все определяет. Спасибо. А вот на событие нажатие "Добавить в корзину" не реагирует. Просто добавляет товар. Никаких сообщений.
Уже пробовал и так и сяк.
Вот код
--------------------------------js
//for product page 'add' button...
if ($('.cart_block').length) {
$(document).off('click', '#add_to_cart button').on('click', '#add_to_cart button', function(e){
e.preventDefault();
if(showAlert) {
    alert("Вы точно хотите добавить данный товар в корзину");
} else {
ajaxCart.add($('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null);
}
});
}
---------------------------------------------------------------------------------------------tpl
{foreach from=Product::getProductCategoriesFull(Tools::getValue('id_product')) item=category}
    {if $category.id_category == 31}
<li>4539999996</li>
        {addJsDef showAlert=true}
       
    {else}
{addJsDef showAlert=false}

    {/if}
{/foreach}
--------------------------------------------------------------------------------------------------
Спасибо за помощь!
20 Февраль 2020, 20:01:35
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 1807
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Консоль отладки в браузере откройте и проверьте определение переменной showAlert.
21 Февраль 2020, 11:07:52
Ответ #6
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Огромное спасибо Mr.Sen! Я совсем забыл про консоль. Все получилось. Проблема была, что товару было присвоено несколько категорий одновременно. Решил тем что поставил категорию "по умолчанию" товарам именно "31". И все заработало. И последний вопрос. Немного не понятно что вы написали здесь:
{addJsDef showAlert=true}
        // тут же можно переменную для вывода текста с переводами
Как мне передать свою переменную с переводом именно в alert сообщение?
Огромное спасибо за помощь и за уделенное внимание моему вопросу!
21 Февраль 2020, 11:57:45
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 1807
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Определяете переменную с текстом для javascript
{addJsDefL name='alert_message'}{l s='Текст который нужно переводить' js=1}{/addJsDefL}Потом ее используете для показа текста в окне.
21 Февраль 2020, 17:19:13
Ответ #8
  • Новичок
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля