v_grin

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

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

v_grin    0

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
T-ray    2

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
cashfile    12

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
T-ray    2

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
v_grin    0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
cashfile    12

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

... значит ты действительно мало что видел !!!!!!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
v_grin    0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Fix305    164

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
T-ray    2

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
v_grin    0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
T-ray    2

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Vjachik    1

Добрый день.

А есть такое решение для версии Open cart 1.5.1?

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
copypaste    2

Присоединяюсь насчет 1.5.1.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Zeppelin    82

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

viewtopic.php?f=21&t=461

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
xcms21    1

Есть ли такое решение для opencart 1.5.1 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dozr    0

И мне нужна такая фича для 1.5.4.1

Кто поможет?

Готов заплатить если нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
seolab    0
Ketty83    14

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

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу