-
Публікації
1 777 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Усі публікації користувача kJlukOo
-
ну так в чем вопрос. допишите генерацию серии под бесплатный модуль и под свои нужды или если лень, то покупайте у меня мой модуль умеет группировать по части названия. достаточно выбрать желаемое название и указать кол-во совпадающих слов
-
во тут реально конструктивно было. конфликты будут с микроволной печью в первую очередь. затестил цифры с sql_no_cache и разрыв в первом байте стал еще вкуснее на каких-то 5-10мс Отображение строк 0 - 49 (50 всего, Запрос занял 0.0276 сек.) SELECT SQL_NO_CACHE p.image, p.price, p.quantity, pd.name , (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, p.product_id FROM oc_product_to_category p2c LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '118' GROUP BY p.product_id ORDER BY (p.quantity>0) DESC,p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,50 Отображение строк 0 - 49 (50 всего, Запрос занял 0.0200 сек.) SELECT SQL_NO_CACHE p.product_id, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, p.product_id FROM oc_product_to_category p2c LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '118' GROUP BY p.product_id ORDER BY (p.quantity>0) DESC,p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,50 как полагаешь разница в 0.0076 секунды сможет компенсировать 50 таких запросов(ниже)? Отображение строк 0 - 0 (1 всего, Запрос занял 0.0016 сек.) SELECT SQL_NO_CACHE DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '2510842' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' зачем тебе explain? смешной. условия запроса никак не менялись. экплейн идентичен для двух этих запросов, я думал это само собой понятно... но не тебе не убирать дискаунт, чтобы добиться хорошей совместимости будет максимально логично, но мне интересно сделать легче и быстрее
-
добрый вечер. сменить урл можно запросто. объединить товары по значению атрибутов тоже можно из коробки
-
дримфильтр на такой кастомизации работает исправно. окфильтр надо будет потестить про то, что надо делать модом согласен
-
catalog/model/catalog/product.php метод getProducts имеет следующий цикл foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } те на каждый товар категории у нас создается отдельный запрос с кучей условий. как избавится от порождения кучи новых запросов? получить все в одном запросе. без цикличного вызова метода getProduct foreach ($query->rows as $result) { $product_data[$result['product_id']] = $result; } в родном запросе мы получим: id, рейтинг, акцию и дискаунт в моем случае для категории мне нужно: количество, изображение, название товара, id , цена //исходный $sql = "SELECT p.product_id, (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, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special"; заменим SELECT p.product_id на SELECT p.product_id, p.image, p.price, p.quantity, pd.name $sql = "SELECT p.product_id, p.image, p.price, p.quantity, pd.name, (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, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special"; //тесты 10 срезов по ttfb показали категория 50 товаров. 62.8 => 23.5 ms категория 30 товаров: 45.8 => 22.7 ms $startTime = microtime(true); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $result; //$product_data[$result['product_id']] = $this->getProduct($result['product_id']); } $msec = (microtime(true) - $startTime)*1000; if($_SERVER['REMOTE_ADDR']=='ваш айпи') { echo round($msec,2); exit(); }
-
pagespeed улучшаем GooglePagespeed своими руками без модулей и хамовитых авторов.
blog entry прокоментував kJlukOo Yoda в Прожектор Бритни Спирс
ничего нового, но все конкретно по делу. хорошая компиляция советов по поводу этого хочу добавить немного конкретики. еще лучше убрать это из контроллера, что положительно скажется на ttfb есть либа system/helper/general. туда можно положить функцию детекшена мобилки. что-то вроде function isMobile() { return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); } типичная задача не выводить левую колонку на мобике. есть строки, в контроллере, которые рендерят левую колонку $data['column_left'] = isMobile() ? "" : $this->load->controller('common/column_left'); еще есть одна тонкость. такой isMobile будет каждый раз проверять одно и тоже при многократном вызове. его тоже НУЖНО оптимизировать. кешировать результат в пределах одного запроса. например членом класса, как это реализован в либе корзины кстати, лейзи на чистом джс это прошлый век. нынче атрибут лодинг поддерживается всеми браузерами для изображений https://developer.mozilla.org/ru/docs/Web/HTML/Element/img#attr-loading -
добрый вечер. есть, но версия не самая свежая
- 256 відповідей
-
- комплекты про
- серии
- (і ще %d)
-
пишите в личку. помогу
- 256 відповідей
-
- комплекты про
- серии
- (і ще %d)
-
попробуйте взять этот метод из актуальной версии. метод был пересиан, а баг пофикшен
- 256 відповідей
-
- комплекты про
- серии
- (і ще %d)
-
старые - товары с рекомендуемыми. новые - без
- 121 відповідь
-
- рекомендуемые
- авто рекомендуемые
- (і ще %d)
-
пишите в личку помогу
-
форум наверно умеет так контроллер админки закрыт. остальное открыто. пишите в личку контроллер админки открытый дам
- 256 відповідей
-
- 1
-
- комплекты про
- серии
- (і ще %d)
-
это дата окончания акции на комплект
- 256 відповідей
-
- 1
-
- комплекты про
- серии
- (і ще %d)
-
за округление цены товаров отвечает библииотека cart.php. я могу максимум влиять на округление скидки
- 256 відповідей
-
- комплекты про
- серии
- (і ще %d)
-
думаю да. но чтобы подтянулись опции от HPM в модалках товаров от моего модуля что-то полюбому придется допилить
- 256 відповідей
-
- 1
-
- комплекты про
- серии
- (і ще %d)
-
добрый вечер. в про есть эта реализация только при добавлении комплекта товар, который уже есть в корзине задвоится. за 10$ допилю
-
да, можно. нужно добавить shuffle после выборки товаров. любой прогер думаю осилит
- 121 відповідь
-
- рекомендуемые
- авто рекомендуемые
- (і ще %d)
-
старые это те, у которых уже есть рекомендуемые. новые - у которых нет
- 121 відповідь
-
- рекомендуемые
- авто рекомендуемые
- (і ще %d)
-
в админке в списке товаров никак. в планах реализовать
- 256 відповідей
-
- комплекты про
- серии
- (і ще %d)
-
1. посмотрю 2. убрать атрибут min. это формируется в контроллере
-
на главной странице модуля внизу есть крон ссылки. там есть скрытие дочерних
Останні розширення
-
Four Crone Автор: Sha
-
SP Backup Modification Автор: spectre
-
-
SP Ціна закупівлі FREE Автор: spectre
-
Оплата NovaPay Автор: spectre