Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Автоматичесий пересчет цены при выборе опции товара


v_grin
 Поделиться

Рекомендованные сообщения

Господа, возникла следующая задача. Нужно автоматически пересчитывать цену товара на глазах у пользователя при выборе опции товара. К примеру, стандартный ипод стоит 1000 рублей, но когда выбираешь опцию (8gb + 500р.) нужно чтобы цена изменилась на глазах и стала 1500р. без перезагрузки страницы, т.е при помощи JavaScript.

Пример реализации можно посмотреть вот здесь http://www.rosdveri.ru/product/dver-mez ... l-avgusta/

Если кто уже реализовывал подобное или знает как можно реализовать - подскажите решение. Спасибо.

Ссылка на комментарий
Поделиться на других сайтах


Я делал подобное с помощью AJAX запроса.

Пример можно посмотреть тут.

Если такое решение подойдет скину код для примера.

Ссылка на комментарий
Поделиться на других сайтах


Я делал подобное с помощью AJAX запроса.Пример можно посмотреть тут.Если такое решение подойдет скину код для примера.

скинь , будет интересно посмотреть :(
Ссылка на комментарий
Поделиться на других сайтах


скинь , будет интересно посмотреть :(

TEMPLATE - product.tpl:

<script type="text/javascript"><!--  function recalculateprice(){    $.ajax({        type: 'post',        url: 'index.php?route=product/product/recalculateprice',        dataType: 'html',        data: $('#product :input'),        success: function (html) {            $('#price').html(html);        },        complete: function () {            params = {                'fontSize' : '14pt'            };            $('.price_int').css('font-size', '2em').animate(params, 'slow');            $('#price').css('padding-top', '23px').animate({'paddingTop' : '25px'}, 'slow');          }    });  }  recalculateprice();  //--></script>
для select'ов добавляем событие onchange="recalculateprice();"

CONTROLLER - product.php

    public function recalculateprice() {      if ($this->request->server['REQUEST_METHOD'] == 'POST') {			if (isset($this->request->post['option'])) {				$options = $this->request->post['option'];			} else {				$options = array();			}            if (isset($this->request->post['product_id'])) {              $product_id = $this->request->post['product_id'];            } else {              return;            }                  }      $this->load->model('catalog/product');      $product_query = $this->model_catalog_product->getProduct($product_id);      $option_price = 0;      foreach ($options as $product_option_value_id) {        $option_value_query = $this->db->query("SELECT pov.product_option_id, povd.name, pov.price, pov.quantity, pov.subtract, pov.prefix FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "product_option_value_description povd ON (pov.product_option_value_id = povd.product_option_value_id) WHERE pov.product_option_value_id = '" . (int)$product_option_value_id . "' AND pov.product_id = '" . (int)$product_id . "' AND povd.language_id = '" . (int)$this->language->getId() . "' ORDER BY pov.sort_order");        if ($option_value_query->num_rows) {          if ($option_value_query->row['prefix'] == '+') {              $option_price = $option_price + $option_value_query->row['price'];          } elseif ($option_value_query->row['prefix'] == '-') {              $option_price = $option_price - $option_value_query->row['price'];          }        }      }            $price = $this->currency->format($this->tax->calculate($product_query['price'] + $option_price, $product_query['tax_class_id'], $this->config->get('config_tax')));      //код для вывода результата, в виде таблицы для ценнника      $output = ....      ......      $this->response->setOutput($output, $this->config->get('config_compression'));    }
Естественно, я привел лишь основные куски кода, чтобы было понятно принцип.

Можно конечно было сделать изменение цены на стороне клиента, например, добавив атрибут price в тег <option> и выполнять расчет используя javascript, но у меня на это не было времени.

Изменено пользователем afwollis
edit -> save
Ссылка на комментарий
Поделиться на других сайтах


Круто. Спасибо, T-ray. Только, я так понимаю этими двумя кусками кода не ограничивается? Просто программер из меня совсем никакой, только сейчас начал потихоньку вникать в php и JavaScript. Поэтому, если будет не трудно опиши процесс подробнее. Если я вставлю эти два куска кода в файлы, что еще нужно будет сделать? Спасибо.P.S. Кстати прикольный у тебя магазин, в жизни бы не подумал, что на opencart можно реализовать подобное

Ссылка на комментарий
Поделиться на других сайтах


P.S. Кстати прикольный у тебя магазин, в жизни бы не подумал, что на opencart можно реализовать подобное

... значит ты действительно мало что видел !!!!!!!!
  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


Все таки возвращаясь к изначальной проблеме, господа программеры помогите решить задачу. Fix305, взываю к тебе о помощи ;) > Можно конечно было сделать изменение цены на стороне клиента, например, добавив атрибут price в тег и выполнять расчет используя javascript, но у меня на это не было времени.Вот это самый крутой вариант. Кто понимает о чем речь, скажите это слишком трудозатратно? Если да, то я отстану :) Либо как запущу магазин и пойму, что без этого пункта нельзя - закажу эту доработку за деньги. Но если не слишком трудозатратно, то надеюсь на бескорыстную помощь :) Спасибо!

Ссылка на комментарий
Поделиться на других сайтах


Fix305, взываю к тебе о помощи ;)

Сейчас, к сожалению, нету времени - завтра с утра уезжаю на сборы (спортивные), как только чуточку там освоюсь (денек-2) займусь твоей просьбой, если ее, конечно, уже не решат =)
Ссылка на комментарий
Поделиться на других сайтах


