Изменение количества товаров в InstantShop 1.X

 
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 954
Пытаюсь сделать изменение количества товаров в InstantShop с помощью стрелок или кнопок +/-, типа как здесь:
Изменение количества товаров в InstantShop
В файлах \templates\shablon\components\com_inshop_item.tpl и \templates\shablon\components\com_inshop_items.tpl прикрутил скрипт:
Код PHP:
  1.  
  2. <input name="qty" style="width:30px;text-align:center" value="1" id="num_count" />
  3. <input type="button" value="-" id="button_minus">
  4. <input type="button" value="+" id="button_plus">
  5.  
  6. <script>
  7. var numCount = document.getElementById('num_count');
  8. var plusBtn = document.getElementById('button_plus');
  9. var minusBtn = document.getElementById('button_minus');
  10. plusBtn.onclick = function() {
  11. var qty = parseInt(numCount.value);
  12. qty = qty + 1;
  13. numCount.value = qty;
  14. }
  15. minusBtn.onclick = function() {
  16. var qty = parseInt(numCount.value);
  17. qty = qty - 1;
  18. numCount.value = qty;
  19. }
  20. </script>
  21.  
В результате на странице товара (где счетчик один) всё работает, товары добавляются.
Изменение количества товаров в InstantShop
А вот на странице списка товаров (где счетчиков несколько) не работает. Как-то через раз, то у одного товара всё же можно изменить количество, то вообще нигде нельзя. И в любом случае в корзину приходит 1 штука.
Я в js не спец.
Может, кто подскажет?
Или есть готовое решение?
Или кто-то знает заведомо рабочий скрипт для нескольких счетчиков на одной странице?
Все идет хорошо, только мимо...
Web-Studio «PAL»
БЕСПЛАТНАЯ РАСКРУТКА САЙТОВ
Посетитель
small user social cms
Медаль
Сообщений: 328
Я использовал такой скрипт в конце файла com_inshop_items.tpl

Код PHP:
  1. <script type="text/javascript" >
  2. {literal}
  3. $(document).ready(function() {
  4. $('.minus_qty').click(function () {
  5. var $input = $(this).parent().find('input');
  6. var count = parseInt($input.val()) - 1;
  7. count = count < 1 ? 1 : count;
  8. $input.val(count);
  9. $input.change();
  10. return false;
  11. });
  12. $('.plus_qty').click(function () {
  13. var $input = $(this).parent().find('input');
  14. $input.val(parseInt($input.val()) + 1);
  15. $input.change();
  16. return false;
  17. });
  18. });
  19. {/literal}
  20. </script>
  21.  
Строка с ПлюсомМиносум и инпутом выглядит так
Код PHP:
  1. <span class="minus_qty">-</span><input name="qty" style="width:40px !important;text-align:center; border: none;" class="amount" value="1" /><span class="plus_qty">+</span>
Редактировалось: 1 раз (Последний: 31 мая 2019 в 19:32)
Реклама
cms
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1981
Олег с клещами, вам надо каждому элементу страницы html присвоить уникальный id, чтобы js работал именно с ним. Ведь если вы пишете, например, $('div').... то js ВСЕ div'ы на странице выбирает.

Как это конкретно сделать, особенно, если список формируется динамически, в цикле? Я обычно делаю так. Пишу элементу id="n{$key}", где $key - ключ цикла. В результате каждый элемент приобретает уникальный id = n0...n1...n2...n3 и тд.

Если надо обработать данный элемент, можно написать onclick="nameYouFunction('{$key}'); return false;", тогда при клике по элементу управление передастся методу с именем nameYouFunction, и методу передастся параметр со строчным значением ключа цикла.

Ну, а дальше ясно - выбираете с помошью js элемент с нужным id и обрабатываете его - получаете значение value или проверяете чекбокс или еще что. И отправляете по аяксу данные в корзину.
NOP
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 954
Юрий, спасибо, всё работает!
Все идет хорошо, только мимо...
Web-Studio «PAL»
БЕСПЛАТНАЯ РАСКРУТКА САЙТОВ
Посетитель
small user social cms
Медаль
Сообщений: 158
Кирилл Эдуардович (Странник):

Олег с клещами, вам надо каждому элементу страницы html присвоить уникальный id, чтобы js работал именно с ним. Ведь если вы пишете, например, $('div').... то js ВСЕ div'ы на странице выбирает.

Как это конкретно сделать, особенно, если список формируется динамически, в цикле? Я обычно делаю так. Пишу элементу id="n{$key}", где $key - ключ цикла. В результате каждый элемент приобретает уникальный id = n0...n1...n2...n3 и тд.

Если надо обработать данный элемент, можно написать onclick="nameYouFunction('{$key}'); return false;", тогда при клике по элементу управление передастся методу с именем nameYouFunction, и методу передастся параметр со строчным значением ключа цикла.

Ну, а дальше ясно - выбираете с помошью js элемент с нужным id и обрабатываете его - получаете значение value или проверяете чекбокс или еще что. И отправляете по аяксу данные в корзину.

Здравствуйте, а Вы не знаете как можно цены в инстант шоп которые указаны в долларах, заставить изменяться по курсу от ЦБ? И чтобы рядом с ценой в долларах, была цена в рублях которая тоже изменяется в зависимости от цены в долларах.
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1981
Dina, наверно, такое сделать можно, если сообразить, как получать данные о курсе рубль/доллар у ЦБ.
Несколько вариантов:
1. Либо писать парсер сайта https://www.cbr.ru,
2. Либо получать XML и распарсивать https://www.cbr.ru/development/SXML/
3. Получать данные ЦБ по API https://www.cbr.ru/development/DWS/
Третий вариант самый надежный - надо разбираться и читать документацию (лично я пока занят другой задачей, не взыщите)

Когда эти данные вашим сайтом будут получаться, в принципе, сделать то, что вы просите, уже просто дело техники. Код магазина открыт.
Редактировалось: 1 раз (Последний: 1 июня 2019 в 17:25)
NOP
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.