Jump to content

Edit History

Ewonta

Ewonta

Здравствуйте!
При обновлении PrestaShop вы обновили родную тему "classic"

1) Если вы делаете изменения в родной теме то её нужно переопределить, вот в этой теме я писал об этом


2) По пути /themes/classic/templates/catalog/_partials/miniatures/product.tpl добавьте код 

 

       {block name='product_list_buy'}
            <div class="list-buy-button ">
              {if !$configuration.is_catalog && $product.add_to_cart_url && $product.customizable == 0 && $product.minimal_quantity == 1}
                <a
                  class="btn add-to-cart btn-primary js-ajax-add-to-cart" 
                  href="{$product.url}"
                  data-id-product="{$product.id_product}"
                >
                  <span>{l s='Add to cart' d='Shop.Theme.Actions'}</span>
                </a>
              {else}
                <a class="btn btn-light add-to-cart details-link" href="{$product.url}">
                  <span>{l s='Details' d='Shop.Theme.Global'}</span>
                </a>
              {/if}
            </div>
          {/block}

3) Если вы будете делать в классической теме то нужно создать файл custom.js по пути /themes/classic/assets/js/custom.js и в этот файл вставляем код js обработку нажатия на кнопку

 

$('body').on('click', '.js-ajax-add-to-cart', function (event) {
    event.preventDefault();

    var $btn = $(this);
    $btn.addClass('disabled');

    var actionURL = prestashop.urls.pages.cart,
        query = 'id_product=' + $btn.data('id-product') + '&add=1&action=update&token=' + prestashop.static_token,
        qty_val = 1,
        qty = $btn.closest('.js-product-miniature').find('.js-add-to-cart-quantity');
    if (qty.length && parseInt(qty.val()) > 1) {
      qty_val = parseInt(qty.val());
    }
    query = query + '&qty=' + qty_val;

    $.post(actionURL, query, null, 'json').then(function (resp) {
      prestashop.emit('updateCart', {
        reason: {
          idProduct: resp.id_product,
          idProductAttribute: resp.id_product_attribute,
          linkAction: 'add-to-cart'
        },
        resp
      });
      $('.js-ajax-add-to-cart').removeClass('disabled');
      $('.js-ajax-add-to-cart').find('.loading-miniature').remove()
      if (resp.success) {
        if (!psAjaxCart) {
          window.location.href = prestashop.urls.pages.cart + '?action=show';
        }
      }
      if (resp.hasError) {
        $('.js-modal-message-text').text(resp.errors[0]);
        $('.js-modal-message').modal('show');
      }
    }).fail(function (resp) {
      prestashop.emit('handleError', { eventType: 'addProductToCart', resp: resp });
    });

    return false;
  });

 
На скриншоте показано решение вашего вопроса

В модуле обновления нужно выключить флажок, который отвечает за обновление родной темы или лучше сделать её переопределение.
 

Screenshot_2.png

 

Официальный разработчик тем и модулей на PrestaShop

Ewonta

Ewonta

Здравствуйте!
При обновлении PrestaShop вы обновили родную тему "classic"

1) Если вы делаете изменения в родной теме то её нужно переопределить, вот в этой теме я писал об этом


2) По пути /themes/classic/templates/catalog/_partials/miniatures/product.tpl добавьте код 

 

       {block name='product_list_buy'}
            <div class="list-buy-button ">
              {if !$configuration.is_catalog && $product.add_to_cart_url && $product.customizable == 0 && $product.minimal_quantity == 1}
                <a
                  class="btn add-to-cart btn-primary js-ajax-add-to-cart" 
                  href="{$product.url}"
                  data-id-product="{$product.id_product}"
                >
                  <span>{l s='Add to cart' d='Shop.Theme.Actions'}</span>
                </a>
              {else}
                <a class="btn btn-light add-to-cart details-link" href="{$product.url}">
                  <span>{l s='Details' d='Shop.Theme.Global'}</span>
                </a>
              {/if}
            </div>
          {/block}

3) Если вы будите делать в классической теме то нужно создать файл custom.js по пути /themes/classic/assets/js/custom.js и в этот файл вставляем код js обработку нажатия на кнопку

 

