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

Timber

Users
  
  • Posts

    75
  • Joined

  • Last visited

Everything posted by Timber

  1. Это задолго до началось. По моим ощущениям примерно совпало с выходом третьей версии. Это ведь там все эти али- и вичат-пэй добавили? А до этого из занудных помню только одного турка, который афродизиаками и шмотками из латекса торговал. Называл меня бро и выносил мозг всякими идеями, но потом куда-то пропал.
  2. Пишет, что прав у дрома на базу нет
  3. Я вот заметил за последние пару лет другую тенденцию. Если раньше с просьбами о помощи писали относительно грамотные в техническом плане люди (ну как минимум понимающие, как шаблон поправить и т.п.), то теперь идёт какой-то вал китайцев и индусов, которым приходится объяснять, как модификации обновлять. При этом, что самое забавное, если судить по обратным адресам и подписям, это не просто владельцы конечных магазинов, а студии веб-дизайна и екоммерции. Ещё классический вопрос последнее время "я расширение скачал, а инсталятор, говорит, что формат неправильный". И это с учётом того, что архив называется unzip-me-bla-bla-bla.zip. А что касается того, что ставят последнюю версию, то тут как раз всё понятно. По кнопке download она скачивается и чего народу вникать?
  4. Я бы проверил, куда указывает DIR_TEMPLATE . $view . '.twig' И какой template_engine в system/config по-умолчанию стоит.
  5. Опенкарт "из коробки" такого функционала не имеет. Так что если вам не поставили соответствующий модуль, то он будет определять язык в соответствии с предпочтениями браузера. Поменяйте в настройках браузера язык на английский, почистите куки и снова зайдите на сайт. Он должен будет открыться на английском.
  6. Чуть больше года назад ставил себе альфу 3.1, выглядело всё почти готовым. Даже несколько модулей под неё адаптировал. Зашёл вчера посмотреть что и как - всё вообще переделано. Появились неймспейсы, переделана загрузка шаблонизатора, расширения вынесены отдельно, по коду разбросаны комментарии о том, какие идиоты разработчики симфонии. Причём если год назад работало обновление 2.x->3.1, то теперь и это сломано. Так что такими темпами они ещё минимум год 3.1 пилить будут.
  7. можно проверить json, полученный от сервера и если он пустой, то вернуть что-то типа этого return { label: 'Ничего не найдено', value: '' } И ещё один момент. Проверку на стороне контроллера можно использовать в том случае, если значений без патины относительно немного (единичные случаи). Если же их много, то лучше добавить к запросу AND p.patina IS NOT NULL, ну или какое там значение этого поля по-умолчанию (если пустая строка, то проверяйте на неё).
  8. Ну тут зависит от подхода. Лично я стараюсь имеющиеся методы моделей ядра не трогать. Потому как какое-нибудь расширение захочет запрос переписать и развалится всё нафиг. Если что-то нужно, то лучше свой метод написать.
  9. можно и так, но тогда проще свой select написать, тем более всё равно в модель изменения вносятся
  10. Если я правильно понял, что нужно, то сделайте в этом цикле проверку на наличие нужного значения и добавляйте в результирующий json только те записи, которые имеют нужное значение foreach ($results as $result) { $json[] = array( 'product_id' => $result['product_id'], 'name' => strip_tags(html_entity_decode($result['patina'], ENT_QUOTES, 'UTF-8')), 'price' => $result['price'] ); } И зачем вообще дёргать сервер, если в поисковую строку ничего не ввели? Пусть пользователь введёт хотя-бы пару символов и тогда уже можно и к серверу обращаться.
  11. Я посмотрел. Если кроме startap.php больше их нигде не трогают, то так оно и есть. Поэтому и задал уточняющий вопрос.
  12. я примерно с этого и начинал причём, если судить по истории коммитов, пофиксили в октябре 2017. С учётом того, что 3.0.3.6 был в 2020, почему в него не вошёл этот фикс вообще непонятно.
  13. Если они в третьей ветке не поменяли полностью логику работы с кешем, то это два разных кеша. Он опрашивает кеш language, а сохраняет потом в кеш catalog.language У меня хорошо. Вот он полностью (из 3.0.3.6) opencart-3.0.3.6/upload/catalog/model/localisation/language.php <?php class ModelLocalisationLanguage extends Model { public function getLanguage($language_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "language WHERE language_id = '" . (int)$language_id . "'"); return $query->row; } public function getLanguages() { $language_data = $this->cache->get('language'); if (!$language_data) { $language_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "language WHERE status = '1' ORDER BY sort_order, name"); foreach ($query->rows as $result) { $language_data[$result['code']] = array( 'language_id' => $result['language_id'], 'name' => $result['name'], 'code' => $result['code'], 'locale' => $result['locale'], 'image' => $result['image'], 'directory' => $result['directory'], 'sort_order' => $result['sort_order'], 'status' => $result['status'] ); } $this->cache->set('catalog.language', $language_data); } return $language_data; } } Можете на гитхабе посмотреть https://github.com/opencart/opencart/blob/3.0.x.x_Google_Pay/upload/catalog/model/localisation/language.php Вот он же в ocStore ocStore-3.0.2.0/public/catalog/model/localisation/language.php <?php class ModelLocalisationLanguage extends Model { public function getLanguage($language_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "language WHERE language_id = '" . (int)$language_id . "'"); return $query->row; } public function getLanguages() { $language_data = $this->cache->get('language'); if (!$language_data) { $language_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "language WHERE status = '1' ORDER BY sort_order, name"); foreach ($query->rows as $result) { $language_data[$result['code']] = array( 'language_id' => $result['language_id'], 'name' => $result['name'], 'code' => $result['code'], 'locale' => $result['locale'], 'image' => $result['image'], 'directory' => $result['directory'], 'sort_order' => $result['sort_order'], 'status' => $result['status'] ); } $this->cache->set('catalog.language', $language_data); } return $language_data; } }
  14. Правильно я понимаю, что $this->config->get('config_language') это код языка по-умолчанию (из конфига) $this->config->get('config_language_id') это ID языка, который используется сейчас?
  15. Может кому-нибудь пригодится. В Opencart 3.0.2 (может и раньше, но в 3-й ветке) разработчики накосячили с кешированием языков. В catalog/model/localisation/language.php сначала идёт $language_data = $this->cache->get('language'); А потом $this->cache->set('catalog.language', $language_data); То есть для получения списка языков будет каждый раз дёргаться база. Аналогичная фича в админской модели. В ocStore то же самое. Если у кого-то есть желание, может попробовать сделать PR в opencart. У меня с этим [censored] желания общаться нет.
  16. Это вам любая из реализаций SEO PRO подойдёт. Вот только не знаю, есть ли они отдельно для OC3, а не в составе сборок.
  17. Если не планируете внутрь в код лезть, а готовы всё мышкой настраивать, то берите вордпресс. Но его обновлять надо не забывать и платную тему купить придётся. Но если привыкли CSS где-нибудь подправить или шаблон странички, то вордпресс тут явно не для новичка - там сразу возникает желание убить всех, кто вордпресс придумал.
  18. Темы про создание своих библиотек находил, но они все про вторую версию. Соответственно есть пара вопросов про библиотеки третьей версии. 1. Я бегло глянул startup.php, выглядит так, что библиотеки подключаются автоматически из system/library. Так ли это, или нужно дополнительно где-то их объявлять? 2. Доступны ли из моей библиотеки функции других библиотек?
  19. Timber

    Include

    Может кому пригодится. Начиная, как я понимаю, с 3.0.3.5 в опенкарте поменяли загрузчик шаблонов на ArrayLoader, соответственно теперь ничего через include не работает. Исправляется это таким образом: в system/library/template/twig.php меняем $loader = new \Twig\Loader\ArrayLoader(array($filename . '.twig' => $code)); на $loader1 = new \Twig\Loader\ArrayLoader(array($filename . '.twig' => $code)); $loader2 = new \Twig\Loader\FilesystemLoader([DIR_TEMPLATE]); $loader = new \Twig\Loader\ChainLoader([$loader1, $loader2]); ну а дальше в любом шаблоне включаем свой шаблон в виде: {% include 'мой_шаблон/template/partials/breadcrumb.twig' %} Проверено на 3.0.3.6 На гитхабе на эту тему есть пулл-реквест, но Даниэль живёт в своём формате и поэтому ожидать, что это войдёт в релиз не приходится.
  20. Смотря что понимать под серьёзной кастомизацией. Нужно будет сделать модуль типа Total и в нём реализовать такой функционал, либо допилить существующий купонный модуль. Во фронтенде вообще элементарно, а вот в админке мороки немного больше, но не сильно. Главное ТЗ исполнителю корректно описать, ну или показать, как это в Битриксе работает (если их реализация полностью устраивает). У нас похожий функционал для методов оплаты сделан - карточки и Apple/Google Pay есть скидка, а за Пейпал нет.
  21. Если стоит SEO Pro с указанием языка в URL, то достаточно гуглу скормить две ссылки: http://example.com/en/index.php?route=extension/feed/google_sitemap http://example.com/de/index.php?route=extension/feed/google_sitemap Или в 3.0 SEO Pro принципиально поменялся и больше он переключать язык через URL не умеет?
  22. Для opencart 2.0-2.3 1. Открываем template/information/contact.tpl и добавляем скрытое поле в форму. Место, куда добавлять и название поля не принципиальны. Я его поставил после поля name. <input type="text" name="lastname" value="" hidden> 2. Открываем catalog/controller/information/contact.php и там к коду от $mail = new Mail(); до $mail->send(); применяем условие if (!$this->request->post['lastname']). То есть должен получиться такой код: $this->document->setTitle($this->language->get('heading_title')); if (!$this->request->post['lastname']) { $mail = new Mail(); ...... $mail->send(); } $this->response->redirect($this->url->link('information/contact/success')); Для opencart 3.0 аналогично, только там будет шаблон contact.twig
  23. Может кому пригодится. Меня левые пользователи в форме обратной связи задолбали, причём включение встроенной капчи не особо помогло. Я добавил скрытое поле в форму и теперь проверяю его. Если оно заполнено, то просто выдаю страничку "спасибо". Теперь никакой лишней почты нет. В форме регистрации есть поле факс. Все фейковые пользователи его заполняют, можно проверку прямо по нему делать.
  24. соответственно получается, что с тем, что выводит модуль проблем нет. Это ваш конфиг? Я в апачах не силён, но в моём понимании переход на sitemap.xml как раз вызывает index.php?route=extension/feed/google_sitemap То есть, в принципе, вы добились того, чего хотели. Ну а то, что гугл не может прочитать index.php?route=extension/feed/google_sitemap можно списать на сбой в гугле. Может потом прочухается.
×
×
  • 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.