Кто знает как в OpenCart сделать так, чтобы выводился определенный метод оплаты при выборе определенного варианта доставки? Например чтобы метод оплаты наложенным платежом выводился только при выборе варианта доставки Новой Почтой? Желательно без установки модуля Simple.
Есть простой хак. Например, если вы хотите включить Оплату при доставке (COD), когда выбрана "бесплатная доставка", можете добавить в файл оплаты: 1. Файл: catalog/model/payment/cod.php 2. Найти: $method_data = array( 'id' => 'cod', 'title' => $this->language->get('text_title'), 'sort_order' => $this->config->get('cod_sort_order') ); 3. После добавить: // Если бесплатная доставка выбрана, закрывает все другие модули оплаты. if ($this->session->data['shipping_method']['id'] == 'free.free') { $this->session->data['payment_method'] = $method_data; $this->session->data['comment'] = ''; $this->response->redirect($this->url->https('checkout/confirm')); } Аналогично и с другими
Спасибо за наводку, но это решение уже не работает в версиях 1.5.x. Для новых версий пока нашел только такое решение: http://forum.opencart.com/viewtopic.php?f=22&t=48875&p=235734#p235734, только не могу понять как в этом коде сделать не "ложь" при выборе варианта доставки, а правду, чтобы в остальных вариантах не выводился заданный метод оплаты
Пропишите просто этот код в тех файлах оплаты, которые не нужны при выборе определенного варианта доставки. Например, при выборе бесплатной доставки (free.free), нужно выводить только 1 вариант оплаты, тогда вставьте этот код во все, кроме этого 1, включенные файлы оплат catalog/model/payment/файлы_оплат.php : if (isset($this->session->data['shipping_method']['code']) && $this->session->data['shipping_method']['code'] == 'free.free') { $status = false; }
Решил задачу таким способом (вместо "ocu_ukrposhta.0", "ocu_ukrposhta.1", "ocu_ukrposhta.2" нужно ставить id тех методов доставки при которых не нужно выводить метод оплаты при получении) http://www.mediafire.com/download.php?wffq9gn1wkzcgv4
Ссылка битая --- добавлено: 8 фев 2013 в 12:44 --- Еще модуль появился Restrict Payments By Shipping $20