Перейти к содержанию

clayrabbit

Пользователь
  • Постов

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

  • Посещение

  • Победитель дней

    2

Весь контент clayrabbit

  1. 67к товаров, 26к связей в hpmodel_links, 2.5к отзывов, вызов getProduct() занимает около 70мс и если на странице в модулях набирается больше 10 товаров получается довольно большая задержка. Удалось ускорить работу метода в 10-15 раз заменив 2 подзапроса к review на один и немного оптимизировав его: --- z_hpm14.ocmod.xml~070725 2025-02-12 14:38:04.067381375 +0300 +++ z_hpm14.ocmod.xml 2025-07-07 08:51:32.842664104 +0300 @@ -169,11 +169,15 @@ </operation> <operation error="skip"> <search index="0"><![CDATA[(SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating]]></search> - <add position="replace"><![CDATA[(SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 LEFT JOIN " . DB_PREFIX . "hpmodel_links hpl ON (r1.product_id = hpl.product_id OR r1.product_id = hpl.parent_id) WHERE (" . ($parent_id !== false ? "hpl.parent_id = '" . (int)$parent_id . "'" : "r1.product_id = p.product_id") . ") AND r1.status = '1' GROUP BY " . ($parent_id !== false ? "hpl.parent_id" : "r1.product_id") . ") AS rating]]></add> + <add position="replace"><![CDATA[(SELECT CONCAT(AVG(rating),';',COUNT(review_id)) FROM " . DB_PREFIX . "review r1" . ($parent_id !== false ? " LEFT JOIN " . DB_PREFIX . "hpmodel_links hpl ON (r1.product_id = hpl.product_id)" : "") . " WHERE r1.product_id = p.product_id" . ($parent_id !== false ? " OR hpl.parent_id = '" . (int)$parent_id . "'" : "") . " AND r1.status = '1' GROUP BY " . ($parent_id !== false ? "hpl.parent_id" : "r1.product_id") . ") AS rating]]></add> </operation> <operation error="skip"> <search index="0"><![CDATA[(SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews]]></search> - <add position="replace"><![CDATA[(SELECT COUNT(DISTINCT review_id) AS total FROM " . DB_PREFIX . "review r2 LEFT JOIN " . DB_PREFIX . "hpmodel_links hpl ON (r2.product_id = hpl.product_id OR r2.product_id = hpl.parent_id) WHERE (" . ($parent_id !== false ? "hpl.parent_id = '" . (int)$parent_id . "'" : "r2.product_id = p.product_id") . ") AND r2.status = '1' GROUP BY " . ($parent_id !== false ? "hpl.parent_id" : "r2.product_id") . ") AS reviews]]></add> + <add><![CDATA[NULL]]></add> + </operation> + <operation error="skip"> + <search index="0"><![CDATA[=> $query->row['reviews'] ? $query->row['reviews'] : 0,]]></search> + <add><![CDATA[=> $query->row['rating'] ? explode(';', $query->row['rating'])[1] : 0,]]></add> </operation> </file>
  2. Код модуля открыт? Если используются нестандартные таблицы с картинками - возможно модифицировать под свои нужды?
  3. @ncv, как бы так сделать, чтобы "ДЕЙСТВИЕ ПЕРЕД ЗАГРУЗКОЙ:" выполнялось только после успешной загрузки файла фида, а если загрузка, например, отвалилась по таймауту - действие не выполнялось бы.
  4. Через cron или консоль можно попробовать запустить обработку в обход веб-сервера примерно так (вместо 'YML...' должен быть идентификатор профиля): cd ~/public_html/ && QUERY_STRING="route=zoxml2/zoxml2_yml/load&user=cron&session_key=YML..." REQUEST_METHOD=POST /opt/php/7.3/bin/php -r 'parse_str($_SERVER["QUERY_STRING"],$_GET);$_POST=$_GET;include "index.php";'
  5. Добрый день. А между 1.2.0 и 1.3.0 какой объем правок в twig файлах? Если diff -uwBr прогнать, сколько строк с +/- получится?
  6. Добрый день.Еще пара замечаний по модулю. 1) При работе с кнопки, после закрытия не удаляется слой с фоном, в результате с каждым открытием формы фон становится все темнее и темнее. 2) Неудобно, что модуль пытается заменять название кнопки на значение указанное как "Заголовок вплывающего окна". Если нужно более компактное название для кнопки и более длинное для окна? Может добавить проверку - если кнопка не пустая - не менять название. Ну и в связи с этим еще, был неприятно удивлен, что размещение кнопки на странице приводит к выполнению дополнительных ajax-запросов при загрузке страницы, да еще и по количеству кнопок. С точки зрения оптимизации это выглядит ничем не оправданным излишеством. Может настройку в модуль добавить которая бы отключала эти запросы? Еще и "мигание" кнопки может приводить к смещению макета (CLS), что также ведет к снижению показателей pagespeed. Я конечно решил эти проблемы просто нафиг убрав класс "cheapering" с кнопки, но для обычного пользователя это будет неочевидно. 3) Было бы полезно добавить полям форм свойство autocomplete (autocomplete="name", autocomplete="phone" и т.п.) чтобы лучше работало автозаполнение.
  7. Пытаюсь загрузить категории из CSV. Делаю так: нажимаем "Загрузить производителей, категории и атрибуты", получаем это Вроде бы препроцессор с ключом "explode_category_over_param" должен помочь Но не работает. Пытался добавить отладку в zoxml2pre.php, но такое ощущение, что он вообще не выполняется. ЧЯДНТ?
  8. Добрый день. Неоднократно использовал ваш модуль для импорта из YML-фидов, сейчас нужно импортировать из CSV (поддержка которого также заявлена в описании модуля), но что-то не очень понимаю как это cделать. UPD: Вроде бы нашел, ага
  9. Вроде процентов на 20% быстрее SQL-запрос в getProducts() выполняется, если убрать realprice и перенести COALESCE() в HAVING
  10. Как временное решение, в catalog/view/theme/prostore/template/information/contact.twig заменить <script src="//maps.google.com/maps/api/js?key={{ api_key }}"></script> на <script src="//maps.google.com/maps/api/js?v=3.54&key={{ api_key }}"></script>
  11. Добрый день. Судя по всему, начиная с версии Google Maps API v 3.55 карта на странице контактов перестала работать. Uncaught TypeError: Cannot read properties of null (reading 'removeChild') at Element.remove (priority-nav.min.js?v1.2.0:8:4837) at ho.<anonymous> (map.js:112:96) at _.Nt (common.js:32:155) at ID.Fg (map.js:112:3) at IntersectionObserver.<anonymous> (js?key=AIzaSyB5Nxqs46v-pP1NFrulXw1g-tBrkR48K18:209:352) Вот похожий случай https://issuetracker.google.com/issues/320761260?pli=1 Я так понимаю, нужно что-то поправить в catalog/view/javascript/prostore/plugins/priority-nav.min.js , но на гитхабе эта библиотека уже много лет не обновлялась. У кого-нибудь есть решение?
  12. "Настроить crontab" это дело пяти минут. Но для этого у вас должен быть список команд которые вы хотите запускать. Т.ч. суть задачи вероятно не в этом. 1. Подразумевается, что нужно разработать модуль который будет отправлять емейл с остатками? 2. Модуль Ozon Seller вероятно уже содержит инструкции какую команду нужно прописать в cron. 3. Т.е. видимо нужно доработать установленный модуль, добавив в него функцию отправки письма со статусами после проверки?
  13. Ну тут вопрос, если мы доверяем покупателю возможность вручную выбрать зону доставки из перечня (и возможность сделать это некорректно), то достаточно любого модуля с кастомными способами доставки. А если нужно получать точный результат по адресу (через геокодирование), то это уже другая история.
  14. Здравствуйте. Мне кажется тут работы на 1-2 часа максимум. Работаю за 1500 р/час
  15. Кстати, на несуществующих страницах этот баг со ссылками остается даже если кеширование выключено полностью, не смотря даже на то, что error/not_found в исключениях. Опять благодаря подсказке автора Lightning, вылечилось неочевидным параметром: Продолжаю наблюдение...
  16. Вот этот: Отключить предварительную загрузку часто используемых данных– может помочь при проблемах с SEO URLs
  17. Выяснилось, что в моем случае нужно было вот этот параметр включить Спасибо автору Lightning, за то что подсказал.
  18. Извиняюсь, кто-нибудь может подсказать как заставить Lightning различать кеш для разных городов? Вроде есть параметр "Использовать эти елементы SESSION/COOKIE, как различающие страницы кеша", но как его ни заполнял - не работает. На страницах вылазят ссылки другого города.
  19. И снова здравствуйте. Теперь по модулю отзыв: Добавьте, пожалуйста, защиту от повторных редиректов на случай, если у каждого поддомена свои сессии. У вас в инструкции "Работа с поддоменами" написано: "После изменения настроек обязательно нужно почистить куки на всех поддоменах, чтобы избавиться от кэша в модуле!" Но куки хранятся в браузерах посетителей (с временем жизни в много лет), и почистить их может только сам посетитель (если он достаточно квалифицирован). Т.е. выполнить это условие невозможно. А без него, после включения редиректов в модуле, клиент со старыми (не кросс-доменными куками), переходя на поддомен другого города, получает в сессии "залипший" редирект и не может вернуться на изначальный домен - его постоянно будет редиректить.
  20. Здравствуйте. Нет ли у кого последней версии БД ФИАС от 31.08.2021 (fias_dbf.zip) ? Или таблицы fias с обновленными хотя бы на эту дату данными?
×
×
  • Создать...