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

100napb

Users
  
  • Posts

    423
  • Joined

  • Last visited

Everything posted by 100napb

  1. Здравствуйте, уважаемый автор! Вопрос по функционалу lazy load в джет кэше. Есть какая-либо штатная или не очень возможность лениво грузить картинки, прописанные в css, типа background-image: url("bla-bla") ?
  2. может быть, все-таки, все дело в статусах заказа?
  3. Здравствуйте! Ключевые слова Вашей проблемы: this message does not have authentication. Иными словами, сообщения не имеют нужных подтверждений \ достоверной информации о своем отправителе. Вот Вам и дают "отлуп", обоснованно считая мусорными такие сообщения. Вероятно, у Вас свой VPS сервер, верно? Так же, вероятно, Вы пытаетесь отправлять письма с почтового ящика на том же домене, что и Ваш интернет-магазин\сайт? Не через ящик стороннего почтового сервиса (мэйлсру или там жимейл)? Если все верно + Вы именно так и хотите (отправлять с ящика с доменным именем как у сайта, а не с [email protected]), то либо гуглите и делаете: 1. PTR запись. Она же Reverse DNS. Вероятнее всего, её Вам сможет прописать только хостер. 2. Нужную SPF запись в доменной зоне. 3. DKIM-подпись всех сообщений (крайне желательно). 4. Настройка MTA Postfix (судя по логам, именно он у Вас с сервера почту отправляет). Хотя бы банально что бы open relay не было для всего интернета. 5. DMARC (не обязательно) 6. Яндекс ПДД (почта для домена). Или у мейл ру есть похожий и так же бесплатный функционал. Или ящик у хостера. Либо наймите спеца, кто это настроит корректную доставку почты за Вас.
  4. маловато информации, конечно.... предположим, что у Вас SeoPro и необходимо затронуть урлы только товары и категорий. Если надо вообще все урлы, то запрос будет чуть другим - строчку с where нужно убрать. -- сначала выполни селект и просмотри результаты. SELECT CONCAT(oua.keyword, '_777') FROM oc_url_alias oua WHERE oua.query LIKE 'product_id%' OR oua.query LIKE 'category_id%' -- если результаты селекта устраивют, смело выполняй апдейт ниже UPDATE oc_url_alias oua SET oua.keyword = CONCAT(oua.keyword, '_777') WHERE oua.query LIKE 'product_id%' OR oua.query LIKE 'category_id%';
  5. очепятка же, нет? у меня такой же локейшн и работает на ура. location = /sitemap.xml { rewrite ^(.*)$ /index.php?route=extension/feed/google_sitemap break; } P.S.: пока игрался с конфигами в попытка повторить вашу траблу заметил, что файлик-то может запросто кешироваться браузером. Обратите внимание, что кеш в браузере пуст. Например, выключите на время проверки в консоли, как на скрине)
  6. Ну так ошибка ошибке рознь... тем более - 500тая. Гляньте хоть, что Вам веб-сервер в логах пишет. Без этой информации никаких выводов постороннему человеку не сделать. Тем не менее, я не поленился и создал триггер с Вашим кодом. Работает на отличненько и ошибок нет никаких Так что Вы молодец, в каком-то смысле )) Единственное, что приходит в голову - триггер создан\запускается из-под некорректного пользоваеля mysql. Из-под рута, например. Пересоздайте триггер для нужного пользователя - для того, что указан у Вас в файлах /config.php (в корне сайта или в папке /admin) в строчка define('DB_USERNAME', 'юзер_нейм');
  7. Есть решение на уровне БД. Это триггеры. Если кратко: создается некое событие (собственно триггер), которое отрабатывает моментально после каждого изменения допустим, таблиц oc_order или oc_product. Отрабатывает - выполняет sql-скрипт, который проставляет нужные статусы товары в зависимости от его количества. При минимальной компетенции триггер элементарно создается за 10 минут. Например, у меня так количество бонусных баллов (за которые можно купить товар) при изменении цены товара когда-то автоматически пересчитывалось. Вот "рыба" Вам для примера
  8. И правда, предложенный мной запрос не умеет считать в подкатегориях. Не подумал, что вложенность категорий может быть многоуровневая. Спасибо за интересную задачку Боюсь, что пытаться все решить одним единственным запросом - это не оптимальное решение. Так как оно проиграет по скорости и гибкости решению смеси циклов php и простых запросов к БД. Как достаточно быстрый вариант (потому что селекты простые и выборки точные), можно написать хранимую процедурку в mysql, в которой бы с помощью банального курсора для каждой категории\подкатегории находились бы последние n-товаров. Результат бы записывался в отдельную табличку в базе (а вот тут может быть медленно, т.к. инсерты работают ощутимо медленнее селектов; ну да инсертов будет не много - столько же, сколько категорий). А уж потом, однострочным селектом можно было бы запрашивать результат. Ну и что бы не быть голословным. Вот 100% рабочий пример процедуры, которую надо создать в базе. ну а тут нам остается только вызвать процедуру и заселектить результат. CALL prod_counter; SELECT * FROM tmp_prod_2_cat ORDER BY 1, 3, 2 DESC; Уважаемые @Wild и @SooR Возьметесь проверить? У меня... гм... стыдно сказать... база маленькая ))) все слишком быстро считается. Ясное дело, что предлагаемое решение не в своем конечном варианте и требует доработки. В тех же подкатегориях не считаются товары (исправимо, просто поленился). Ну и может быть кто придумает, как можно избежать множественных инсертов в результирующую табличку
  9. о! Интересная задачка. А давайте и я поучаствую ради спортивного интереса сделаем две одинаковые выборки из таблиц product и product_to_category. Назовем их "a" и "b". объединим обе таблицы, но с условием пересечения ТОЛЬКО по category_id и сравнением даты изменения (таким образом зададим нужную нам сортировку) обрежем результаты джоина условием having count до двух для каждой категории эээм...PROFIT! если, конечно, я не поторопился как вариант, задачу можно было бы относительно красиво решить курсорами (те же циклы). НО! для этого потребовалось бы писать процедуру для самого mysql. Но это уже другая история ¯\_(ツ)_/¯
  10. Был личный опыт работы с рждлогистикой. Крайний раз в этом году. Чуть более 200кг груз. По срокам уложились примерно за месяц на все про все. Сам состав был транзитный китай-москва и шел то ли неделю, то ли 10 дней. Остальное время - согласование, забор груза в китае, таможенная очистка и прочее. Мне понравилось. С удовольствие буду работать снова.
  11. тут я полностью согласен. а потому в принципе не использую такой подход.  Не претендую на хорошее решение, просто ради интереса и для развития темы. Вдруг что-то в этом есть и кто-то найдет это полезным... Я у себя ради интереса использовал вот такую конструкцию в конфигах nginx. Работает исправно: проверяется заголовок $http_accept на поддержку webp браузером (без разницы, какой браузер; главное то, что он явно сообщает веб-серверу о своих возможностях). А затем сам веб-сервер решает, какой файл отдавать. Единственное, при таком решении в исходном html-коде никакой подмены jpg на webp не происходит:
  12. Так и было: не перезаписались файлы. Ошибок при установке, правда, не было, но факт на лицо. Исправил. Все работает ОТЛИЧНО. Спасибо!!!
  13. Здравствуйте! Какое мощное обновление - респект! Интересно стало попробовать... Обновил модуль: установил, нажал магическую кнопочку, все сохранил. Работает. Включаю lazy load и вижу во фронте белый экран, а в логах PHP message: PHP Fatal error: Uncaught Error: Call to undefined method ControllerJetcacheJetcache::jc_lazy() in */system/storage/modification/system/library/response.php:122 в самом файле на этом месте if (!$this->jetcache_registry->get('page_fromcache') && isset($this->jetcache_registry->get('controller_jetcache_jetcache')->jetcache_settings['lazy_status']) && $this->jetcache_registry->get('controller_jetcache_jetcache')->jetcache_settings['lazy_status']) { $this->output = $this->jetcache_registry->get('controller_jetcache_jetcache')->jc_lazy($this->output); } в контроллере /admin/controller/jetcache/jetcache.php и поиском по файлам модуля строки jc_lazy не нашел (только в осмоде) эм... наверное туплю где-то, но что я делаю не так?
  14. скажите пожалуйста, как Вы делали бекап? Есть ли в нем строчки типа create table ?
  15. 8)Возвращаемся в базу данных,открываем её,выделяем все только что созданные таблицы и УДАЛЯЕМ После удаления таблиц из БД 100% возникнет ошибка как у ТС при условии, что для восстановления будет использоваться бекап, сделанный через админку опенкарта. Без разницы, каким образом этот бекап восстанавливать. Может в других версиях ОС бекапы делал по-другому. Я не в курсе, если честно ))
  16. Ключевые слова! Дело в том, что стандартным способом опенкарт делает бекап данных только существующих таблиц. При попытке развернуть этот бэкап на новой, пустой базе (другом хостинге например) получится ситуация, как у топикстартера. А все дело в том, что в выходном sql-скрипте бекапа используются лишь команды truncate (очистка таблицы) + insert (вставка данных). Никакой структуры БД не создается (таблицы, индексы, вьюхи etc). Сделайте бекап базы на поддомене через phpmyadmin. И с помощью него же разверните базу на новом месте. PhpMyAdmin делает бекапы НОРМАЛЬНО: выходной скрипт пытается дропнуть таблицы, затем создает их структуру заного (чувствуете разницу), а затем уже наполняет данными. Я не проверял на собственном опыте и никогда не делал бекапы средствами ОС. Просто ради интереса один раз открыл файл бекапа, сделанного через ОС, понял, что мне такое не надо, закрыл и забыл Может и ошибаюсь, конечно... Но ваша ошибка говорит о том, что tuncate не может очистить несуществующую таблицу. Очевидно... ее же еще никто не создал ))
  17. Здравствуйте! Откровенно говоря, когда-нибудь конечно придется адаптировать для 3 версии Пусть она еще сырая и пятое десятое. Точных сроков Вам обещать не стану. Скажу лишь, что до НГ или около того планировал небольшое обновление сделать - может быть заодно подружу с ОС3. Если очень-очень надо, еще вчера и что бы на ОС3, то договориться всегда можно
  18. этим запросом Вы посчитаете суммарное количество всех товаров, которые заказывал клиент. То есть если в одном заказе клиент указал 2шт товара А, а в другом - 3шт товара Б, а в третьем заказе 1шт товара С, то запрос вернет Вам в результате 6шт неизвестного товара - нельзя точно сказать какого - А, Б или С. Плюсом, в запросе нет учета статуса заказов (даже брошенные корзинки клиента посчитаются). Посему запрос некорректный. Добавьте к тому запросу, что я приводил выше в качестве примера условие customer_id='".$cid."' и почувствуйте разницу. Дальше не вчитывался, т.к. ошибка есть уже на самом старте + лично у меня это займет значимое время, которое есть интерес тратить только на платной основе. Раздел услуг на форуме Вам в помощь, как вариант.
  19. Вы лишаете себя увлекательного квеста смотрим вьюшку формы заказа в админке - /admin/view/template/sale/order_info.tpl видим, что переменная, которая содержит дату - $date_added идем в контроллер /admin/controller/sale/order.php и находим как формируется значение нашей переменной:$data['date_added'] = date($this->language->get('date_format_short'), strtotime($order_info['date_added'])); Ага. Все просто. В языковых файлах есть настройка. Идем в /admin/language/ru-ru/ru-ru.php, ищем $_['date_format_short'] = 'd.m.Y'; меняем на $_['date_format_short'] = 'd.m.Y h:i'; profit !!!
  20. Без проблем могу помочь написать запрос, который бы отражал все необходимую логику\информацию. Однако учтите, что связка указанных таблиц возможна только для зарегистрированных клиентов, т.к. в таблице oc_order поле customer_id заполняется только для зарегистрированных и авторизовавшихся перед оформлением заказа клиентов. Без однозначной идентификации клиента вся Ваша идея лишена смысла, т.к. на месте клиента который хочет обойти ограничение, можно либо зарегистрироваться на другую эл.почту или оформить заказ без регистрации. Как черновик, можете использовать вот такой запрос SELECT oo.customer_id, CONCAT(oo.firstname, oo.lastname), oop.model, sum(oop.quantity) FROM oc_order oo, oc_customer oc, oc_order_product oop WHERE oo.customer_id = oc.customer_id AND oop.order_id = oo.order_id GROUP BY oop.product_id, oc.customer_id HAVING COUNT(oop.product_id)> 1; на выходе будет что-то вроде такого: номер клиента --- ФИО --- название продукта --- количество единиц заказанных клиентом
  21. Как вариант, стоит для начала убедиться, что комментарий успешно записывается в базу. Для этого вот Вам запрос для проверки, который выведет табличку с номером заказа и комментария к нему SELECT oo.order_id, oo.comment FROM oc_order oo ORDER BY oo.order_id DESC; Если комментариев в базе нет - стоит смотреть в сторону процесса сохранения\оформления заказа; Если комментарии есть - значит они просто не выводятся в форме заказа в админке. Уверен, в этом случае Вам поможет поиск по форуму
  22. Список всех подписчиков можно получить выборкой из базы данных вот таким запросом: SELECT * FROM oc_customer oc WHERE oc.newsletter = 1; Если количество будет 0, то можно всем клиентам принудительно "включить" подписку слелующим запросом: UPDATE oc_customer oc SET oc.newsletter = 1 WHERE oc.newsletter !=1; а что там у Вас с формой подписки - разбирайтесь. Для проверки самостоятельно подпишитесь на новости и проверьте приведенным выше запросом - если все ок, то Ваш емейл должен быть в списке результатов.
  23. уверен, он использует те же команды, что я указал выше. Пользуйтесь и впредь - так надежнее
  24. Кажется, Вы сами ответили на свой вопрос У Вас нет подписчиков на новости. Откройте карточку любого клиента в админке и посмотрите, стоит ли галочка " Подписка на рассылку "
×
×
  • 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.