kredit24 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Необходимо вывести в категориях блок случайных товаров или сгенерированных по какому то алгоритму, в основном для того, что бы в категориях с малым количеством товара создать видимость ассортимента для ПС. Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, поэтому ищу альтернативу с выводом статического блока с ранее сгенерированными товарами. Кто нибудь встречал такой модуль? 1 Надіслати Поділитися на інших сайтах More sharing options...
forlan Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 4 часа назад, kredit24 сказал: Необходимо вывести в категориях блок случайных товаров или сгенерированных по какому то алгоритму, в основном для того, что бы в категориях с малым количеством товара создать видимость ассортимента для ПС. Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, поэтому ищу альтернативу с выводом статического блока с ранее сгенерированными товарами. Кто нибудь встречал такой модуль? очень интересно, подскажите какой модуль используете для генерации случайных товаров на лету? Надіслати Поділитися на інших сайтах More sharing options...
kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 3 минуты назад, forlan сказал: очень интересно, подскажите какой модуль используете для генерации случайных товаров на лету? https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=18734 Надіслати Поділитися на інших сайтах More sharing options...
legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Рандом товаров из категории. Можно доработать чтоб бралось из доп категорий. Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 (змінено) 3 минуты назад, legioner26 сказал: Рандом товаров из категории. Можно доработать чтоб бралось из доп категорий. Товары нужны не из категории, а для категорий. Змінено 26 листопада 2019 користувачем kredit24 Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 17 минут назад, kredit24 сказал: Товары нужны не из категории, а для категорий. А браться они откуда должны, хаотично ? Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 Только что, legioner26 сказал: А браться они откуда должны, хаотично ? Можно и хаотично, тут задача другая, заполнить категорию любым товаром. Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Ну можно сделать. Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 Только что, legioner26 сказал: Ну можно сделать. Было бы круто, а если бы ещё добавить условие для вывода такого блока , имею ввиду, что бы модуль выводился при условии, что в категории менее 1-5-10 товаров, кому что нужно, то цены бы модулю не было) Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 3 минуты назад, kredit24 сказал: Было бы круто, а если бы ещё добавить условие для вывода такого блока , имею ввиду, что бы модуль выводился при условии, что в категории менее 1-5-10 товаров, кому что нужно, то цены бы модулю не было) Только вот проблемка, у всех верстка разная, не подстроишься под всех. Если только сделать модификатор а не модуль, то проблем не будет. Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Но и дело в том, будет ли спрос на него. Тратить свое время на его реализацию бесплатно как то не особо хочется ) Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 Поэтому я ищу готовое решение) Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Ну готового я лично не видел. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Сделать что-то наподобие рекомендуемых и перемешивать при выводе Для уменьшения нагрузки Можно закещировать результаты Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 6 часов назад, kredit24 сказал: создать видимость ассортимента для ПС Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. 1 Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 2 минуты назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Клоакинг это обман пользователя, мы можем назвать свой блок "Другие товары нашего магазина" Что здесь обманного? Например у вас в самой младшей подкатегории 2-3 товара, а этот блок может предложить какие то другие варианты, пусть и из другой категории. К слову у меня 3 месяца как стоит блок со случайно сгенерированными товарами в категориях и брендах, на скрине видно как это индексируется.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 14 минут назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Это в каком месте? Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 50 минут назад, kredit24 сказал: блок "Другие товары нашего магазина" Ну тогда другое дело. Я подумал, что случайные товары выводятся как товары категории. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 27 листопада 2019 Share Опубліковано: 27 листопада 2019 (змінено) В 26.11.2019 в 12:59, esculapra сказал: Это назвается "клоакинг" Беру слова обратно. Но. Категория - это стартап ПС . И таки да, нужно указать боту путь для индексации страниц (товаров в нашем случае). А теперь я думаю с точки зрения поискового бота. 1) я тут уже был, но добавилась ссылка - проверю. 2) Гребаный насос! - эту ссылку я уже проверял 1-2-90-109 раз! - переспам. Гипотетически одна ссылка может рандомизировать "бочку меда" Саму идею уже осмыслил и поддерживаю, но необходимо продумать алгоритм, чтобы не переспамить. Змінено 27 листопада 2019 користувачем esculapra Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) On 11/26/2019 at 9:41 AM, kredit24 said: Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, не удивительно... в этом модуле механизм получения случайных товаров реализован через одно место: если утрировать до сути, то что-то вроде select ... from oc_product where... order by rand(). Слова "скорость", "быстро" и "order by rand()" в sql-запросах - несовместимы. Если кратко, то подобные запросы работают примерно так: возьмем список из всех-всех товаров магазина, добавим рядом с ними вымышленную колонку со случайным числом, а потом отсортируем по этой вымышленной колонке. Какие индексы, вы что... этот механизм обречен тормозить и сколько-нибудь шустро работает только если только кол-во товаров <100шт. Если будете заказывать разработку своего модуля, который должен получать случайные товары - учтите, что подобных запросов в базу он делать не должен! Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 1 минуту назад, 100napb сказал: шустро работает только если только кол-во товаров <100шт. В том то и дело, что у меня 60к товаров.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) 20 minutes ago, kredit24 said: В том то и дело, что у меня 60к товаров.. вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Spoiler //if (!$product_data) { а так же ~130 Spoiler //} random.php Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пошук модулів Случайные товары в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 (змінено) 3 минуты назад, legioner26 сказал: Рандом товаров из категории. Можно доработать чтоб бралось из доп категорий. Товары нужны не из категории, а для категорий. Змінено 26 листопада 2019 користувачем kredit24 Надіслати Поділитися на інших сайтах More sharing options...
legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 17 минут назад, kredit24 сказал: Товары нужны не из категории, а для категорий. А браться они откуда должны, хаотично ? Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 Только что, legioner26 сказал: А браться они откуда должны, хаотично ? Можно и хаотично, тут задача другая, заполнить категорию любым товаром. Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Ну можно сделать. Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 Только что, legioner26 сказал: Ну можно сделать. Было бы круто, а если бы ещё добавить условие для вывода такого блока , имею ввиду, что бы модуль выводился при условии, что в категории менее 1-5-10 товаров, кому что нужно, то цены бы модулю не было) Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 3 минуты назад, kredit24 сказал: Было бы круто, а если бы ещё добавить условие для вывода такого блока , имею ввиду, что бы модуль выводился при условии, что в категории менее 1-5-10 товаров, кому что нужно, то цены бы модулю не было) Только вот проблемка, у всех верстка разная, не подстроишься под всех. Если только сделать модификатор а не модуль, то проблем не будет. Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Но и дело в том, будет ли спрос на него. Тратить свое время на его реализацию бесплатно как то не особо хочется ) Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 Поэтому я ищу готовое решение) Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Ну готового я лично не видел. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Сделать что-то наподобие рекомендуемых и перемешивать при выводе Для уменьшения нагрузки Можно закещировать результаты Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 6 часов назад, kredit24 сказал: создать видимость ассортимента для ПС Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. 1 Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 2 минуты назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Клоакинг это обман пользователя, мы можем назвать свой блок "Другие товары нашего магазина" Что здесь обманного? Например у вас в самой младшей подкатегории 2-3 товара, а этот блок может предложить какие то другие варианты, пусть и из другой категории. К слову у меня 3 месяца как стоит блок со случайно сгенерированными товарами в категориях и брендах, на скрине видно как это индексируется.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 14 минут назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Это в каком месте? Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 50 минут назад, kredit24 сказал: блок "Другие товары нашего магазина" Ну тогда другое дело. Я подумал, что случайные товары выводятся как товары категории. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 27 листопада 2019 Share Опубліковано: 27 листопада 2019 (змінено) В 26.11.2019 в 12:59, esculapra сказал: Это назвается "клоакинг" Беру слова обратно. Но. Категория - это стартап ПС . И таки да, нужно указать боту путь для индексации страниц (товаров в нашем случае). А теперь я думаю с точки зрения поискового бота. 1) я тут уже был, но добавилась ссылка - проверю. 2) Гребаный насос! - эту ссылку я уже проверял 1-2-90-109 раз! - переспам. Гипотетически одна ссылка может рандомизировать "бочку меда" Саму идею уже осмыслил и поддерживаю, но необходимо продумать алгоритм, чтобы не переспамить. Змінено 27 листопада 2019 користувачем esculapra Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) On 11/26/2019 at 9:41 AM, kredit24 said: Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, не удивительно... в этом модуле механизм получения случайных товаров реализован через одно место: если утрировать до сути, то что-то вроде select ... from oc_product where... order by rand(). Слова "скорость", "быстро" и "order by rand()" в sql-запросах - несовместимы. Если кратко, то подобные запросы работают примерно так: возьмем список из всех-всех товаров магазина, добавим рядом с ними вымышленную колонку со случайным числом, а потом отсортируем по этой вымышленной колонке. Какие индексы, вы что... этот механизм обречен тормозить и сколько-нибудь шустро работает только если только кол-во товаров <100шт. Если будете заказывать разработку своего модуля, который должен получать случайные товары - учтите, что подобных запросов в базу он делать не должен! Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 1 минуту назад, 100napb сказал: шустро работает только если только кол-во товаров <100шт. В том то и дело, что у меня 60к товаров.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) 20 minutes ago, kredit24 said: В том то и дело, что у меня 60к товаров.. вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Spoiler //if (!$product_data) { а так же ~130 Spoiler //} random.php Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пошук модулів Случайные товары в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 Только что, legioner26 сказал: А браться они откуда должны, хаотично ? Можно и хаотично, тут задача другая, заполнить категорию любым товаром. Надіслати Поділитися на інших сайтах More sharing options...
legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Ну можно сделать. Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 Только что, legioner26 сказал: Ну можно сделать. Было бы круто, а если бы ещё добавить условие для вывода такого блока , имею ввиду, что бы модуль выводился при условии, что в категории менее 1-5-10 товаров, кому что нужно, то цены бы модулю не было) Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 3 минуты назад, kredit24 сказал: Было бы круто, а если бы ещё добавить условие для вывода такого блока , имею ввиду, что бы модуль выводился при условии, что в категории менее 1-5-10 товаров, кому что нужно, то цены бы модулю не было) Только вот проблемка, у всех верстка разная, не подстроишься под всех. Если только сделать модификатор а не модуль, то проблем не будет. Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Но и дело в том, будет ли спрос на него. Тратить свое время на его реализацию бесплатно как то не особо хочется ) Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 Поэтому я ищу готовое решение) Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Ну готового я лично не видел. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Сделать что-то наподобие рекомендуемых и перемешивать при выводе Для уменьшения нагрузки Можно закещировать результаты Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 6 часов назад, kredit24 сказал: создать видимость ассортимента для ПС Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. 1 Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 2 минуты назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Клоакинг это обман пользователя, мы можем назвать свой блок "Другие товары нашего магазина" Что здесь обманного? Например у вас в самой младшей подкатегории 2-3 товара, а этот блок может предложить какие то другие варианты, пусть и из другой категории. К слову у меня 3 месяца как стоит блок со случайно сгенерированными товарами в категориях и брендах, на скрине видно как это индексируется.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 14 минут назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Это в каком месте? Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 50 минут назад, kredit24 сказал: блок "Другие товары нашего магазина" Ну тогда другое дело. Я подумал, что случайные товары выводятся как товары категории. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 27 листопада 2019 Share Опубліковано: 27 листопада 2019 (змінено) В 26.11.2019 в 12:59, esculapra сказал: Это назвается "клоакинг" Беру слова обратно. Но. Категория - это стартап ПС . И таки да, нужно указать боту путь для индексации страниц (товаров в нашем случае). А теперь я думаю с точки зрения поискового бота. 1) я тут уже был, но добавилась ссылка - проверю. 2) Гребаный насос! - эту ссылку я уже проверял 1-2-90-109 раз! - переспам. Гипотетически одна ссылка может рандомизировать "бочку меда" Саму идею уже осмыслил и поддерживаю, но необходимо продумать алгоритм, чтобы не переспамить. Змінено 27 листопада 2019 користувачем esculapra Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) On 11/26/2019 at 9:41 AM, kredit24 said: Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, не удивительно... в этом модуле механизм получения случайных товаров реализован через одно место: если утрировать до сути, то что-то вроде select ... from oc_product where... order by rand(). Слова "скорость", "быстро" и "order by rand()" в sql-запросах - несовместимы. Если кратко, то подобные запросы работают примерно так: возьмем список из всех-всех товаров магазина, добавим рядом с ними вымышленную колонку со случайным числом, а потом отсортируем по этой вымышленной колонке. Какие индексы, вы что... этот механизм обречен тормозить и сколько-нибудь шустро работает только если только кол-во товаров <100шт. Если будете заказывать разработку своего модуля, который должен получать случайные товары - учтите, что подобных запросов в базу он делать не должен! Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 1 минуту назад, 100napb сказал: шустро работает только если только кол-во товаров <100шт. В том то и дело, что у меня 60к товаров.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) 20 minutes ago, kredit24 said: В том то и дело, что у меня 60к товаров.. вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Spoiler //if (!$product_data) { а так же ~130 Spoiler //} random.php Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пошук модулів Случайные товары в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 Только что, legioner26 сказал: Ну можно сделать. Было бы круто, а если бы ещё добавить условие для вывода такого блока , имею ввиду, что бы модуль выводился при условии, что в категории менее 1-5-10 товаров, кому что нужно, то цены бы модулю не было) Надіслати Поділитися на інших сайтах More sharing options...
legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 3 минуты назад, kredit24 сказал: Было бы круто, а если бы ещё добавить условие для вывода такого блока , имею ввиду, что бы модуль выводился при условии, что в категории менее 1-5-10 товаров, кому что нужно, то цены бы модулю не было) Только вот проблемка, у всех верстка разная, не подстроишься под всех. Если только сделать модификатор а не модуль, то проблем не будет. Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Но и дело в том, будет ли спрос на него. Тратить свое время на его реализацию бесплатно как то не особо хочется ) Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 Поэтому я ищу готовое решение) Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Ну готового я лично не видел. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Сделать что-то наподобие рекомендуемых и перемешивать при выводе Для уменьшения нагрузки Можно закещировать результаты Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 6 часов назад, kredit24 сказал: создать видимость ассортимента для ПС Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. 1 Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 2 минуты назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Клоакинг это обман пользователя, мы можем назвать свой блок "Другие товары нашего магазина" Что здесь обманного? Например у вас в самой младшей подкатегории 2-3 товара, а этот блок может предложить какие то другие варианты, пусть и из другой категории. К слову у меня 3 месяца как стоит блок со случайно сгенерированными товарами в категориях и брендах, на скрине видно как это индексируется.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 14 минут назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Это в каком месте? Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 50 минут назад, kredit24 сказал: блок "Другие товары нашего магазина" Ну тогда другое дело. Я подумал, что случайные товары выводятся как товары категории. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 27 листопада 2019 Share Опубліковано: 27 листопада 2019 (змінено) В 26.11.2019 в 12:59, esculapra сказал: Это назвается "клоакинг" Беру слова обратно. Но. Категория - это стартап ПС . И таки да, нужно указать боту путь для индексации страниц (товаров в нашем случае). А теперь я думаю с точки зрения поискового бота. 1) я тут уже был, но добавилась ссылка - проверю. 2) Гребаный насос! - эту ссылку я уже проверял 1-2-90-109 раз! - переспам. Гипотетически одна ссылка может рандомизировать "бочку меда" Саму идею уже осмыслил и поддерживаю, но необходимо продумать алгоритм, чтобы не переспамить. Змінено 27 листопада 2019 користувачем esculapra Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) On 11/26/2019 at 9:41 AM, kredit24 said: Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, не удивительно... в этом модуле механизм получения случайных товаров реализован через одно место: если утрировать до сути, то что-то вроде select ... from oc_product where... order by rand(). Слова "скорость", "быстро" и "order by rand()" в sql-запросах - несовместимы. Если кратко, то подобные запросы работают примерно так: возьмем список из всех-всех товаров магазина, добавим рядом с ними вымышленную колонку со случайным числом, а потом отсортируем по этой вымышленной колонке. Какие индексы, вы что... этот механизм обречен тормозить и сколько-нибудь шустро работает только если только кол-во товаров <100шт. Если будете заказывать разработку своего модуля, который должен получать случайные товары - учтите, что подобных запросов в базу он делать не должен! Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 1 минуту назад, 100napb сказал: шустро работает только если только кол-во товаров <100шт. В том то и дело, что у меня 60к товаров.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) 20 minutes ago, kredit24 said: В том то и дело, что у меня 60к товаров.. вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Spoiler //if (!$product_data) { а так же ~130 Spoiler //} random.php Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пошук модулів Случайные товары в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Но и дело в том, будет ли спрос на него. Тратить свое время на его реализацию бесплатно как то не особо хочется ) Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 Поэтому я ищу готовое решение) Надіслати Поділитися на інших сайтах More sharing options... legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Ну готового я лично не видел. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Сделать что-то наподобие рекомендуемых и перемешивать при выводе Для уменьшения нагрузки Можно закещировать результаты Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 6 часов назад, kredit24 сказал: создать видимость ассортимента для ПС Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. 1 Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 2 минуты назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Клоакинг это обман пользователя, мы можем назвать свой блок "Другие товары нашего магазина" Что здесь обманного? Например у вас в самой младшей подкатегории 2-3 товара, а этот блок может предложить какие то другие варианты, пусть и из другой категории. К слову у меня 3 месяца как стоит блок со случайно сгенерированными товарами в категориях и брендах, на скрине видно как это индексируется.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 14 минут назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Это в каком месте? Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 50 минут назад, kredit24 сказал: блок "Другие товары нашего магазина" Ну тогда другое дело. Я подумал, что случайные товары выводятся как товары категории. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 27 листопада 2019 Share Опубліковано: 27 листопада 2019 (змінено) В 26.11.2019 в 12:59, esculapra сказал: Это назвается "клоакинг" Беру слова обратно. Но. Категория - это стартап ПС . И таки да, нужно указать боту путь для индексации страниц (товаров в нашем случае). А теперь я думаю с точки зрения поискового бота. 1) я тут уже был, но добавилась ссылка - проверю. 2) Гребаный насос! - эту ссылку я уже проверял 1-2-90-109 раз! - переспам. Гипотетически одна ссылка может рандомизировать "бочку меда" Саму идею уже осмыслил и поддерживаю, но необходимо продумать алгоритм, чтобы не переспамить. Змінено 27 листопада 2019 користувачем esculapra Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) On 11/26/2019 at 9:41 AM, kredit24 said: Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, не удивительно... в этом модуле механизм получения случайных товаров реализован через одно место: если утрировать до сути, то что-то вроде select ... from oc_product where... order by rand(). Слова "скорость", "быстро" и "order by rand()" в sql-запросах - несовместимы. Если кратко, то подобные запросы работают примерно так: возьмем список из всех-всех товаров магазина, добавим рядом с ними вымышленную колонку со случайным числом, а потом отсортируем по этой вымышленной колонке. Какие индексы, вы что... этот механизм обречен тормозить и сколько-нибудь шустро работает только если только кол-во товаров <100шт. Если будете заказывать разработку своего модуля, который должен получать случайные товары - учтите, что подобных запросов в базу он делать не должен! Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 1 минуту назад, 100napb сказал: шустро работает только если только кол-во товаров <100шт. В том то и дело, что у меня 60к товаров.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) 20 minutes ago, kredit24 said: В том то и дело, что у меня 60к товаров.. вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Spoiler //if (!$product_data) { а так же ~130 Spoiler //} random.php Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пошук модулів Случайные товары в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 Поэтому я ищу готовое решение) Надіслати Поділитися на інших сайтах More sharing options...
legioner26 Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Ну готового я лично не видел. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Сделать что-то наподобие рекомендуемых и перемешивать при выводе Для уменьшения нагрузки Можно закещировать результаты Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 6 часов назад, kredit24 сказал: создать видимость ассортимента для ПС Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. 1 Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 2 минуты назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Клоакинг это обман пользователя, мы можем назвать свой блок "Другие товары нашего магазина" Что здесь обманного? Например у вас в самой младшей подкатегории 2-3 товара, а этот блок может предложить какие то другие варианты, пусть и из другой категории. К слову у меня 3 месяца как стоит блок со случайно сгенерированными товарами в категориях и брендах, на скрине видно как это индексируется.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 14 минут назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Это в каком месте? Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 50 минут назад, kredit24 сказал: блок "Другие товары нашего магазина" Ну тогда другое дело. Я подумал, что случайные товары выводятся как товары категории. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 27 листопада 2019 Share Опубліковано: 27 листопада 2019 (змінено) В 26.11.2019 в 12:59, esculapra сказал: Это назвается "клоакинг" Беру слова обратно. Но. Категория - это стартап ПС . И таки да, нужно указать боту путь для индексации страниц (товаров в нашем случае). А теперь я думаю с точки зрения поискового бота. 1) я тут уже был, но добавилась ссылка - проверю. 2) Гребаный насос! - эту ссылку я уже проверял 1-2-90-109 раз! - переспам. Гипотетически одна ссылка может рандомизировать "бочку меда" Саму идею уже осмыслил и поддерживаю, но необходимо продумать алгоритм, чтобы не переспамить. Змінено 27 листопада 2019 користувачем esculapra Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) On 11/26/2019 at 9:41 AM, kredit24 said: Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, не удивительно... в этом модуле механизм получения случайных товаров реализован через одно место: если утрировать до сути, то что-то вроде select ... from oc_product where... order by rand(). Слова "скорость", "быстро" и "order by rand()" в sql-запросах - несовместимы. Если кратко, то подобные запросы работают примерно так: возьмем список из всех-всех товаров магазина, добавим рядом с ними вымышленную колонку со случайным числом, а потом отсортируем по этой вымышленной колонке. Какие индексы, вы что... этот механизм обречен тормозить и сколько-нибудь шустро работает только если только кол-во товаров <100шт. Если будете заказывать разработку своего модуля, который должен получать случайные товары - учтите, что подобных запросов в базу он делать не должен! Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 1 минуту назад, 100napb сказал: шустро работает только если только кол-во товаров <100шт. В том то и дело, что у меня 60к товаров.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) 20 minutes ago, kredit24 said: В том то и дело, что у меня 60к товаров.. вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Spoiler //if (!$product_data) { а так же ~130 Spoiler //} random.php Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пошук модулів Случайные товары в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 Сделать что-то наподобие рекомендуемых и перемешивать при выводе Для уменьшения нагрузки Можно закещировать результаты Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 6 часов назад, kredit24 сказал: создать видимость ассортимента для ПС Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. 1 Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 2 минуты назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Клоакинг это обман пользователя, мы можем назвать свой блок "Другие товары нашего магазина" Что здесь обманного? Например у вас в самой младшей подкатегории 2-3 товара, а этот блок может предложить какие то другие варианты, пусть и из другой категории. К слову у меня 3 месяца как стоит блок со случайно сгенерированными товарами в категориях и брендах, на скрине видно как это индексируется.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 14 минут назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Это в каком месте? Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 50 минут назад, kredit24 сказал: блок "Другие товары нашего магазина" Ну тогда другое дело. Я подумал, что случайные товары выводятся как товары категории. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 27 листопада 2019 Share Опубліковано: 27 листопада 2019 (змінено) В 26.11.2019 в 12:59, esculapra сказал: Это назвается "клоакинг" Беру слова обратно. Но. Категория - это стартап ПС . И таки да, нужно указать боту путь для индексации страниц (товаров в нашем случае). А теперь я думаю с точки зрения поискового бота. 1) я тут уже был, но добавилась ссылка - проверю. 2) Гребаный насос! - эту ссылку я уже проверял 1-2-90-109 раз! - переспам. Гипотетически одна ссылка может рандомизировать "бочку меда" Саму идею уже осмыслил и поддерживаю, но необходимо продумать алгоритм, чтобы не переспамить. Змінено 27 листопада 2019 користувачем esculapra Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) On 11/26/2019 at 9:41 AM, kredit24 said: Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, не удивительно... в этом модуле механизм получения случайных товаров реализован через одно место: если утрировать до сути, то что-то вроде select ... from oc_product where... order by rand(). Слова "скорость", "быстро" и "order by rand()" в sql-запросах - несовместимы. Если кратко, то подобные запросы работают примерно так: возьмем список из всех-всех товаров магазина, добавим рядом с ними вымышленную колонку со случайным числом, а потом отсортируем по этой вымышленной колонке. Какие индексы, вы что... этот механизм обречен тормозить и сколько-нибудь шустро работает только если только кол-во товаров <100шт. Если будете заказывать разработку своего модуля, который должен получать случайные товары - учтите, что подобных запросов в базу он делать не должен! Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 1 минуту назад, 100napb сказал: шустро работает только если только кол-во товаров <100шт. В том то и дело, что у меня 60к товаров.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) 20 minutes ago, kredit24 said: В том то и дело, что у меня 60к товаров.. вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Spoiler //if (!$product_data) { а так же ~130 Spoiler //} random.php Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пошук модулів Случайные товары в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 6 часов назад, kredit24 сказал: создать видимость ассортимента для ПС Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. 1 Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 2 минуты назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Клоакинг это обман пользователя, мы можем назвать свой блок "Другие товары нашего магазина" Что здесь обманного? Например у вас в самой младшей подкатегории 2-3 товара, а этот блок может предложить какие то другие варианты, пусть и из другой категории. К слову у меня 3 месяца как стоит блок со случайно сгенерированными товарами в категориях и брендах, на скрине видно как это индексируется.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 14 минут назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Это в каком месте? Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 50 минут назад, kredit24 сказал: блок "Другие товары нашего магазина" Ну тогда другое дело. Я подумал, что случайные товары выводятся как товары категории. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 27 листопада 2019 Share Опубліковано: 27 листопада 2019 (змінено) В 26.11.2019 в 12:59, esculapra сказал: Это назвается "клоакинг" Беру слова обратно. Но. Категория - это стартап ПС . И таки да, нужно указать боту путь для индексации страниц (товаров в нашем случае). А теперь я думаю с точки зрения поискового бота. 1) я тут уже был, но добавилась ссылка - проверю. 2) Гребаный насос! - эту ссылку я уже проверял 1-2-90-109 раз! - переспам. Гипотетически одна ссылка может рандомизировать "бочку меда" Саму идею уже осмыслил и поддерживаю, но необходимо продумать алгоритм, чтобы не переспамить. Змінено 27 листопада 2019 користувачем esculapra Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) On 11/26/2019 at 9:41 AM, kredit24 said: Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, не удивительно... в этом модуле механизм получения случайных товаров реализован через одно место: если утрировать до сути, то что-то вроде select ... from oc_product where... order by rand(). Слова "скорость", "быстро" и "order by rand()" в sql-запросах - несовместимы. Если кратко, то подобные запросы работают примерно так: возьмем список из всех-всех товаров магазина, добавим рядом с ними вымышленную колонку со случайным числом, а потом отсортируем по этой вымышленной колонке. Какие индексы, вы что... этот механизм обречен тормозить и сколько-нибудь шустро работает только если только кол-во товаров <100шт. Если будете заказывать разработку своего модуля, который должен получать случайные товары - учтите, что подобных запросов в базу он делать не должен! Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 1 минуту назад, 100napb сказал: шустро работает только если только кол-во товаров <100шт. В том то и дело, что у меня 60к товаров.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) 20 minutes ago, kredit24 said: В том то и дело, что у меня 60к товаров.. вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Spoiler //if (!$product_data) { а так же ~130 Spoiler //} random.php Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пошук модулів Случайные товары в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
kredit24 Опубліковано: 26 листопада 2019 Автор Share Опубліковано: 26 листопада 2019 2 минуты назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Клоакинг это обман пользователя, мы можем назвать свой блок "Другие товары нашего магазина" Что здесь обманного? Например у вас в самой младшей подкатегории 2-3 товара, а этот блок может предложить какие то другие варианты, пусть и из другой категории. К слову у меня 3 месяца как стоит блок со случайно сгенерированными товарами в категориях и брендах, на скрине видно как это индексируется.. Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 14 минут назад, esculapra сказал: Это назвается "клоакинг" - можно попасть под пессимизацию поисковиков. Это в каком месте? Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 50 минут назад, kredit24 сказал: блок "Другие товары нашего магазина" Ну тогда другое дело. Я подумал, что случайные товары выводятся как товары категории. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 27 листопада 2019 Share Опубліковано: 27 листопада 2019 (змінено) В 26.11.2019 в 12:59, esculapra сказал: Это назвается "клоакинг" Беру слова обратно. Но. Категория - это стартап ПС . И таки да, нужно указать боту путь для индексации страниц (товаров в нашем случае). А теперь я думаю с точки зрения поискового бота. 1) я тут уже был, но добавилась ссылка - проверю. 2) Гребаный насос! - эту ссылку я уже проверял 1-2-90-109 раз! - переспам. Гипотетически одна ссылка может рандомизировать "бочку меда" Саму идею уже осмыслил и поддерживаю, но необходимо продумать алгоритм, чтобы не переспамить. Змінено 27 листопада 2019 користувачем esculapra Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) On 11/26/2019 at 9:41 AM, kredit24 said: Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, не удивительно... в этом модуле механизм получения случайных товаров реализован через одно место: если утрировать до сути, то что-то вроде select ... from oc_product where... order by rand(). Слова "скорость", "быстро" и "order by rand()" в sql-запросах - несовместимы. Если кратко, то подобные запросы работают примерно так: возьмем список из всех-всех товаров магазина, добавим рядом с ними вымышленную колонку со случайным числом, а потом отсортируем по этой вымышленной колонке. Какие индексы, вы что... этот механизм обречен тормозить и сколько-нибудь шустро работает только если только кол-во товаров <100шт. Если будете заказывать разработку своего модуля, который должен получать случайные товары - учтите, что подобных запросов в базу он делать не должен! Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 1 минуту назад, 100napb сказал: шустро работает только если только кол-во товаров <100шт. В том то и дело, что у меня 60к товаров.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) 20 minutes ago, kredit24 said: В том то и дело, что у меня 60к товаров.. вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Spoiler //if (!$product_data) { а так же ~130 Spoiler //} random.php Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пошук модулів Случайные товары в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
esculapra Опубліковано: 26 листопада 2019 Share Опубліковано: 26 листопада 2019 50 минут назад, kredit24 сказал: блок "Другие товары нашего магазина" Ну тогда другое дело. Я подумал, что случайные товары выводятся как товары категории. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 27 листопада 2019 Share Опубліковано: 27 листопада 2019 (змінено) В 26.11.2019 в 12:59, esculapra сказал: Это назвается "клоакинг" Беру слова обратно. Но. Категория - это стартап ПС . И таки да, нужно указать боту путь для индексации страниц (товаров в нашем случае). А теперь я думаю с точки зрения поискового бота. 1) я тут уже был, но добавилась ссылка - проверю. 2) Гребаный насос! - эту ссылку я уже проверял 1-2-90-109 раз! - переспам. Гипотетически одна ссылка может рандомизировать "бочку меда" Саму идею уже осмыслил и поддерживаю, но необходимо продумать алгоритм, чтобы не переспамить. Змінено 27 листопада 2019 користувачем esculapra Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) On 11/26/2019 at 9:41 AM, kredit24 said: Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, не удивительно... в этом модуле механизм получения случайных товаров реализован через одно место: если утрировать до сути, то что-то вроде select ... from oc_product where... order by rand(). Слова "скорость", "быстро" и "order by rand()" в sql-запросах - несовместимы. Если кратко, то подобные запросы работают примерно так: возьмем список из всех-всех товаров магазина, добавим рядом с ними вымышленную колонку со случайным числом, а потом отсортируем по этой вымышленной колонке. Какие индексы, вы что... этот механизм обречен тормозить и сколько-нибудь шустро работает только если только кол-во товаров <100шт. Если будете заказывать разработку своего модуля, который должен получать случайные товары - учтите, что подобных запросов в базу он делать не должен! Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 1 минуту назад, 100napb сказал: шустро работает только если только кол-во товаров <100шт. В том то и дело, что у меня 60к товаров.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) 20 minutes ago, kredit24 said: В том то и дело, что у меня 60к товаров.. вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Spoiler //if (!$product_data) { а так же ~130 Spoiler //} random.php Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пошук модулів Случайные товары в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
esculapra Опубліковано: 27 листопада 2019 Share Опубліковано: 27 листопада 2019 (змінено) В 26.11.2019 в 12:59, esculapra сказал: Это назвается "клоакинг" Беру слова обратно. Но. Категория - это стартап ПС . И таки да, нужно указать боту путь для индексации страниц (товаров в нашем случае). А теперь я думаю с точки зрения поискового бота. 1) я тут уже был, но добавилась ссылка - проверю. 2) Гребаный насос! - эту ссылку я уже проверял 1-2-90-109 раз! - переспам. Гипотетически одна ссылка может рандомизировать "бочку меда" Саму идею уже осмыслил и поддерживаю, но необходимо продумать алгоритм, чтобы не переспамить. Змінено 27 листопада 2019 користувачем esculapra Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) On 11/26/2019 at 9:41 AM, kredit24 said: Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, не удивительно... в этом модуле механизм получения случайных товаров реализован через одно место: если утрировать до сути, то что-то вроде select ... from oc_product where... order by rand(). Слова "скорость", "быстро" и "order by rand()" в sql-запросах - несовместимы. Если кратко, то подобные запросы работают примерно так: возьмем список из всех-всех товаров магазина, добавим рядом с ними вымышленную колонку со случайным числом, а потом отсортируем по этой вымышленной колонке. Какие индексы, вы что... этот механизм обречен тормозить и сколько-нибудь шустро работает только если только кол-во товаров <100шт. Если будете заказывать разработку своего модуля, который должен получать случайные товары - учтите, что подобных запросов в базу он делать не должен! Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 1 минуту назад, 100napb сказал: шустро работает только если только кол-во товаров <100шт. В том то и дело, что у меня 60к товаров.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) 20 minutes ago, kredit24 said: В том то и дело, что у меня 60к товаров.. вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Spoiler //if (!$product_data) { а так же ~130 Spoiler //} random.php Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пошук модулів Случайные товары в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) On 11/26/2019 at 9:41 AM, kredit24 said: Сейчас стоит простой модуль, который генерирует случайные товары на лету, что замедляет сайт, не удивительно... в этом модуле механизм получения случайных товаров реализован через одно место: если утрировать до сути, то что-то вроде select ... from oc_product where... order by rand(). Слова "скорость", "быстро" и "order by rand()" в sql-запросах - несовместимы. Если кратко, то подобные запросы работают примерно так: возьмем список из всех-всех товаров магазина, добавим рядом с ними вымышленную колонку со случайным числом, а потом отсортируем по этой вымышленной колонке. Какие индексы, вы что... этот механизм обречен тормозить и сколько-нибудь шустро работает только если только кол-во товаров <100шт. Если будете заказывать разработку своего модуля, который должен получать случайные товары - учтите, что подобных запросов в базу он делать не должен! Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 1 минуту назад, 100napb сказал: шустро работает только если только кол-во товаров <100шт. В том то и дело, что у меня 60к товаров.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) 20 minutes ago, kredit24 said: В том то и дело, что у меня 60к товаров.. вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Spoiler //if (!$product_data) { а так же ~130 Spoiler //} random.php Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пошук модулів Случайные товары в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000
kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 1 минуту назад, 100napb сказал: шустро работает только если только кол-во товаров <100шт. В том то и дело, что у меня 60к товаров.. Надіслати Поділитися на інших сайтах More sharing options...
100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) 20 minutes ago, kredit24 said: В том то и дело, что у меня 60к товаров.. вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Spoiler //if (!$product_data) { а так же ~130 Spoiler //} random.php Змінено 28 листопада 2019 користувачем 100napb Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пошук модулів Случайные товары в категории
100napb Опубліковано: 28 листопада 2019 Share Опубліковано: 28 листопада 2019 (змінено) . Змінено 28 листопада 2019 користувачем 100napb даблпост Надіслати Поділитися на інших сайтах More sharing options... kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options... 100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
kredit24 Опубліковано: 28 листопада 2019 Автор Share Опубліковано: 28 листопада 2019 7 минут назад, 100napb сказал: вот, по-быстрому сваял на коленке небольшой фикс, что бы не использовать order by rand(). должно работать на порядок быстрее. Сделайте бэкап оригинального файла (/catalog/model/catalog/random.php)и попробуйте заменить его файлом с правками. Так же в этом модуле автором было предусмотрено кэширование результатов (если не надо, что бы после каждого обновления страницы выдавался случайный результат; стандартный кэш опенкарта 1 час). Для того что бы "включить" кэширование внутри файла можете раскомментировать ~72 строчку Показать контент //if (!$product_data) { а так же ~130 Показать контент //} random.php 7 \u043a\u0411 · 1 download Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. Надіслати Поділитися на інших сайтах More sharing options...
100napb Опубліковано: 30 листопада 2019 Share Опубліковано: 30 листопада 2019 On 11/28/2019 at 11:58 AM, kredit24 said: Спасибо, файл заменил, вроде всё работает, но чисто визуально скорость загрузки не изменилась, отправил в Явебмастере на проверку, посмотрим как бот отнесётся к изменениям.. по-быстрому проверить можно тут же, в инструментах Яндекс.Вебмастера https://webmaster.yandex.ru/tools/server-response/ просто вписываете url для проверки и получаете результат. На всякий случай. Для тех кто забредет в эту тему со схожей проблемой: тормозит модуль Random Product как бесплатный хотфикс - замените функцию внутри файла /catalog/model/catalog/random.php на ту, что под спойлером. работает на порядок быстрее: в пределах 0.1сек для 100к товаров. Не лучшее, но вполне-себе решение. Spoiler public function getRandomProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } if (isset($data['limit'])) { if ($data['limit'] < 1) { $data['limit'] = 5; } } else $data['limit'] = 5; $cache = md5(http_build_query($data)); $product_data = $this->cache->get('product.' . $cache . '.' . $customer_group_id); //if (!$product_data) { $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 FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) JOIN (SELECT product_id FROM " . DB_PREFIX . "product WHERE status = '1' ORDER BY RAND() limit " . (int)$data['limit'] . ") r on (r.product_id = p.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; $sql .= " GROUP BY p.product_id"; $product_data = array(); $query = $this->db->query($sql); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } //$this->cache->set('product.' . $cache . '.' . $customer_group_id, $product_data); //} return $product_data; } 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2
Recommended Posts