
clayrabbit
Пользователь-
Постов
25 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
clayrabbit стал победителем дня 10.07
clayrabbit имел наиболее популярный контент!
Информация о clayrabbit

Посетители профиля
Блок последних пользователей отключён и не показывается другим пользователям.
Достижения clayrabbit
-
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>
-
Код модуля открыт? Если используются нестандартные таблицы с картинками - возможно модифицировать под свои нужды?
-
@ncv, как бы так сделать, чтобы "ДЕЙСТВИЕ ПЕРЕД ЗАГРУЗКОЙ:" выполнялось только после успешной загрузки файла фида, а если загрузка, например, отвалилась по таймауту - действие не выполнялось бы.
- 111 ответ
-
- загрузка товара
- yml
- (и ещё 10 )
-
Через 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";'
- 111 ответ
-
- загрузка товара
- yml
- (и ещё 10 )
-
Добрый день.Еще пара замечаний по модулю. 1) При работе с кнопки, после закрытия не удаляется слой с фоном, в результате с каждым открытием формы фон становится все темнее и темнее. 2) Неудобно, что модуль пытается заменять название кнопки на значение указанное как "Заголовок вплывающего окна". Если нужно более компактное название для кнопки и более длинное для окна? Может добавить проверку - если кнопка не пустая - не менять название. Ну и в связи с этим еще, был неприятно удивлен, что размещение кнопки на странице приводит к выполнению дополнительных ajax-запросов при загрузке страницы, да еще и по количеству кнопок. С точки зрения оптимизации это выглядит ничем не оправданным излишеством. Может настройку в модуль добавить которая бы отключала эти запросы? Еще и "мигание" кнопки может приводить к смещению макета (CLS), что также ведет к снижению показателей pagespeed. Я конечно решил эти проблемы просто нафиг убрав класс "cheapering" с кнопки, но для обычного пользователя это будет неочевидно. 3) Было бы полезно добавить полям форм свойство autocomplete (autocomplete="name", autocomplete="phone" и т.п.) чтобы лучше работало автозаполнение.
-
Пытаюсь загрузить категории из CSV. Делаю так: нажимаем "Загрузить производителей, категории и атрибуты", получаем это Вроде бы препроцессор с ключом "explode_category_over_param" должен помочь Но не работает. Пытался добавить отладку в zoxml2pre.php, но такое ощущение, что он вообще не выполняется. ЧЯДНТ?
- 111 ответ
-
- загрузка товара
- yml
- (и ещё 10 )
-
Добрый день. Неоднократно использовал ваш модуль для импорта из YML-фидов, сейчас нужно импортировать из CSV (поддержка которого также заявлена в описании модуля), но что-то не очень понимаю как это cделать. UPD: Вроде бы нашел, ага
- 111 ответ
-
- загрузка товара
- yml
- (и ещё 10 )
-
Добрый день. Судя по всему, начиная с версии 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 , но на гитхабе эта библиотека уже много лет не обновлялась. У кого-нибудь есть решение?
-
"Настроить crontab" это дело пяти минут. Но для этого у вас должен быть список команд которые вы хотите запускать. Т.ч. суть задачи вероятно не в этом. 1. Подразумевается, что нужно разработать модуль который будет отправлять емейл с остатками? 2. Модуль Ozon Seller вероятно уже содержит инструкции какую команду нужно прописать в cron. 3. Т.е. видимо нужно доработать установленный модуль, добавив в него функцию отправки письма со статусами после проверки?