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

Timber

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

    75
  • З нами

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

Повідомлення, опубліковані користувачем Timber

  1. 56 минут назад, Vladzimir сказал:

    Карантин резко увеличил рынок е-коммерца.

     

    Это задолго до началось. По моим ощущениям примерно совпало с выходом третьей версии. Это ведь там все эти али- и вичат-пэй добавили?

    А до этого из занудных помню только одного турка, который афродизиаками и шмотками из латекса торговал. Называл меня бро и выносил мозг всякими идеями, но потом куда-то пропал.

  2. Я вот заметил за последние пару лет другую тенденцию. Если раньше с просьбами о помощи писали относительно грамотные в техническом плане люди (ну как минимум понимающие, как шаблон поправить и т.п.), то теперь идёт какой-то вал китайцев и индусов, которым приходится объяснять, как модификации обновлять. При этом, что самое забавное, если судить по обратным адресам и подписям, это не просто владельцы конечных магазинов, а студии веб-дизайна и екоммерции. Ещё классический вопрос последнее время "я расширение скачал, а инсталятор, говорит, что формат неправильный". И это с учётом того, что архив называется unzip-me-bla-bla-bla.zip.

     

    А что касается того, что ставят последнюю версию, то тут как раз всё понятно. По кнопке download она скачивается и чего народу вникать?

    • +1 1
  3. 34 минуты назад, umbrello сказал:

    Мультиязычные сайты на Опенкарт обычно открываются на языке той страны с IP адреса которой сайт открывает пользователь, при условии что этот язык  локализован на сайте наряду с другими.

     

    Опенкарт "из коробки" такого функционала не имеет. Так что если вам не поставили соответствующий модуль, то он будет определять язык в соответствии с предпочтениями браузера. Поменяйте в настройках браузера язык на английский, почистите куки и снова зайдите на сайт. Он должен будет открыться на английском.

  4. 22 часа назад, Vladzimir сказал:

    Вот и используй после этого третью версию опенкарта.

    Правильнов свое время говорили умные люди - дождитесь хотя бы 3.1

     

    Чуть больше года назад ставил себе альфу 3.1, выглядело всё почти готовым. Даже несколько модулей под неё адаптировал. Зашёл вчера посмотреть что и как - всё вообще переделано. Появились неймспейсы, переделана загрузка шаблонизатора, расширения вынесены отдельно, по коду разбросаны комментарии о том, какие идиоты разработчики симфонии. Причём если год назад работало обновление 2.x->3.1, то теперь и это сломано. Так что такими темпами они ещё минимум год 3.1 пилить будут.

  5. 2 часа назад, nash сказал:

    сделал проверку... а как вывести "Ничего не найдено"? 

     

    можно проверить json, полученный от сервера и если он пустой, то вернуть что-то типа этого

    return {
        label: 'Ничего не найдено',
        value: ''
    }

    И ещё один момент. Проверку на стороне контроллера можно использовать в том случае, если значений без патины относительно немного (единичные случаи). Если же их много, то лучше добавить к запросу AND p.patina IS NOT NULL, ну или какое там значение этого поля по-умолчанию (если пустая строка, то проверяйте на неё).

  6. 3 часа назад, openprice сказал:

    Не можно, а нужно.

     

    Ну тут зависит от подхода. Лично я стараюсь имеющиеся методы моделей ядра не трогать. Потому как какое-нибудь расширение захочет запрос переписать и развалится всё нафиг. Если что-то нужно, то лучше свой метод написать.

  7. 3 минуты назад, openprice сказал:

    Думаю, это подсказка вам поможет

    https://stackoverflow.com/questions/5285448/mysql-select-only-not-null-values#5285461

     

    можно и так, но тогда проще свой select написать, тем более всё равно в модель изменения вносятся

  8. Если я правильно понял, что нужно, то сделайте в этом цикле проверку на наличие нужного значения и добавляйте в результирующий 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']
    	);
    }
    		

    И зачем вообще дёргать сервер, если в поисковую строку ничего не ввели? Пусть пользователь введёт хотя-бы пару символов и тогда уже можно и к серверу обращаться.

    • +1 1
  9. 3 минуты назад, Vladzimir сказал:

    Так с этого и надо было начинать.

     

    я примерно с этого и начинал

     

    4 минуты назад, Vladzimir сказал:

    Хотя на гитхабе уже пофиксили, а вот в релизах да, именно так.

     

    причём, если судить по истории коммитов, пофиксили в октябре 2017. С учётом того, что 3.0.3.6 был в 2020, почему в него не вошёл этот фикс вообще непонятно.

    • +1 1
  10. 2 минуты назад, Yoda сказал:

    А потом он сохраняется в тот же кеш, вроде все логично, нет?

     

    Если они в третьей ветке не поменяли полностью логику работы с кешем, то это два разных кеша. Он опрашивает кеш language, а сохраняет потом в кеш catalog.language

     

    9 минут назад, Vladzimir сказал:

    У вас плохо со зрением?

     

    У меня хорошо. Вот он полностью (из 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;
    	}
    }

     

     

    • +1 1
  11. Может кому-нибудь пригодится. В 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] желания общаться нет.

     

  12. В 12.10.2020 в 12:04, degorych сказал:

    Есть задача по добавлению кода языка в урл, например, если пользователь выбирает английский язык, то урл должен быть вида http://my.site/en/category/product. Если Пользователь на языке по-умолчанию, то код не добавляется.

     

    Это вам любая из реализаций SEO PRO подойдёт. Вот только не знаю, есть ли они отдельно для OC3, а не в составе сборок.

  13. Если не планируете внутрь в код лезть, а готовы всё мышкой настраивать, то берите вордпресс. Но его обновлять надо не забывать и платную тему купить придётся.

    Но если привыкли CSS где-нибудь подправить или шаблон странички, то вордпресс тут явно не для новичка - там сразу возникает желание убить всех, кто вордпресс придумал.

  14. Темы про создание своих библиотек находил, но они все про вторую версию.

     

    Соответственно есть пара вопросов про библиотеки третьей версии.

     

    1. Я бегло глянул startup.php, выглядит так, что библиотеки подключаются автоматически из system/library. Так ли это, или нужно дополнительно где-то их объявлять?

     

    2. Доступны ли из моей библиотеки функции других библиотек?

  15. Может кому пригодится.

     

    Начиная, как я понимаю, с 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

     

    На гитхабе на эту тему есть пулл-реквест, но Даниэль живёт в своём формате и поэтому ожидать, что это войдёт в релиз не приходится.

    • +1 3
  16. 59 минут назад, Antonio54 сказал:

    Возможен ли такой функционал без серьезной кастомизации?

     

    Смотря что понимать под серьёзной кастомизацией. Нужно будет сделать модуль типа Total и в нём реализовать такой функционал, либо допилить существующий купонный модуль. Во фронтенде вообще элементарно, а вот в админке мороки немного больше, но не сильно. Главное ТЗ исполнителю корректно описать, ну или показать, как это в Битриксе работает (если их реализация полностью устраивает).

     

    У нас похожий функционал для методов оплаты сделан - карточки и Apple/Google Pay есть скидка, а за Пейпал нет.

  17.  

    В 24.12.2018 в 17:27, Halonest сказал:

    Штатный модуль Google Sitemap создает карту сайта только для основного языка.

     

    Если стоит 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 не умеет?

  18. В 03.07.2020 в 22:34, chriscustom сказал:

    Если Вас не затруднит, можно более подробнее, чтобы новичку это было по силам сделать? Или это не реально для не особо разбирающегося в этом деле?

     

    Для 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

  19. Может кому пригодится. Меня левые пользователи в форме обратной связи задолбали, причём включение встроенной капчи не особо помогло. Я добавил скрытое поле в форму и теперь проверяю его. Если оно заполнено, то просто выдаю страничку "спасибо". Теперь никакой лишней почты нет.

     

    В форме регистрации есть поле факс. Все фейковые пользователи его заполняют, можно проверку прямо по нему делать.

  20. 17 минут назад, Dimusik сказал:

    сделал как вы сказали, прошло всё успешно проблем нет!!!файл гугл сьел УСПЕШНО

     

    соответственно получается, что с тем, что выводит модуль проблем нет.

     

    27 минут назад, Dimusik сказал:

     

    Вот всё есть вроде

    chrome_2019-12-24_13-53-44.png

     

    Это ваш конфиг? Я в апачах не силён, но в моём понимании переход на sitemap.xml как раз вызывает index.php?route=extension/feed/google_sitemap

     

    То есть, в принципе, вы добились того, чего хотели. Ну а то, что гугл не может прочитать index.php?route=extension/feed/google_sitemap можно списать на сбой в гугле. Может потом прочухается.


×
×
  • Створити...

Important Information

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