$('body').on('click', '.js-ajax-add-to-cart', function (event) {
    event.preventDefault();

    var $btn = $(this);
    $btn.addClass('disabled');

    var actionURL = prestashop.urls.pages.cart,
        query = 'id_product=' + $btn.data('id-product') + '&add=1&action=update&token=' + prestashop.static_token,
        qty_val = 1,
        qty = $btn.closest('.js-product-miniature').find('.js-add-to-cart-quantity');
    if (qty.length && parseInt(qty.val()) > 1) {
      qty_val = parseInt(qty.val());
    }
    query = query + '&qty=' + qty_val;

    $.post(actionURL, query, null, 'json').then(function (resp) {
      prestashop.emit('updateCart', {
        reason: {
          idProduct: resp.id_product,
          idProductAttribute: resp.id_product_attribute,
          linkAction: 'add-to-cart'
        },
        resp
      });
      $('.js-ajax-add-to-cart').removeClass('disabled');
      $('.js-ajax-add-to-cart').find('.loading-miniature').remove()
      if (resp.success) {
        if (!psAjaxCart) {
          window.location.href = prestashop.urls.pages.cart + '?action=show';
        }
      }
      if (resp.hasError) {
        $('.js-modal-message-text').text(resp.errors[0]);
        $('.js-modal-message').modal('show');
      }
    }).fail(function (resp) {
      prestashop.emit('handleError', { eventType: 'addProductToCart', resp: resp });
    });

    return false;
  });

 
На скриншоте показано решение вашего вопроса

В модуле обновления нужно выключить флажок, который отвечает за обновление родной темы или лучше сделать её переопределение.
 

Screenshot_2.png

Ewonta

Ewonta

Здравствуйте!
При обновлении PrestaShop вы обновили родную тему "classic"

1) Если вы делаете изменения в в родной теме то её нужно переопределить, вот в этой теме я писал об этом


2) По пути /themes/classic/templates/catalog/_partials/miniatures/product.tpl добавьте код 

 

       {block name='product_list_buy'}
            <div class="list-buy-button ">
              {if !$configuration.is_catalog && $product.add_to_cart_url && $product.customizable == 0 && $product.minimal_quantity == 1}
                <a
                  class="btn add-to-cart btn-primary js-ajax-add-to-cart" 
                  href="{$product.url}"
                  data-id-product="{$product.id_product}"
                >
                  <span>{l s='Add to cart' d='Shop.Theme.Actions'}</span>
                </a>
              {else}
                <a class="btn btn-light add-to-cart details-link" href="{$product.url}">
                  <span>{l s='Details' d='Shop.Theme.Global'}</span>
                </a>
              {/if}
            </div>
          {/block}

3) Если вы будите делать в классической теме то нужно создать файл custom.js по пути /themes/classic/assets/js/custom.js и в этот файл вставляем код js обработку нажатия на кнопку

 

$('body').on('click', '.js-ajax-add-to-cart', function (event) {
    event.preventDefault();

    var $btn = $(this);
    $btn.addClass('disabled');

    var actionURL = prestashop.urls.pages.cart,
        query = 'id_product=' + $btn.data('id-product') + '&add=1&action=update&token=' + prestashop.static_token,
        qty_val = 1,
        qty = $btn.closest('.js-product-miniature').find('.js-add-to-cart-quantity');
    if (qty.length && parseInt(qty.val()) > 1) {
      qty_val = parseInt(qty.val());
    }
    query = query + '&qty=' + qty_val;

    $.post(actionURL, query, null, 'json').then(function (resp) {
      prestashop.emit('updateCart', {
        reason: {
          idProduct: resp.id_product,
          idProductAttribute: resp.id_product_attribute,
          linkAction: 'add-to-cart'
        },
        resp
      });
      $('.js-ajax-add-to-cart').removeClass('disabled');
      $('.js-ajax-add-to-cart').find('.loading-miniature').remove()
      if (resp.success) {
        if (!psAjaxCart) {
          window.location.href = prestashop.urls.pages.cart + '?action=show';
        }
      }
      if (resp.hasError) {
        $('.js-modal-message-text').text(resp.errors[0]);
        $('.js-modal-message').modal('show');
      }
    }).fail(function (resp) {
      prestashop.emit('handleError', { eventType: 'addProductToCart', resp: resp });
    });

    return false;
  });

 
На скриншоте показано решение вашего вопроса

В модуле обновления нужно выключить флажок, который отвечает за обновление родной темы или лучше сделать её переопределение.
 

Screenshot_2.png

×
×
  • Create New...