Jump to content

Timber

Новичок
  • Content Count

    47
  • Joined

  • Last visited

 Content Type 

Profiles

Forums

Downloads

Статьи

История версий

Store

Blogs

Downloads Plus Support

module__dplus_manager

Everything posted by Timber

  1. Хочу в своём модуле немного изменить логику многоязычного SEO и переключать язык в том случае, если пользователь зашёл на URL другого языка. Думаю сделать это таким образом: $this->session->data['language'] = $language_code; $this->config->set('config_language_id', $language_id); $this->config->set('config_language', $language_code); $language = new Language($language_code); $language->load($language_code); $this->registry->set('language', $language); Ничего не забыл, или стоит ещё языковую куку переустановить?
  2. У меня такое ощущение, что он сам уже не знает, когда и какую версию он выпускает. На гите сейчас 3.1.0.0b, при загрузке экстеншена можно выбрать 3.0.3.0b. Судя по комментам на гите, он активно принялся bootstrap 4 прикручивать. Сколько это времени займёт и когда при таких раскладах что-то стабильное ждать - вообще непонятно.
  3. Я про последнюю активность на гитхабе по этим файлам.
  4. Факт. Но в startup.php так и осталось // Language Cookie if (isset($this->request->cookie['language']) && array_key_exists($this->request->cookie['language'], $language_codes)) { $code = $this->request->cookie['language']; } // Language Detection if (!$code && !empty($this->request->server['HTTP_ACCEPT_LANGUAGE'])) { И судя по тому, что все языковые вещи менялись пару недель назад, то в релизе всё так и будет. И получается, что, например, пользователь раньше был на сайте и у него в куках установлен русский. Потом он пришёл по англоязычной ссылке (из поиска, фейсбука или ещё откуда-нибудь) и вместо того, чтобы ему открыть оригинальную английскую страницу, переключить язык или показать русскую, он будет отправлен на страницу ошибки 404. Или я что-то недопонимаю?
  5. Смотрю на seo_url.php от текущей разработки. Там присутствует вот такой запрос: foreach ($parts as $part) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE keyword = '" . $this->db->escape($part) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); ........ } else { $this->request->get['route'] = 'error/not_found'; break; } } Зачем по корректному запросу, но на другом языке, отправлять пользователя на 404? Или в 3.1 язык в куках не сохраняется и убрана установка языка по браузерному lang? А вот идея с таблицей seo_regex хорошая. Давно надо было так сделать.
  6. А версия опенкарта какая? Если 2.2.0, то там баг в SSL. В новом релизе обещают исправить.
  7. А он потом на этапе разбора XML не посыпется? Хотя, вроде как, не должен - это при инициализации класса задаётся. Но вот в документации https://github.com/opencart/opencart/wiki/Modification-System эта строка присутствует. <?xml version="1.0" encoding="utf-8"?> <modification> <name>Modification Default</name> <version>1.0</version> <author>OpenCart Ltd</author> <link>http://www.opencart.com</link> <file path="catalog/controller/common/home.php"> <operation> <search><![CDATA[ $data['column_left'] = $this->load->controller('common/column_left'); ]]></search> <add position="replace"><![CDATA[ test123 ]]></add> </operation> </file> </modification> И другие файлы с этой строкой грузятся.
  8. Есть у меня небольшой модуль, который я выложил в общий доступ. В составе этого модуля есть файл ocmod. У одного из скачавших, при попытке загрузки модификации (практически сразу, после нажатия на кнопку Upload) opencart выдаёт окошко с надписью "Error undefined". Пробовал другие окмоды - грузятся без проблем. Пробовал переименовывать файл, та же самая история. В логах опенкарта ошибок нет. При этом предыдущая версия этого же окмода раньше была поставлена без проблем, но сейчас при попытке загрузки выдаётся такая же ошибка. Если этот же файл положить в корень system, то опенкарт его подхватывает и проделывает все необходимые модификации. В какую сторону имеет смысл копать? Opencart 2.1.0.1 английский, веб-сервер Апач на шаред хостинге.
  9. Я к тому, что баг нехороший. Если оплата карточкой, то оплата физически проходит, а пользователь остаётся на форме ввода данных карточки. В итоге может начать повторно оплачивать. А про то, с чем это связано, понятно, что пользователь не догадается.
  10. У покупателя это проявляется в том, что оплата прошла, а финального сообщения от магазина он не видит. Хотя, как я подозреваю, многие пейпалом платят, а там в любом случае сначала получаешь результат от пейпала, а потом редирект в магазин. Если на этом этапе что-то сломалось, то не так и страшно, тем более письмо от пейпала всё равно приходит. А историю изменений посмотрю, спасибо за идею.
  11. В итоге во 2-й версии и exit остался и trigger_error. Странно, что никто в массовом порядке на эту ошибку не жалуется. Всё-таки smtp почта довольно популярна последнее время стала. Я, в итоге, пошёл по пути 1.
  12. Если картинок реально много, то я бы напустил на каталог картинок небольшой скрипт, который бы убрал пробелы в названиях и транслитерировал картинки. А потом по тому же алгоритму картинки в базе данных бы переименовал.
  13. Нашёл обсуждение этой проблемы в 2013 году. Причём ДК пометил его как исправленное, но, похоже, что-то пошло не так, поскольку во второй версии проблему подняли снова :-) Хорошо хоть, что проблему отловил на тестовом сайте, когда модуль оплаты по карточкам настраивал.
  14. Имеет смысл ещё отключить отображение ошибок, чтобы посетителей не пугать :-) Как это сделать в вашем случае спросите у хостера.
  15. При чекауте, после успешного прохождения оплаты вызывается метод $this->model_checkout_order->addOrderHistory, который, среди всего прочего, отправляет письма заказчику и администратору. В том случае, если используется php mail, то никаких проблем нет. А вот отправка почты через SMTP выглядит таким образом (system/library/mail.php) if (!$handle) { trigger_error('Error: ' . $errstr . ' (' . $errno . ')'); exit(); } И так после любой ошибки. Соответственно, если возникает ошибка при оплате почты, выполнение прерывается и пользователь остаётся на странице оплаты, в лучшем случае с заблокированной кнопкой "оплатить". Вижу два варианта решения: 1. Заменить все exit() на return с записью в лог. Но в этом случае придётся менять файлы ядра, что ни есть хорошо. 2. Настроить sendmail на работу через SMTP релей. Но тоже как-то вариант не особо нравится. Кто как решает эту проблему?
  16. Я вот тоже в эту сторону думаю. Хотя, конечно, буквально пару строк поменять в ModelExtensionModule и module_id у нас в кармане.
  17. Так я в первом сообщении написал. Просто может не совсем понятно :-) . Получить module_id этого модуля во фронт-энде сайта (на витрине). В контроллере. А админке, если это не новый модуль, он в гет-запросе передаётся.
  18. Я тоже так подумал. Оказалось, что нет. "Умные" архитекторы сделали такую вещь в catalog/model/extension/module.php class ModelExtensionModule extends Model { public function getModule($module_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "module WHERE module_id = '" . (int)$module_id . "'"); if ($query->row) { return json_decode($query->row['setting'], true); } else { return array(); } } }В итоге передаётся только содержимое setting из oc_module
  19. Есть ли какой-либо строенный в opencart метод для получения module_id в модуле? Я поначалу думал, что он должен в массиве $setting передаваться, но, как оказалось, нет. Просто хочется вывод этого модуля закешировать и module_id идеально бы для этой цели подошёл.
  20. Это баг опенкарта. Можно либо весь сайт редиректить на SSL, либо прописать правила для определённых URL (типа личного кабинета и т.п.)
  21. Может быть дурацкий вопрос, но зачем в индексе собственного сео-контроллера мы делаем addRewrite? Он же отвечает за преобразование ссылок в красивый вид, а в индексе мы как раз делаем обратную операцию - приводим "красивый урл" в вид route&keys. И вопрос про добавление rewrite. Он у меня сделан в отдельном классе и в своих модулях я его добавляю следующим образом: require_once(DIR_APPLICATION . 'controller/catalog/my_seo.php'); $myseo = new ControllerCatalogMySeo($this->registry); $this->url->addRewrite($myseo); Это правильно?
  22. Спасибо. Было у меня такое подозрение, что через схемы этот контроллер надо добавлять. Но как-то совсем нелогично (по крайней мере для меня) это выглядело :-) Тогда, пожалуй, сделаю с переименованием оригинального контроллера и буду ждать, пока разработчики хук, аналогичный rewrite в обработчик ошибок или разбор сео добавят. Вот только непонятно, почему это изначально было не сделать.
  23. А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки"
×

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.