Автор Тема: Условие невидимости для кнопки "купить в один клик"  (Прочитано 563 раз)

29 Ноябрь 2016, 19:47:40
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем привет, у меня проблема, прошу совета. Есть модуль покупки в один клик
Кнопка эта всегда отображается в карточке товара, когда он в наличии и исчезает, когда товара в наличии нет. но есть одна заковыка - если к товару идут атрибуты (комбинации цвета, размера и т.п.), то кнопка некрасиво вылазит даже тогда, когда данной комбинации товара нет в наличии (но есть в наличии другой его цвет, размер и т.п.). Клиенты игнорируют надпись "Нет в наличии" и упорно жмакают на кнопку "Купить в один клик" и создают пустые заявки. Так вот, кнопку нужно убрать, т.е. сделать ее невидимой для конкретно отсутствующей комбинации и видимой для других, которые в наличии есть.

Условие, которое прописывается для этой кнопки, следующее:
{if (!$allow_oosp && $product->quantity <= 0) OR !$product->available_for_order OR (isset($restricted_country_mode) AND $restricted_country_mode) OR $PS_CATALOG_MODE} style="display: none;"{/if}Понятно, что здесь комбинации не учитаны. Прошу помощи. Если это слишком сложно, готов заплатить за готовый рабочий код. Заранее всем спасибо за помощь.
30 Ноябрь 2016, 13:15:51
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
На странице товара кнопку скрывает через js, в product.js добавь ид этой кнопки в функцию updateDisplay()
if (!selectedCombination['unavailable'] && quantityAvailable > 0 && productAvailableForOrder == 1)
{
//show the "add to cart" button ONLY if it was hidden
$('#add_to_cart:hidden').fadeIn(600); // свой ид добавь.
30 Ноябрь 2016, 14:38:17
Ответ #2
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
На странице товара кнопку скрывает через js, в product.js добавь ид этой кнопки в функцию updateDisplay()
if (!selectedCombination['unavailable'] && quantityAvailable > 0 && productAvailableForOrder == 1)
{
//show the "add to cart" button ONLY if it was hidden
$('#add_to_cart:hidden').fadeIn(600); // свой ид добавь.
Спасибо за совет, он очевидно рабочий, но у меня почему-то не сработало. Прописал ID кнопки, все как нужно в themes/моя тема/js/product.js, но кнопка все равно продолжает вылезать. Чистил кеш смарти, включал принудительную перекомпиляцию шаблона, чистил куки и кеш браузера. Никакого результата. Представить не могу, почему не работает.
30 Ноябрь 2016, 15:34:10
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
30 Ноябрь 2016, 16:43:45
Ответ #4
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Кеширование отключил?
Все что можно применил, кеширование выключал, перекомпиляцию включал, чистил кеш смарти, чистил кеш браузера. Тупо не работает. такое ощущение, что я вообще правлю не тот файл.
Product.js отвечает за все яваскрипты карточки товара? Может, у модуля быстрого заказа свой скрипт прописан? Писал об этом также продавцу модуля, он не отвечает.
30 Ноябрь 2016, 16:55:12
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Может у него свой js файл. Посмотри какие js файлы у тебя загружаются.
30 Ноябрь 2016, 18:10:28
Ответ #6
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Может у него свой js файл. Посмотри какие js файлы у тебя загружаются.

У него свой файл есть. Но там нет функции отображения. вот его содержимое:

$(document).ready(function()
{
$('#owr').click(function(){
$.fancybox({
'transitionIn' : 'zoomIn',
'transitionOut' : 'zoomOut',
'titleShow'      : false,
'showCloseButton' : true,
'centerOnScroll' : true,
'href' : baseDir + 'modules/owr/ajax.php',
'padding' : 0,
        'autoScale'      : false,

ajax : {
    type : "GET",
    data : 'idp=' + id_product + '&idc=' + $('#idCombination').val(),
},
'onStart' : function() {
$('#fancybox-outer').addClass('owrp');
},
'onClosed' : function() {
$('#fancybox-outer').removeClass('owrp');
},
'onComplete' : function() {
$('#powr #submitOrder').click(function(){
$.fancybox.showActivity();

var email = $('#email').val();
var phone = $('#phone_mobile').val();
var firstname = $('#firstname').val();
var lastname = $('#lastname').val();
var address = $('#address').val();
var idc = $('#idCombination').val();
var qty = $('#quantity_wanted').val()

$.ajax({
type: 'POST',
url: baseDir + 'modules/owr/ajax.php',
async: true,
cache: false,
dataType : "json",
data: 'submitOwr=true' + '&idp=' + id_product + '&idc=' + parseInt(idc) + '&email=' + email + '&phone=' + phone + '&firstname=' + firstname + '&lastname=' + lastname + '&address=' + address + '&qty=' + qty + '&token=' + static_token,
success: function(jsonData)
{
if (jsonData.hasError)
{
//var errors = '<b>'+'Errors: '+' '+jsonData.errors.length+' '+ 'errors' +':</b><ol>';
var errors = '<b>'+'Ошибки: ' + '</b><ol>';
for(error in jsonData.errors)
if(error != 'indexOf')
errors += '<li>'+jsonData.errors[error]+'</li>';
errors += '</ol>';
$('#errors').html(errors).slideDown('slow');
$.fancybox.resize();
$.fancybox.hideActivity();
}
else
{
$('#powr #wrap').hide();
$('#errors').slideUp('slow', function(){
$('#powr #errors').hide();
$('#powr #success').show();
});

$.fancybox.hideActivity();
$.fancybox.resize();
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {alert("TECHNICAL ERROR: unable to save order \n\nDetails:\nError: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);}
});
});
}});
return false;
});
});