Круто. Спасибо, T-ray. Только, я так понимаю этими двумя кусками кода не ограничивается? Просто программер из меня совсем никакой, только сейчас начал потихоньку вникать в php и JavaScript. Поэтому, если будет не трудно опиши процесс подробнее. Если я вставлю эти два куска кода в файлы, что еще нужно будет сделать? Спасибо.P.S. Кстати прикольный у тебя магазин, в жизни бы не подумал, что на opencart можно реализовать подобное

Я могу помочь вам бесплатно доделать вариант, пример кода которого я выкладывал выше.Напишите мне в ICQ, номер я вышлю в ЛС.Если будет время, то сделаю пересчет на клиенте для последней версии движка, но не обещаю. Это будет скорее всего в том случае, если кто-то из моих заказчиков оплатит такую доработку для своего магазина. Пока таких желающих нет. ;)
Ссылка на комментарий
Поделиться на других сайтах


Благодарю, T-ray за то что отозвался! Но все-таки самый оптимальный вариант - пересчет на стороне клиента. Если местный гуру OpenCart Fix305 не справится или у него не будет времени, то постучусь к тебе в асю. А вообще классно, когда есть такие люди на форуме, которые готовы помочь бескорыстно! ;) Спасибо Вам ребята!

Ссылка на комментарий
Поделиться на других сайтах


Благодарю, T-ray за то что отозвался! Но все-таки самый оптимальный вариант - пересчет на стороне клиента. Если местный гуру OpenCart Fix305 не справится или у него не будет времени, то постучусь к тебе в асю. А вообще классно, когда есть такие люди на форуме, которые готовы помочь бескорыстно! :( Спасибо Вам ребята!

Боюсь полностью на стороне клиента не получиться без геморроя, т.к. надо ещё отформатировать цену.На клиенте выкусывать валюту и т.п. - я считаю бред. Валюта может быть и слева и справа, фактически это надо взять класс currency и написать его для клиента на javascript. Может кто-то подскажет другое решение?! Буду признателен. Сейчас у меня уже есть решение под 1.4.8b которое работает так:При изменении значения опции пересчитывается цена на клиенте, затем запрос к серверу чтобы отформатировать значение цены.
Ссылка на комментарий
Поделиться на других сайтах


  • 1 год спустя...

Вот мое решение в отдельной теме, может кого-то устроит:

viewtopic.php?f=21&t=461

пост не существует, может у кого сохранилось решение под 1.4.х

Ссылка на комментарий
Поделиться на других сайтах


  • 2 месяца спустя...
  • 1 год спустя...
  • 1 месяц спустя...
  • 1 год спустя...

а этот https://opencartforum.com/files/file/822-avtomaticheskoe-obnovlenie-tceny-pri-vybore-optc/ чем не устраивает?? также прибавляет к цене опцию

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.