Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

mpn2005

Users
  
  • Posts

    3,222
  • Joined

  • Last visited

Everything posted by mpn2005

  1. Доработка уже на подходе. Можно уже посмотреть демку: http://ocs2101.mpn-oc.org/options_with_quantity_004
  2. Надо строчку: $string .= number_format(round($value, (int)$decimal_place), (int)$decimal_place, $decimal_point, $thousand_point); Замень на: if ($currency == 'BYR') { $value = round($value, -3); } else if ($currency == 'BYN') { $value = round($value, 1); } else { $value = round($value, (int)$decimal_place); } $string .= number_format($value, (int)$decimal_place, $decimal_point, $thousand_point); Как-то так. И если используется модуль обновления цены при выборе опции, то там в скрипте нужно сделать то же самое.
  3. Возьмите скорректированный код ля вывода копеек. Потом в админке поставьте количество знаков после запятой = 0. И должно всё получиться.
  4. Корректировка кода. Допустил пару неточностей на скорую руку. Подправленный код: if ($format && $currency == 'BYN') { $value = round($value, (int)$decimal_place); $rub = floor($value); $cop = round(($value - $rub) * 100); $string = sprintf('%u руб %02u коп', $rub, $cop); }
  5. Дело в том, что в скрипте отображения тоже надо изменить вывод цены. Скиньте в личку доступ на фтп, я поправлю.
  6. Доработал. Возьмите последнюю версию: (NEW) v2.0.5 (01.07.2016) - Если в товаре у опции (Каталог->Товар->Опции) не задано изображение, то оно берётся из опции (Каталог->Опции).
  7. Для вывода рублей с копейками. В файле system/library/currency.php Перед строкой: return $string; Добавляем: if ($format && $currency == 'BYN') { $value = round($value, 2); $rub = floor($value); $cop = (int)(($value - $rub) * 100); $string = sprintf('%u руб %.2u коп', $rub, $cop); }
  8. Тогда лучше обойтись одной правкой. После строки: $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); Добавить строку: $price .= '<br />(' . $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')), 'BYN') . ')'; Но это всё очень коряво: 1) Смените валюту в магазине на BYN и будет две одинаковых цены. 2) Когда уже не надо будет выводить две цены, надо будет облазить все файлы и всё убрать.
  9. Обновление: v3.0.7 (30.06.2016) - Добавлена настройка - "Не умножать на количество". Модуль по умолчанию умножает цену на количество. Все настройки отмечены на скриншоте.
  10. В категории выводится две цены. Но если на сайте используется фильтр, то он будет заменять содержимое категории. Без доступа на фтп и в админку сложно сказать подробнее.
  11. Нужно брать последнюю версию. Если не заработает, то скиньте в личку доступ на фтп и в админку. Помогу запустить.
  12. Если на данном шаблоне модуль не заработает, то проведу адаптацию под данный шаблон. Адптация под шаблон проводится в рамках подержки модуля (без дополнительной оплаты).
  13. В модуль данный функционал точно вносится не будет, т.к. тут много вопросов касательно оформления и используемой темы. Могу реализовать это для конкретного сайта. Если будут вопросы, пишите в личку.
  14. Добрый день. Для доступа к цене модуль добавляет дополнительные теги <span>. Возможно в теме есть стиль на span, который делает его перечёркнутым. Скиньте в личку ссылку на товар.
  15. Это и есть ошибка. По идее должно быть: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { $sql .= " ORDER BY " . $data['sort']; } else { $sql .= " ORDER BY p.date_added"; } А так как написано у вас это не только ошибка, но ещё и уязвимость. Т.к. если в $data['sort'] заинжектить запрос, то не выполнится условие in_array($data['sort'], $sort_data) но выполнится то что в else (а там включение в запрос без экранирования).
  16. И кусок vqmod для устранения обрезания длинных значений в опции. Привожу без сокращений, что бы было видно в каких файлах можно поправить. <file name="catalog/controller/checkout/cart.php"> <operation error="skip"> <search position="replace"><![CDATA[(utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)]]></search> <add><![CDATA[$value]]></add> </operation> </file> <file name="catalog/controller/account/order.php"> <operation error="skip"> <search position="replace"><![CDATA[(utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)]]></search> <add><![CDATA[$value]]></add> </operation> </file> <file name="catalog/controller/module/cart.php"> <operation error="skip"> <search position="replace"><![CDATA[(utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)]]></search> <add><![CDATA[$value]]></add> </operation> </file> <file name="catalog/controller/checkout/cart.php"> <operation error="skip"> <search position="replace"><![CDATA[(utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)]]></search> <add><![CDATA[$value]]></add> </operation> </file> <file name="catalog/controller/checkout/confirm.php"> <operation error="skip"> <search position="replace"><![CDATA[(utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)]]></search> <add><![CDATA[$value]]></add> </operation> </file> <file name="catalog/model/checkout/order.php"> <operation error="skip"> <search position="replace"><![CDATA[(utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)]]></search> <add><![CDATA[$value]]></add> </operation> </file>
  17. Не надо лезть в catalog/controller/checkout/cart.php Всё делается на уровне system/library/cart.php В этот запрос добавить нужный параметр: $option_value_query = $this->db->query("SELECT pov.option_value_id, ovd.name, pov.quantity, pov.subtract, pov.price, pov.price_prefix, pov.points, pov.points_prefix, pov.weight, pov.weight_prefix FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_option_value_id = '" . (int)$option_value . "' AND pov.product_option_id = '" . (int)$product_option_id . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "'"); например optioncod Потом в строке: 'option_value' => $option_value_query->row['name'], Его приклеить: 'option_value' => $option_value_query->row['name'] . (!empty($option_value_query->row['optioncod']) ? '('.$option_value_query->row['optioncod'].')' : ''),
  18. Да. Я тоже несколько раз перечитывал, пока понял на что это похоже. На самом деле мы только предполагаем, а что там на самом деле не установить (по сумбурному описанию). :-)
  19. Люди вы читать умеете? Проблема не связана с истечением срока сессии. Это именно checkout/manual. Этот контроллер используется при редактировании заказа в админке. И корзина пользователя просто при этом процессе очищается. Надо подправить код и сохранить пользовательскую корзину. Про истечения срока сессии есть и оригинальней приколы у хостеров некторых. Это очистка временной папки по крону, при этом все сесии (которые там хранятся по умолчанию) теряются. Помогает сменить папку хранения сессий в htaccess. Но не на всяком хостинге это разрешено.
  20. Нет особо времени просматривать все версии двойки. Там местами ой какие интересные отличия в структуре и коде. Могу посмотреть на конкретно указанную версию, если интересует. И описать, как там этот процесс организован.
  21. Модуль является vqmod дополнением, и не появится в модулях. Если модуль не заработал, то его надо дорабатывать под вашу тему. Сккиньте в личку доступ на фтп и ссылку на товар с опциями, для экспериментов.
  22. И ничего не поменялось? Системный кэш почитили? Можно хоть как-то больше информации. При таком освещении вопроса, вероятность помощи близка к нулю.
  23. Можно попробовать вариант проще. Ориентировался на код ocStore 1.5.5.1.2, но скорее всего и на других версиях 1.5.5.х будет так же. В конце файла перед строкой: $this->customer->logout(); Добавить: unset($this->session->data['cart']); Это предотвратит затирание корзины клиента при логауте. P.S.: И после строки: $this->customer->logout(); Добавить: $this->session->data['cart'] = array();
  24. Приведу решение проблемы на версии 1.5.5.x В файле catalog/controller/checkout/manual.php находим строку: $this->customer->login($customer_info['email'], '', true); После неё добавляем: $cart_save = isset($this->session->data['cart']) ? $this->session->data['cart'] : array(); В конце файла еть блок кода: // Reset everything $this->cart->clear(); $this->customer->logout(); unset($this->session->data['shipping_method']); unset($this->session->data['shipping_methods']); unset($this->session->data['payment_method']); unset($this->session->data['payment_methods']); unset($this->session->data['coupon']); unset($this->session->data['reward']); unset($this->session->data['voucher']); unset($this->session->data['vouchers']); Именно в конце файла. Не в начале. В этом блоке после строки: $this->cart->clear(); Добавляем: if (!empty($cart_save)) { $this->session->data['cart'] = $cart_save; } Нет возможности проверить. Но должно помочь. Напишите, как пройдёт после доработки.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.