Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

mpn2005

Користувачі
  
  • Публікації

    3 222
  • З нами

  • Відвідування

Усі публікації користувача 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; } Нет возможности проверить. Но должно помочь. Напишите, как пройдёт после доработки.
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.