Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

как можно сделать так, чтобы связанные товары каждый раз при заходе в товар показывались разные?

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 53
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

nigga извини за флуд, дай ссылку на сайт, чтобы посмотреть как работает рандомно колонка с отзывами. У себя поставил не пашет :(

Ссылка на сообщение
Поделиться на другие сайты

В файле Storefront.class.php примерно на 437-438 строках находим

if (is_array($ids))
{

После добавляем переменнную $order = 'products.RAND()';

Далее перед

//С дополнительными категориями

Пишем

else $order = 'products.order_num desc';

И теперь в самом запросе вместо ORDER BY products.order_num desc пишем ORDER BY $order

П.С. Это теория, но должна работать - нету под рукой заполненной Симплы, а на сайте клиента не хочу экспериментировать :)

Ссылка на сообщение
Поделиться на другие сайты

#mart
не надо у клиента :) Там и так товары подбираются из этой категории, а если не хватает выбирает из соседних случайно.
Руками указывать связанные - это как-то напряжно, если товаров много

Ссылка на сообщение
Поделиться на другие сайты

без изменений(((((

Я например вижу это так:
1. Чтобы можно было ввести артикулы товаров в строку через запятую в "связанные товары" и они при каждом новом открытии товара показывались в разном порядке.

либо

2. При вводе артикула товара, добавлялись четыре товара вразнобой из категории вписанного артикула товара!!

как-то так)

Ссылка на сообщение
Поделиться на другие сайты

проще всего было бы конечно просто сделать так, при нажатии галочки автоматически включалась бы функция рандомного отображения товаров в "связанные товары"

монстры программинга какие у Вас на это мысли?
сможете реализовать?

Ссылка на сообщение
Поделиться на другие сайты

Галочки .. зачем? Мы просто выставили условия на странице продукта для связанных товаров. Определились, что товаров связанных должно быть 8 штук на странице продукта. 4 по строке. 2 раза. Логика такая показа товаров:

1. Товары связанные можно добавлять обычным образом - по артикулам при редактировании.
2. ЕСЛИ у товара РУКАМИ назначено МЕНЬШЕ 8, То автоматически из базы выбираются:
2.1. Добиваются до 8 из этой категории случайные.
2.2. Если в категории не набирается 8 товаров, добавляются рандомные из базы.

Получается у товара всегда 8 связанных предложений. И они перемешиваются рандомно.
Нам это дописывали по заданию.

Ссылка на сообщение
Поделиться на другие сайты

интересное решение
мне это подходит

я готов приобрести это дополнение у вас, в коде много править надо?

Ссылка на сообщение
Поделиться на другие сайты

#mart: У тебя же есть доступ к нашему сайту. Скопируй оттуда код просто и отдай человеку. Пока кофе пьешь - успеешь. :)) чего велосипед изобретать :)

вообще считаю надо все такие мелкие addons собрать и выложить как mart делает. вида маленьких инструкций по добавлению функционала. Кому что надо - выбрал, потом сам поковырялся и по инструкции фишечку добавил. Я думаю это отличный вариант развития. кстати я вот тут писал про доработки http://forum.simplacms.ru/comments.php?DiscussionID=458&Focus=2067#Comment_2067

а лучше на сайте самого движка сделать такой раздел. Зашел, а там заголовки "Добавить ХХХХХХ".
жмешь подробнее и читаешь, как это сделать самому. Набрать много чего можно туда.

Ссылка на сообщение
Поделиться на другие сайты

всё отлично, спасибо Mart
благодарность переведена)

но есть ещё пара нюансов:
можно ли сделать так чтобы эта функция включалась добавлением не только реально связанного товара, а чтобы можно было ввести допустим определённое число 000
+ можно ли ещё сделать так чтобы товар брался не из одной а из разных категорий?

Ссылка на сообщение
Поделиться на другие сайты

нашёл простое решение) для пункта 2

количество связанных товаров делается на одно больше
далее создаётся и скрывается товар с артикулом 000
после этого ко всем товарам добавляется этот артикул 000

всё)

Ссылка на сообщение
Поделиться на другие сайты

http://blog.rlstudio.com/2011/02/dorabotki-magazina-simpla-sluchajnye-svyazannye-tovary/ исправил пару ситуаций по работе хака - спасибо за комментарии и дополнения.

Ссылка на сообщение
Поделиться на другие сайты
  • 10 месяцев спустя...

с недавнего времени хостинг стал жаловаться на это:

"Уведомляем Вас, что работой базы данных MySQL xxx создается повышенная нагрузка на
сервер баз данных. Примеры запросов находятся в прикрепленном файле.
Оптимизируйте, пожалуйста, Ваши скрипты, SQL-запросы и дайте нам знать о результатах.
Например, Вы можете использовать метод EXPLAIN для выяснения "тяжелых" запросов и создание
индексов (CREATE INDEX), тем самым снизив нагрузку на базу данных."

Вот что в прикрепленном файле:
"SELECT products.product_id FROM products LEFT JOIN categories ON categories.category_id = products.category_id LEFT JOIN products_categories ON products_categories.category_id = products.category_id WHERE products.enabled=1 AND (products.product_id <> 557 OR products.product_id <> 772) AND ( categories.category_id = 61 OR products_categories.category_id = 61 ) GROUP BY products.product_id ORDER BY RAND() LIMIT 8;

SELECT products.product_id FROM products LEFT JOIN categories ON categories.category_id = products.category_id LEFT JOIN products_categories ON products_categories.category_id = products.category_id WHERE products.enabled=1 AND (products.product_id <> 557 OR products.product_id <> 838) AND ( categories.category_id = 61 OR products_categories.category_id = 61 ) GROUP BY products.product_id ORDER BY RAND() LIMIT 8;

SELECT products.product_id FROM products LEFT JOIN categories ON categories.category_id = products.category_id LEFT JOIN products_categories ON products_categories.category_id = products.category_id WHERE products.enabled=1 AND (products.product_id <> 557 OR products.product_id <> 821) AND ( categories.category_id = 61 OR products_categories.category_id = 61 ) GROUP BY products.product_id ORDER BY RAND() LIMIT 8;

SELECT products.product_id FROM products LEFT JOIN categories ON categories.category_id = products.category_id LEFT JOIN products_categories ON products_categories.category_id = products.category_id WHERE products.enabled=1 AND (products.product_id <> 557 OR products.product_id <> 830) AND ( categories.category_id = 63 OR products_categories.category_id = 63 ) GROUP BY products.product_id ORDER BY RAND() LIMIT 8;


это как то решается? чтобы скрипт сильно не нагружал mysql?
у кого ещё ругались хосты?

Ссылка на сообщение
Поделиться на другие сайты

Сам по себе вызов RAND() тяжел, т.к. он сначала прогоняет всю базу, а потом из нее выбирает. Возможно быстрее будет выбрать все товары и в PHP их "зарандомить". Т.е. получаем все индексы входящих в указанные категории товаров, выбираем из них несколько случайных, и по ним обычным методом get_products по ids получает информацию о товарах.

Ссылка на сообщение
Поделиться на другие сайты

круто, наверное согласен
хотя ничего не понял

что и где поменять/исправить, чтобы "вызов к базе" был лёгок?

Ссылка на сообщение
Поделиться на другие сайты

Попробуйте просто запрос заменить на такой:
SELECT products.product_id FROM products WHERE products.enabled=1 ORDER BY RAND() LIMIT 8;

Он будет делать абсолютно тоже самое, только в 100500 раз быстрее

Ссылка на сообщение
Поделиться на другие сайты

> Это да, но в том варианте, что я делал первый раз задача была именно товары из этой же категории.

Но в приведенных запросах нет условия про эту же категорию. А нет, есть действительно.
Но вот это уж точно можно убрать (products.product_id <> 557 OR products.product_id <> 830)

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...