COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

BuslikDrev

Соучастники
  • Публикации

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

  • Посещение

  • Days Won

    127

Все публикации пользователя BuslikDrev

  1. https://github.com/opencart/opencart/blob/3.0.3.1/upload/catalog/controller/information/contact.php Это: $mail->setFrom($this->config->get('config_email')); Заменить на: $mail->setFrom($this->request->post['email']);
  2. У вас иконки с повторами, точный список и сравнить с вашим можно здесь: Заодно можете доработать добавление класса для анимации иконки, масштаба и поворота.
  3. ИЗОБРАЖЕНИЯ ИНФОРМАЦИЯ Название модуля: Голосовой поиск - "Voice search"Версия модуля: 1.0Тип лицензии: Full (полная версия)Тип установки: ocmodЯзык: Беларуская мова, English, Русский язык, Українська моваДата создания: 1.04.2021 Был протестирован на: OpenCart.cms 2.1.0.2.2 и OpenCart.pro 2.3.0.2.6 шаблон (default)Название архива: Voice search v1.0 Full OpenCart 2.X-3.1.X.zip ОБЛАДАТЕЛЯМ OpenCart.pro 2.x СКИДКА 20% для получения скидки обратитесь к Admin ДЕМОНСТРАЦИЯ ОПИСАНИЕ Модуль предназначен для возможности задавать текст для поиска своим голосом, после распознавания речи модуль введёт слово и нажмёт на кнопку поиска. Вывести кнопку звукозаписи можно для любого поля input в неограниченном количестве, как настроить смотрите FAQ ниже. Используется эта технология: https://developer.mozilla.org/ru/docs/Web/API/Web_Speech_API/Using_the_Web_Speech_API Модуль хорошо сочетается с PWA и можно его загружать даже асинхронно т.к. написан на чистом javascript. ВНИМАНИЕ! Оригинальные файлы магазина не заменяет! Нужен настроенный https протокол. Модификатор "вносит изменения" в следующие файлы: УСЛОВИЯ СОГЛАШЕНИЯ- Beta версии устанавливаете на свой страх и риск - бэкап базы данных (далее - БД) обязателен; - Модуль (модификатор, дополнение, расширение, приложение) (далее - Модуль) можно устанавливать на 1 домен включая поддомены (одна покупка - один домен); - Редактировать код можно только под нужды своего магазина; - Распространение модуля запрещено; - Техническая поддержка (далее - ТП) осуществляется только при появлении ошибки, бага, глюка (зависания) и не совместимости модуля с заявленными версиями Opencart и шаблонов на момент продажи, при установке на боевой сайт (рабочий хостинг); - Адаптация модуля под другую версию Опенкарта, нестандартный шаблон и сторонние модули - платная; - Автор модуля оставляет за собой право в любое время внести изменение в настоящее условие, описание и исходный код модуля; - Автор модуля оставляет за собой право прекратить ТП пользователям по истечению 365 календарных дней со дня последнего обновления модуля (Full или Beta версии), или со дня окончания продления ТП, или при форс-мажорных обстоятельств; - Автор не несёт ответственности за потерю или находку дохода пользователя из-за работы модуля; - ТП осуществляется при условии соблюдения данного соглашения, пишите в личные сообщения. Приобрести модуль можно ЗДЕСЬ! Вопросы и пожелания можно задавать в данной теме. FAQ Внимание этот комментарий в будущем будет изменяться. События для исполнения вашего кода, когда модуль загружен window.addEventListener('busVoiceSearchBefore', function(e) { console.log('busVoiceSearch - запущен, можно установить своё условие запуска переопределив настройки модуля: ', busVoiceSearch.setting); }); window.addEventListener('busVoiceSearch', function(e) { console.log('busVoiceSearch - запущен и пройдена проверка, значит можем использовать функции busVoiceSearch: ', window.busVoiceSearch); }); window.addEventListener('busVoiceSearchAfter', function(e) { console.log('busVoiceSearch - запущен и пройдена проверка, а также выполнен код и возможно асинхронный код ещё выпоняется'); }); Список данных для настроек модуля (данные можно получить и через событие busVoiceSearchBefore переопределить): busVoiceSearch.setting['lang-browser'] - получать язык браузера, а не сайта. По умолчанию отключено busVoiceSearch.setting['lang'] - код языка получаемый из тега html, если нету, то из куков или браузера busVoiceSearch.setting['lg'] - статус для размера экрана > 1200px busVoiceSearch.setting['md'] - статус для размера экрана >= 992px и <= 1199px busVoiceSearch.setting['sm'] - статус для размера экрана >= 768px и <= 991px busVoiceSearch.setting['xs'] - статус для размера экрана < 768px busVoiceSearch.setting['col'] - показывает какой размер экрана сейчас: lg - > 1200px md - >= 992px и <= 1199px sm - >= 768px и <= 991px xs - < 768px busVoiceSearch.setting['ids'] - массив селекторов для поиска и привязки к html коду, подсчёт id начинается от нуля. По умолчанию это поле поиска, и массив такой: ['header input[name="search"]']. Поиск производится через document.querySelector(selectors) busVoiceSearch.setting['button'] - функция для возможности изменить кнопку голосового поиска и её установку относительно элементу найденного по прописанному селектору в настройках ids. Функция получает такие данные, как element (результат document.querySelector), id (порядковый номер селекторов массива ids), selector (входные данные селекторов массива ids) Пример функции по умолчанию: busVoiceSearch.setting['button-html-on'] - html код или текст на который будет заменятся new_element.innerHTML = '<i class="fa fa-microphone"></i>'; когда началась запись звука. По умолчанию <i class="fa fa-circle"></i> busVoiceSearch.setting['button-html-off'] - html код или текст на который будет заменятся new_element.innerHTML = '<i class="fa fa-microphone"></i>'; когда браузером запрещено использование микрофона. По умолчанию <i class="fa fa-microphone-slash"></i> busVoiceSearch.setting['debug'] - дебаг режим, включает в разных местах модуля функцию console.log и выводит данные результатов событий или функций. По умолчанию отключено Пример настройки кнопки для моего сайта с помощью модуля opencart аналитики: <script><!-- // запускаем модуль для нужных нам экранов, например, только для мобильных window.addEventListener('busVoiceSearchBefore', function(e) { busVoiceSearch.setting['lg'] = false; busVoiceSearch.setting['md'] = false; busVoiceSearch.setting['sm'] = false; }); // устанавливаем свою кнопку в нужное нам место window.addEventListener('busVoiceSearch', function(e) { busVoiceSearch.setting['ids'] = ['header input[name="search"]', 'main [class*="blog-search"] input[name="search"]']; busVoiceSearch.setting['button'] = function(element, id, selector) { if (id || selector == 'header input[name="search"]') { var new_element = document.createElement('span'); //new_element.id = 'bus-voice-search-' + id; new_element.innerHTML = '<i class="fa fa-microphone"></i>'; new_element.style['position'] = 'absolute'; new_element.style['padding'] = '10px'; new_element.style['right'] = '20%'; new_element.style['cursor'] = 'pointer'; new_element.style['color'] = 'black'; new_element.style['z-index'] = 2; element.parentNode.insertBefore(new_element, element.nextSibling); } return [element, new_element]; }; }); //--></script> Готовые примеры настроек: ШАБЛОН UNISHOP2 <script><!-- // запускаем модуль для нужных нам экранов, например, только для мобильных window.addEventListener('busVoiceSearchBefore', function(e) { //busVoiceSearch.setting['lg'] = false; //busVoiceSearch.setting['md'] = false; //busVoiceSearch.setting['sm'] = false; }); // устанавливаем свою кнопку в нужное нам место window.addEventListener('busVoiceSearch', function(e) { busVoiceSearch.setting['ids'] = ['header input[name="search"]']; busVoiceSearch.setting['button'] = function(element, id, selector) { if (id || selector == 'header input[name="search"]') { var new_element = document.createElement('span'); new_element.id = 'bus-voice-search-' + id; new_element.innerHTML = '<i class="fa fa-microphone"></i>'; new_element.style['position'] = 'absolute'; new_element.style['padding'] = '8px'; new_element.style['right'] = '30px'; new_element.style['cursor'] = 'pointer'; new_element.style['color'] = 'black'; new_element.style['z-index'] = 2; element.parentNode.insertBefore(new_element, element.nextSibling); } return [element, new_element]; }; }); //--></script>
  4. Заедает кнопка ТАБ на вашей клавиатуре?
  5. А если с оптимизацией, то в header из контроллера можно отправить всё, что угодно: $data['header'] = $this->load->controller('common/header', $data); Только в хеадере нужно сделать так: public function index($setting) { И тогда: if (isset($setting['heading_title'])) { $data['heading_title'] = $setting['heading_title']; } else { $data['heading_title'] = $this->language->get('text_error'); }
  6. Модуль обновлён до v1.2! ЧТО НОВОГО В ОБНОВЛЕНИИ - универсально убирает циклические ссылки везде; - добавляет к изображениям атрибуты ширины и высоты (к тем изображениям которые генерируются OpenCart);
  7. Попробуйте просто отключить ненужный язык.
  8. Попытка удаления файла которого не существует. Попробуйте system/library/cache/file.php Это: if (file_exists($file)) { unlink($file); } Заменить на: if (is_file($file) && !@unlink($file)) { clearstatcache(false, $file); }
  9. Тот сервис описывает как решить и именно для сео описано, и оно у демки аж 92 из 100.
  10. Вот поддержка php7 кроме турбокэша
  11. Пишите автору модуля A-Migration, пусть адаптирует его под ocStore 3, либо вручную через phpmyadmin делайте.
  12. Для решения проблем есть автор. И такая ошибка не раз обсуждалась на этом форуме.
  13. Или отсюда вырежьте этот модуль:
  14. Скорее нет. Администрация не заинтересована.
  15. Только за деньги: https://opencartforum.com/files/file/8597-lechenie-virusov-udalenie-shellov/
  16. system/library/image.php заменить 85 на 100 и очистить кэш изображений.
  17. Убрать изменение размера изображений через стили. Убрать изменение качества изображений при ресайзе jpeg opencart
  18. Сменить хостинг (хостера) раз он не может помочь в объяснении или нанять программиста который выяснит почему так и решит.
  19. Я вам не запрещаю, для того он и в открытом доступе.
  20. 2) модуль куплен? 4) для мобильных устройств можно и не добиться 60+ оценки.
  21. Что перенести? Подкатегорию? Просто подкатегорию в связях удаляете в категории которая выше этой подкатегории, и устанавливаете подкатегорию в связях нужной вам категории и чистите кэш.