[Помогите] добавить код на кнопку "купить"

Тема в разделе "OpenCart", создана пользователем sonicking, 17 мар 2016.

  1. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    всем привет
    человек, продвигающий сайт, попросил (дословно)

    добавь код на кнопку "купить"
    onclick="yaCounterXXXXXXXX.reachGoal('add2cart'); return false;"


    как это правильно сделать?
     
    Последнее редактирование: 20 мар 2016
  2. Andre231

    Andre231

    Регистрация:
    18 июн 2014
    Сообщения:
    47
    Симпатии:
    17
    /catalog/view/theme/ТВОЯ ТЕМА/template/product/product.tpl
    /catalog/view/theme/ТВОЯ ТЕМА/template/product/category.tpl
    ищем <input type="button" value="<?php echo $button_cart; ?>" id="button-cart" class="button" />
    Там и вставляем
     
  3. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    756
    Симпатии:
    269
    А вставляем типа так
    <input type="button" value="<?php echo $button_cart;?>" id="button-cart" class="button" onclick="yaCounter34785980.reachGoal('addToCart'); return true;" /> кроме того, надо не только в товарах и категориях продеделать, но и в модулях типа рекомендуемые, новинки и т.д. А еще (второй способ) можно вроде как в common.js попробовать сразу (тогда по идее будет из любого места и модуля будет срабатывать) находим в файле коммон addToCart функцию и в ней приводим к виду
    Код:
    function addToCart(product_id, quantity) {
        quantity = typeof(quantity) != 'undefined' ? quantity : 1;
            yaCounterXXXXXXXX.reachGoal('addToCart');
        $.ajax({
               ...
            });
    }
     
    Lasted edited by : 20 мар 2016
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    И это единственный правильный способ! Надо только не забыть, что на странице товара есть ещё отдельный обработчик клика по этой кнопке.

    А вписывать прямо в тег - это плохая практика.
     
  5. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    попробую в common.js прописать, только их два

    d:\OpenServer\domains\shop.igra.toys\catalog\view\javascript\common.js
    d:\OpenServer\domains\shop.igra.toys\catalog\view\theme\mattimeo\js\common.js

    я так понимаю во второй? или в оба?

    и есть ещё один :о)

    d:\OpenServer\domains\shop.igra.toys\catalog\view\javascript\common2.js
     
    Последнее редактирование: 17 мар 2016
  6. ДокторАйболит

    ДокторАйболит

    Регистрация:
    22 апр 2015
    Сообщения:
    5
    Симпатии:
    1
    Попробуйте вставить во все по очереди пока на кнопках не появится необходимый вам код.
     
  7. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    все три файла содержат такой код:

    Код:
    function addToCart(product_id, quantity) {
        quantity = typeof(quantity) != 'undefined' ? quantity : 1;
    
        $.ajax({
            url: 'index.php?route=checkout/cart/add',
            type: 'post',
            data: 'product_id=' + product_id + '&quantity=' + quantity,
            dataType: 'json',
            success: function(json) {
                $('.success, .warning, .attention, .information, .error').remove();
              
                if (json['redirect']) {
                    location = json['redirect'];
                }
              
                if (json['success']) {
                    $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
                  
                    $('.success').fadeIn('slow');
                  
                    $('#cart-total').html(json['total']);
                  
                    $('html, body').animate({ scrollTop: 0 }, 'slow');
                }  
            }
        });
    }
    отличие только в названии темы

    если я третьей строкой ставлю yaCounterXXXXXXXX.reachGoal('addToCart');
    то кнопка "КУПИТЬ" перестаёт реагировать :о(

    что не так?
     
    Последнее редактирование: 20 мар 2016
  8. ДокторАйболит

    ДокторАйболит

    Регистрация:
    22 апр 2015
    Сообщения:
    5
    Симпатии:
    1
    Если вы откроете консоль и увидите такую ошибку.
    Uncaught ReferenceError: yaCounterXXXXXXXX is not defined(…)
    То это значит, что вам нужно подключить яндекс метрику.
     
    Lasted edited by : 21 мар 2016
  9. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    метрика подключена
    добавил код в файлы - в метрике не отрабатывает...

    добавил код напрямую в tpl - один фиг в метрике "Нет данных по цели."

    куда ещё копать?
     
    Lasted edited by : 19 мар 2016
  10. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    756
    Симпатии:
    269
    все-же спрошу, ты в настройках самого счетчика цель добавил? Ну и вообще данные по достигнутым целям метрика обновляет не мгновенно, там надо подождать минут 15. Но что-то странно все это.
     
  11. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    метрикой (продвижением) занимаюсь не я, но доступ (без редактирования) туда имею
    там в настройках так (может что то не правильный код (onclick="yaCounterXXXXXXXX.reachGoal('add2cart'); return false;") он мне дал?)
    [​IMG]
    прошел уже час с момента последних изменений в файлах - в метрике "Нет данных по цели."

    Может кто посмотрит, сайт igra.toys
     
    Последнее редактирование: 20 мар 2016
  12. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Если включить мозг, то можно просто открыть исходный код страницы в браузере и посмотреть, какие из файлов подключены.

    Событие не срабатывает.
    Если вам нужно, чтоб оно работало на странице товара (для кнопки текущего товара, а не в модулях), то, как я писал выше, там отдельный код обработки клика по кнопке купить, а вы туда ничего не вписали.

    А на остальных страницах не работает, потому что там используется обработчик из файла common2.js, а вы туда тоже ничего не добавили.
     
  13. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    пробовал вписывать во все файлы common
    пробовал непосредственно во все tpl
    во всевозможных комбинациях - ноль эмоций
    попробую провернуть всё сначала

    P.S.
    в файлах common прописывал так
    Код:
    function addToCart(product_id, quantity) {
        quantity = typeof(quantity) != 'undefined' ? quantity : 1;
    yaCounterXXXXXXXX.reachGoal('add2cart'); return false;
        $.ajax({
            url: 'index.php?route=checkout/cart/add',
    в tpl так
    Код:
    <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>'); yaCounterXXXXXXXX.reachGoal('add2cart'); return false;" class="button" />
    начну с начала :о)
     
    Последнее редактирование: 20 мар 2016
  14. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Так нельзя. Если оставить return false в корзину ничего добавятся не будет. И вообще не надо добавлять это на тег.
    Достаточно в common2.js и в обработчик на странице товара. И добавлять лучше в блок
    Код:
    if (json['success']) {
     
  15. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    вы имеете ввиду так?

    Код:
                if (json['success']) {
    
    onclick="yaCounterXXXXXXXX.reachGoal('add2cart');"
    
                    $('#notification').html('<div class="success" style="display: none;" >' + json['success'] + '<img src="catalog/view/theme/mattimeo/image/close.png" alt="" class="close" /></div>');
                  
                    $('.success').fadeIn('slow');
                  
                    $('#cart-total').html(json['total']);
                  
                    //$('html, body').animate({ scrollTop: 0 }, 'slow');
                }    
    а в обработчик на странице товара - это имеется ввиду в скрипт в product.tpl ?
     
    Последнее редактирование: 20 мар 2016
  16. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    А onclick там зачем?
    onclick - это html атрибут, его не должно быть внутри скриптов.
    Но место правильное.

    Да.
    Код:
    $('#button-cart').bind('click', function() {
     
  17. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    вообщем заколдованный круг какой то, куда не вставляю - в метрике по нулям... может какой то vqmod мешает?
    сколько вообще должно пройти времени с момента нажатия на отслеживаемую кнопку до появлением данных в метрике?
    cereberlum писал про 15 минут, я ждал больше
    вообщем вернул пока все файлы в первоначальное состояние
    завтра снова в бой...
     
  18. skiv14

    skiv14

    Регистрация:
    9 июн 2015
    Сообщения:
    437
    Симпатии:
    180
    sonicking, так и есть, минут 15.
    А в метрике цели не нужно настраивать ?
     
  19. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    цель настроена в метрике
     
  20. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    вроде разобрался с целью на кнопку "купить"
    поставил так, вроде работает
    в common2.js и product.tpl
    Код:
    if (json['success']) {
                    yaCounterXXXXXXXX.reachGoal('add2cart');
                    $('#notification').html('<div class="success" style="display: none;" >' + json['success'] + '<img src="catalog/view/theme/mattimeo/image/close.png" alt="" class="close" /></div>');
                                    $('.success').fadeIn('slow');
                                    $('#cart-total').html(json['total']);
    теперь надо разобраться с установкой этой цели на нажатие кнопки "быстрый заказ" (сделано через модуль OCdevWizard Smart Checkout)
    я так понимаю, что код так же можно вставить в скрипты от модуля, но просмотрев все файлы модуля со скриптами и попробовав по аналогии с другими файлами вставить код цели в эти файлы - понял, что я ничего не понял :о))
     
    Lasted edited by : 23 мар 2016