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

Тема в разделе "Внешний вид, шаблоны, графика", создана пользователем Unraw, 12.07.2010.

  1. Offline

    Unraw Недавно здесь

    Регистрация:
    08.07.2010
    Сообщения:
    41
    Симпатии:
    0
    Пол:
    Мужской
    Всем привет.

    Подскажите плз, как сделать так, чтобы при нажатии кнопки Купить в virtuemart, рядом с кнопкой Купить появлялась надпись - "Товар добавлен в корзину".

    Сейчас при нажатии Купить видимые изменения происходят только в модуле мини-корзины.
     
  2.  
  3. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    это зачем?
    после такого нажатия всегда появляется всплывающее окно с этой надписью
     
  4. Offline

    Unraw Недавно здесь

    Регистрация:
    08.07.2010
    Сообщения:
    41
    Симпатии:
    0
    Пол:
    Мужской
    Это окно я убрал, т.к. при покупке 1-2 десятков мелких товаров оно начинает надоедать.

    То есть сейчас товар просто добавляется в корзину без оповещения, поэтому интересуюсь можно ли реализовать так, чтобы появлялась надпись рядом с кнопкой купить?
     
  5. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    если я правильно всё понимаю то это окно появляется при помощи JS

    так вот попробуй заставить этот JS дописывать в CLASS или в ID рядом с кнопкой нужную тебе информацию
     
  6. Offline

    Unraw Недавно здесь

    Регистрация:
    08.07.2010
    Сообщения:
    41
    Симпатии:
    0
    Пол:
    Мужской
    Да, при помощи JS.

    Функция, которая запускает это всплывающее окно - function handleAddToCart( formId, parameters )

    находится в файле: components / com_virtuemart / themes / default / theme.js


    Кнопка "Купить" находится на странице товара, т.е. в файле flypage.


    Но вот как сделать так, чтобы эта функция передавала текст при нажатии на кнопку Купить не знаю. Есть идеи?
     
  7. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    смотри у тебя кнопка описана как <input type="button"....> заключи её к примеру в DIV
    Код (CODE):
    1. [B]<div id="text_cart_product">[/B]<input type="button"....>[B]</div>[/B]


    не знаю какой фрейм ворк используется в VM но скорее всего в нём есть аналогичная функция как в Jquery $("#text_cart_product").html("товар добавлен в корзину")

    этой функцией надо заменить внутренности твоей function handleAddToCart( formId, parameters ) или порыться в неё и убрать то что выводит сообщение(окно) на экран и вместо него поставить то что я сказал, после этого у тебя должно всё заработать

    НО НЕ ЗАБУДЬ ЧТО В VM МОЖЕТ ИСПОЛЬЗОВАТЬСЯ ЛЮБОЙ ДРУГОЙ ФРАЙМВОРК ОТЛИЧНЫЙ ОТ JQUERY
     
  8. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    когда сделаешь отпишись как сделал, другим тоже интересно будет
     
  9. Offline

    refoxter Недавно здесь

    Регистрация:
    29.09.2007
    Сообщения:
    124
    Симпатии:
    1
    Пол:
    Женский
    Подниму темку :)
    Озаботилась изменением кнопки, если товар заказан.
    Например, на странице категории есть список товаров с кнопками Купить. Если кнопка Купить нажимается и товар добавляется в корзину, то эта кнопка "Купить" заменяется, например, на "В корзине".
    Подскажите, пожалуйста,как можно осуществить? Сходу вариантов не придумала.
    В этом сообщении не поняла. Если можно, поподробнее.
     
    Последнее редактирование: 24.09.2010
  10. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    копай какой то из файлов addtocart находящийся в каталоге components\com_virtuemart\themes\default\templates\product_details\includes\
    один из них используется для добавления в корзину товара и отображения всплывающего окна

    в файле components\com_virtuemart\themes\default\theme.js находится эта самая функция function handleAddToCart( formId, parameters )
    там тебе её и править, а в VM используется фреймворк MooTools так что читай как он можен заменять части HTML страниц своими функциями
     
  11. Offline

    refoxter Недавно здесь

    Регистрация:
    29.09.2007
    Сообщения:
    124
    Симпатии:
    1
    Пол:
    Женский
    Не сердитесь, если не сразу понимаю или хочу разобраться подробнее. И с JS пока не дружу так близко, как хотелось бы.
    Есть строчка
    Код (PHP):
    1. <form action="<?php echo $mm_action_url ?>index.php" method="post" name="addtocart" id="addtocart<?php echo $product['product_id'] ?>" class="addtocart_form" <?php if( $this->get_cfg( 'useAjaxCartActions', 1 ) && !$notify ) { echo 'onsubmit="handleAddToCart( this.id );return false;"'; } ?>>

    Если нажимается кнопка Купить, то выполняется действие с пересчетом корзины и если включено useAjaxCartActions-окно, то должно быть выполнено (создается новое окошечко)
    Код (CODE):
    1. function handleGoToCart() { document.location = live_site + '/index.php?option=com_virtuemart&page=shop.cart&product_id=' + formCartAdd.product_id.value + '&Itemid=' +formCartAdd.Itemid.value; }
    2.  
    3. var timeoutID = 0;
    4.  
    5. function handleAddToCart( formId, parameters ) {
    6.     formCartAdd = document.getElementById( formId );
    7.    
    8.     var callback = function(responseText) {
    9.         updateMiniCarts();
    10.         // close an existing mooPrompt box first, before attempting to create a new one (thanks wellsie!)
    11.         if (document.boxB) {
    12.             document.boxB.close();
    13.             clearTimeout(timeoutID);
    14.         }
    15.  
    16.         document.boxB = new MooPrompt(notice_lbl, responseText, {
    17.                 buttons: 2,
    18.                 width:400,
    19.                 height:150,
    20.                 overlay: false,
    21.                 button1: ok_lbl,
    22.                 button2: cart_title,
    23.                 onButton2:  handleGoToCart
    24.             });
    25.            
    26.         setTimeout( 'document.boxB.close()', 3000 );
    27.     }
    28.    
    29.     var opt = {
    30.         // Use POST
    31.         method: 'post',
    32.         // Send this lovely data
    33.         data: $(formId),
    34.         // Handle successful response
    35.         onComplete: callback,
    36.        
    37.         evalScripts: true
    38.     }
    39.  
    40.     new Ajax(formCartAdd.action, opt).request();
    41. }
    То есть можно изменить только посредством изменения JS, влияя на подключаемые скрипты? А просто используя PHP нельзя изменить функцию кнопки? Мне непонятно, зачем мне вообще использовать JS, если где-то это может лежать ближе. У меня чувство, что можно проще прописать, если заказано, то кнопка такая-то, без подключения вообще скриптов. Не могу уловить, как прописать, что уже в корзине, саму переменную и ее условие в первой строчке кода add_to_cart?
     
  12. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    JS позволяет не перезагружать страницу после нажатия на кнопку КУПИТЬ, по этому я предлагаю просто немного подправить JS чтобы он не выводил окно, а просто вставлял в нужное место нужный текст!!!!
     
  13. Offline

    refoxter Недавно здесь

    Регистрация:
    29.09.2007
    Сообщения:
    124
    Симпатии:
    1
    Пол:
    Женский
    Понятно. Попробую поработать. Спасибо.
    Меня бы устроила и перезагрузка страницы, поэтому искала решение попроще. Если будут еще какие решения-соображения, буду признательна за совет. :)
     
  14. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    многих людей (пользователей) раздражает пере загрузка страницы
     
  15. Offline

    refoxter Недавно здесь

    Регистрация:
    29.09.2007
    Сообщения:
    124
    Симпатии:
    1
    Пол:
    Женский
    Согласна. Но хотела бы попробовать.
    Кстати, еще вспомнила, что старая Opera оказалась выдавать это предупреждение о добавлении в корзину.
    Не будет ли таких накладок с использованием подмены сообщения предложенным способом? Неприятно провести работу, а некоторые браузеры подложат свинью.
     
  16. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    по идее не должно, т.к. тут графики ни какой не создаётся динамически, а только лишь подменяется какой то текст в уже существующем теге
     
  17. Offline

    refoxter Недавно здесь

    Регистрация:
    29.09.2007
    Сообщения:
    124
    Симпатии:
    1
    Пол:
    Женский
    Не, пока у меня не получается по этому методу. Не доросла, видимо, еще до JS.
    Как прописать условие, что такой-то товар в корзине? Давайте хоть с перезагрузкой сделаем.
    Код (CODE):
    1. $button_lbl = $VM_LANG->_('PHPSHOP_CART_ADD_TO');
    2. $button_cls = 'addtocart_button';
    3. if( CHECK_STOCK == '1' && !$product_in_stock ) {
    4.     $button_lbl = $VM_LANG->_('VM_CART_NOTIFY');
    5.     $button_cls = 'notify_button';
    6.     $notify = true;
    7. } else {
    8.     $notify = false;
    9. }
    10. ?>
    Вот здесь меняется кнопка, если проверяется количество на складе. Что сверяет товар с корзиной? Я не знаю этой переменной.
     
  18. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    как раз именно этот весь скрипт и проверяет есть ли товар на складе или нет, а за включение или отключение как я понимаю отвечает переменна CHECK_STOCK == '1'
     
  19. Offline

    refoxter Недавно здесь

    Регистрация:
    29.09.2007
    Сообщения:
    124
    Симпатии:
    1
    Пол:
    Женский
    Именно так, эта переменная. Когда товар на складе кнопка выглядит, как Купить. Когда товара нет, меняется css, надпись и функция кнопки. Я хотела бы дописать еще одно условие, при котором менялась кнопка в зависимости от корзины, но не могу найти нужную переменную, которая отвечает за корзину и конкретный товар.
    Если бы так сделать, то кнопка менялась бы на любом этапе магазина, и в категории, и на странице товара, везде.
    У меня будет магазин, где много мелких товаров, купить каждого товара можно только по 1 штуке, и будет отслеживаться количество на складе.
     
    Последнее редактирование: 26.09.2010
  20. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    надо чтобы этот скрипт смотрел какие ID товаров есть уже в корзине и знал с какого ID товара сейчас происходит его (скрипта) вывод (показ на экране)
     
  21. Offline

    refoxter Недавно здесь

    Регистрация:
    29.09.2007
    Сообщения:
    124
    Симпатии:
    1
    Пол:
    Женский
    Все так. Видимо, надо будет перекапывать всю цепочку файлов до корзины, чтобы найти эту переменную id товара в корзине.
    Я надеялась, что подскажете, как она выглядит. Если найдете раньше меня, подскажите, пожалуйста. Я как-то подзапуталась в самой цепочке магазина.
     

Поделиться этой страницей

Загрузка...