Автор Тема: 1.7.8.8 Как убрать модальное окно добавления товара в корзину ?  (Прочитано 400 раз)

24 Январь 2023, 15:54:59
  • Пользователь
  • **
  • Сообщений: 93
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
1.7.8.8 Как убрать модальное окно добавления товара в корзину которое предлагает оформить заказ или продолжить покупки.?

Подскажите кто знает..
24 Январь 2023, 22:25:23
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
25 Январь 2023, 00:31:33
Ответ #2
  • Пользователь
  • **
  • Сообщений: 93
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В модуле ps_shoppingcart отключите Ajax-корзина.


пробовал отключать AJAX корзину, но тогда после нажатия "в корзину" товар не появляется в корзине пока не перезагрузишь страницу в ручную, создается впечатление что сайт завис т.к. визуально ничего не меняется...

Я еще добавить код что бы после добавления в корзину на кнопке менялась надпись и пиктограмма "в корзине".

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

Если примитивно, то нужно имитировать нажатие "продолжить покупки" или закрытие модального окна.

Очень нужно, помогите решить задачу.
25 Январь 2023, 13:27:08
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В фукции js, где добавляли код смены пиктограмы, закоментируйте или удалите вызов модального окна.
26 Январь 2023, 05:43:58
Ответ #4
  • Пользователь
  • **
  • Сообщений: 93
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В фукции js, где добавляли код смены пиктограмы, закоментируйте или удалите вызов модального окна.


код добавлял в этот файл /themes/classic/templates/catalog/_partials/product-add-to-cart.tpl , а не JS

подскажите плиз где находиться JS и какие строки закомментировать?
26 Январь 2023, 07:12:38
Ответ #5
  • Пользователь
  • **
  • Сообщений: 93
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
в общем я понял как убрать окно закоментил showModal(resp.modal) в ps_shoppingcart.js

Теперь количество товаров в корзине обновляется, это работает, НО теперь не работает код который я добавил для изменения названия кнопки "в корзине"...

<!-- Определение в корзине -->
{$in_cart = 0}
{foreach from=$cart['products'] item='cart_product' }
    {if $cart_product['id_product'] == $product.id}
        {$in_cart = 1}
    {/if}
{/foreach}
<!-- Если в корзине -->
{if $in_cart}
<div class="add">
    <a href="/cart" class="btn btn-primary add-to-cart">{l s='Already in cart' d='Shop.Theme.Actions'}</a>
</div>
{else}
<div class="add">
    <button class="btn btn-primary add-to-cart" data-button-action="add-to-cart" type="submit" {if !$product.add_to_cart_url} disabled {/if}>
        <i class="material-icons shopping-cart">&#xE547;</i>
        {l s='Add to cart' d='Shop.Theme.Actions'}
    </button>
</div>
{/if}


подскажите как правильно прописать что бы работало? (кнопка по сути с модальным окном менялась, сейчас нет)

Возможно ваш вариант с добавлением кода в JS файл будет актуальней
26 Январь 2023, 13:45:41
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Код не работает потому что страница не перегружается и переменная in_cart не обновляется.
Поэтому все нужно делать в javascript.
Файл /themes/classic/assets/js/theme.js
Показ окна в blockcart.showModal....
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
27 Январь 2023, 00:43:14
Ответ #7
  • Пользователь
  • **
  • Сообщений: 93
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Код не работает потому что страница не перегружается и переменная in_cart не обновляется.
Поэтому все нужно делать в javascript.
Файл /themes/classic/assets/js/theme.js
Показ окна в blockcart.showModal....

Нашел код про который Вы говорите, но помогите как реализовать в нем чтобы переменная in_cart обновлялась. Самостоятельно не могу разобраться

.blockcart.showModal=function(e){function t(){return l()("#blockcart-modal")}var n=t();n.length&&n.remove(),l()("body").append(e),(n=t()).modal("show").on("hidden.bs.modal",function(e){a().emit("updateProduct",{reason:e.currentTarget.dataset,event:e})})},t().prototype)a()[E]=t().prototype[E];l()(document).ready(function(){var e=l()(".js-dropdown"),t=new b,n=l()('.js-top-menu ul[data-depth="0"]'),i=new y(e),r=new A(n),e=new s,n=new u;i.init(),t.init(),r.init(),e.init(),n.init(),l()('.carousel[data-touch="true"]').swipe({swipe:function(e,t){"left"===t&&l()(this).carousel("next"),"right"===t&&l()(this).carousel("prev")},allowPageScroll:"vertical"})})}()}();
28 Январь 2023, 10:26:28
Ответ #8
  • Новичок
  • *
  • Сообщений: 1
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В файле .....\modules\ps_shoppingcart\controllers\front\ajax.php
закомментируйте код вот так

public function initContent()
    {
        parent::initContent();

        $modal = null;

        /*
           if ($this->module instanceof Ps_Shoppingcart && Tools::getValue('action') === 'add-to-cart') {
            $modal = $this->module->renderModal(
                $this->context->cart,
                (int) Tools::getValue('id_product'),
                (int) Tools::getValue('id_product_attribute'),
                (int) Tools::getValue('id_customization')
            );
        }
*/
29 Январь 2023, 00:16:55
Ответ #9
  • Пользователь
  • **
  • Сообщений: 93
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В файле .....\modules\ps_shoppingcart\controllers\front\ajax.php
закомментируйте код вот так

public function initContent()
    {
        parent::initContent();

        $modal = null;

        /*
           if ($this->module instanceof Ps_Shoppingcart && Tools::getValue('action') === 'add-to-cart') {
            $modal = $this->module->renderModal(
                $this->context->cart,
                (int) Tools::getValue('id_product'),
                (int) Tools::getValue('id_product_attribute'),
                (int) Tools::getValue('id_customization')
            );
        }
*/


К сожаления этот код для изменения кнопки не работает, товар добавляется но надпись на кнопке "в корзину" на "в корзине" не меняется пока не перезагрузить страницу в ручную.
Но благодарю вас serg_66 за попытку помочь.

PrestaMan дал наводку на файл, значит знает в чем дело, но пока молчит ))
01 Февраль 2023, 15:10:03
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
В файле
/modules/ps_shoppingcart/ps_shoppingcart.js
Найти и заменить код вызова окна на переход на страницу корзины
if (resp.modal) {
          //showModal(resp.modal); <-Можно удалить
          window.location.replace(prestashop.urls.pages.cart);
}
02 Февраль 2023, 11:03:49
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В файле
/modules/ps_shoppingcart/ps_shoppingcart.js
Найти и заменить код вызова окна на переход на страницу корзины
if (resp.modal) {
          //showModal(resp.modal); <-Можно удалить
          window.location.replace(prestashop.urls.pages.cart);
}
если нужно остаться на тойже странице и ее перегрузить для обновления корзины, тогда
location.reload();