Перейти к содержанию

SFR

Новичок
  • Публикаций

    21
  • Зарегистрирован

  • Посещение

Репутация

2 Обычный

Информация о SFR

  • Звание
    Пользователь
  1. Этот фикс из-за "$address['city']" испортит международную доставку. Для международной доставки достаточно знать страну отправителя, для рассчета через EMS API не указывается регион или город. http://emspost.ru/api/rest/?method=ems.calculate&to=UA&weight=10&type=att лучше считать стоимость для международной доставки после смены страны (а не после указания города и области).
  2. В 2.0.12 неточность в файле simplegeo.php первый найденный if (!isset($geo)) { заменить на if (!$geo) { тк если $geo false, то getGeoIpByMaxMind() не отрабатывает.Отдельное спасибо за changelog!
  3. deeman, А можно где-то вести changelog версий? Модуль хороший, обновляться надо. Но перед каждым обновлением вынуждены смотреть diff, перед заливкой на production. По поводу версии 2.0.11: то что добавлено: class ModelToolSimpleGeo extends Model { static $checked = false; и изменения в методе getGeoIpBySimpleOpenCart() сильно отличаются от предложенного способа по эффективнсоти.Пример первого запроса (когда страна еще не выбрана) В вашем случае: QUERY1!QUERY2!GEOIP!QUERY2!GEOIP! В предложенном случае: QUERY1!QUERY2!GEOIP! (запросы выполняются не более 1 раза и попадают в кэш статической переменной функции)Можете расставить флаги и проверить. Нам вообщем-то не трудно добавлять свой кусок при каждом обновлении модуля, но когда можно сделать "легче" для всех - почему бы не попробовать этого добиться. lewys, Скачайте файл в приложении, залейте на сервер и запустите его напрямую в бразуере (domain.com/test.php). test.php
  4. Спасибо за интересное решение. Правда подходит разве что как временный костыль.Используются модули автоматического рассчета разных способов доставки в страны, и править все модули добавляя trim() не дело, к тому же неизвестно как этот костыль вспоследствии внезапно всплывет)
  5. alexvlii, PHP расширение CURL (curl.so) не включено на хостинге. Надо просить хостера чтобы включили.
  6. lewys, замените файл catalog/model/tool/simplegeo.php тем что в приложении. далее как уже выше сказано, в админке модуля 3 вкладка, настройки полей страна - поставить галочку "использовать определение по IP". и у вас на сервере/хостинге должен быть включен mod_geoip. Это уже к админам/хостерам. simplegeo.php
  7. А, вот оно что, чекбоксы эти пропустил ;) У нас международные доставки. Выкладываю определение страны по GeoIP, думаю еще кому-то пригодится. Вообщем-то если включить в официальный код, модуль так будет более универсальным. Как видно может работать автовыбором с двумя гео ф-циями: - apache_note - через apache mod_geoip, если он установлен. - geoip_record_by_name - это php расширение geoip, если включено. файл catalog/model/tool/simplegeo.php: public function getGeoIp() { static $geo=false; // false, чтобы не null; if (is_array($geo) || is_null($geo)) return $geo; // null отдает $this->cache->get(); если кэша нет; if (!$geo = $this->getGeoIpBySimpleOpenCart()) { $ip = isset($this->request->server['HTTP_X_FORWARDED_FOR']) && $this->request->server['HTTP_X_FORWARDED_FOR'] ? $this->request->server['HTTP_X_FORWARDED_FOR'] : 0; $ip = $ip ? $ip : $this->request->server['REMOTE_ADDR']; if (function_exists('apache_note') && $code = apache_note('GEOIP_COUNTRY_CODE')) { if ($country_id = $this->getCountryIdbyISO($code)) { $geo = array( 'country_id' => $country_id, 'zone_id' => '', 'city' => '', 'postcode' => '', ); } } else if (function_exists('geoip_record_by_name') && $code = geoip_record_by_name($ip)) { if ($country_id = $this->getCountryIdbyISO($code['country_code'])) { $geo = array( 'country_id' => $country_id, 'zone_id' => '', 'city' => '', 'postcode' => '', ); } } } return $geo; } private function getCountryIdbyISO ($iso) { if (!is_string($iso) && strlen($iso) != 2) return false; // RU $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "country WHERE iso_code_2 = '" . $iso . "' AND status = '1'"); if ($query->row) { return $query->row['country_id']; } else return false; } P.S. Из пожеланий для будущих версий, раз модуль такой "user-friendly", возможно ли сделать сортировку стран, чтобы была возможность задать в списке стран самыми первыми страны СНГ, вроде: <option value="176" style="famous">Россия</option> <option value="220" style="famous">Украина</option> <option value="20" style="famous">Белоруссия</option> <option value="13">Австралия</option> <option value="14">Австрия</option> <option value="15">Азербайджан</option Кроме как лезть править движок - не знаю каким образом реализовать, а модуль я так понимаю как раз все фильтрует и по-своему выводит, задавая свои правила.
  8. Отличный модуль, очень сильный функционал. Проблема. Сейчас мучаюсь с Гео, подключаю определение стран на основе mixmind geoip. Проблема в файле simplecheckout_customer.php. Строка: if (!empty($fields_settings['init_geoip']) && $geo = $this->model_tool_simplegeo->getGeoIp()) { возвращает false, конкретно первое условие не выполняется.То есть $fields_settings['init_geoip'] не существует. Хотя $this->model_tool_simplegeo->getGeoIp() отдает нужный массив. Пока заменил на: if ($geo = $this->model_tool_simplegeo->getGeoIp()) { Вопрос откуда берется $fields_settings['init_geoip'] и при каких условиях оно может не существовать? (у меня не существует этой записи в массиве $fields_settings)И в копилку хорошего модуля небольшая оптимизация. Вот эта строчка: if (!empty($fields_settings['init_geoip']) && $geo = $this->model_tool_simplegeo->getGeoIp()) { выполняется за одно "дергание" скрипта много раз. Там первыми строчками в getGeoIpBySimpleOpenCart() - запросы к БД есть.Поэтому в simplegeo.php (метод getGeoIp()) есть смысл добавить статическую переменную. Всего 2 строчки вначале ф-ции избавляют от лишних запросов к БД: public function getGeoIp() { static $geo=false; // изначально false, чтобы не null; if (is_array($geo) || is_null($geo)) return $geo; // null отдает $this->cache->get(); если кэша нет; [...]
  9. Поскольку модуль "Почта России" - единственный на данный момент, а по EMS есть другие модули, можете Почту России отделить в отдельный проект? И кстати если используете github - то можно дополнительно и туда выложить его, тогда желающие могли бы дополнять и исправлять модуль, постоянно его улучшая.
×

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

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