Сообщение с подтверждением для пользователя при добавлении товара из категории

Автор john_ol, 19 февраля 2020, 18:39:44

« назад - далее »

john_ol

Всем привет. Может кто знает как такое можно реализовать?
Я использую presta 1.6.1.6. Хочу немного изменить Front для клиента.
Мне нужно когда пользователь нажимает на странице продукта кнопку "Добавить в корзину" (продукт из определенной категории например с Id=31), перед тем как добавить сам продукт в корзину появляется окно (Вы точно хотите добавить данный товар в корзину) да/нет. Если да - то добавляем, нет - то просто закрываем данное окно.
Спасибо всем заранее. Хорошего дня!

Mr.Sen

В файле 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);
});
}

john_ol

Mr.Sen спасибо огромное за подсказку!
Место вставки понял. Но если делаю так if(category == 31) то ничего не происходит.
Пробовал вместо /*category*/ поставить переменную id_product - тогда работает с одним продуктом.
А как сделать именно с категорией?
-----------------------------------------------
И у меня еще магазин на трех языках. Я понимаю, что в файле js этого не сделать, нужно работать с tpl. Только не знаю как это модальное окно связать с шаблоном product.tpl.
Заранее благодарен. Спасибо!


Mr.Sen

В 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("Вы точно хотите добавить данный товар в корзину");

john_ol

В 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}

--------------------------------------------------------------------------------------------------
Спасибо за помощь!

Mr.Sen

Консоль отладки в браузере откройте и проверьте определение переменной showAlert.

john_ol

Огромное спасибо Mr.Sen! Я совсем забыл про консоль. Все получилось. Проблема была, что товару было присвоено несколько категорий одновременно. Решил тем что поставил категорию "по умолчанию" товарам именно "31". И все заработало. И последний вопрос. Немного не понятно что вы написали здесь:
{addJsDef showAlert=true}
        // тут же можно переменную для вывода текста с переводами

Как мне передать свою переменную с переводом именно в alert сообщение?
Огромное спасибо за помощь и за уделенное внимание моему вопросу!

Mr.Sen

Определяете переменную с текстом для javascript
{addJsDefL name='alert_message'}{l s='Текст который нужно переводить' js=1}{/addJsDefL}
Потом ее используете для показа текста в окне.

john_ol