Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Помогите немного переделать модуль


Recommended Posts

Здравствуйте!

Есть модуль Popular Products, который выводит самые просматриваемые товары по значению p.viewed

Хочу переделать этот модуль для вывода самых комментируемых товаров (т.е. у которых самое большое к-во отзывов).

В контроллере есть такой запрос, который я так понимаю отвечает за выборку самых просматриваемых товаров

$query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY p.viewed DESC LIMIT " . (int)$setting['limit']);

Если я правильно понимаю надо заменить p.viewed на что-то другое, но не знаю на что в таблице product вроде нет такой информации.

Помогите разобраться! С меня пиво ;)

Link to post
Share on other sites

23 минуты назад, BogdanUbi сказал:

Помогите разобраться! С меня пиво ;)

Отзывы в табличке _review. Вам нужно проверить что в таблице продукт товары включены и в продукт_то_стор выбран нужный магазин (как это в вашем примере сделано), а отсорторовать их не по viewed, а по количеству строк с текущим продукт_ид в _review.

Пива сегодня не хочу, так что сам запрос вам какой нибудь другой любитель пива подскажет, если не справитесь самостоятельно)) 

Link to post
Share on other sites

25 минут назад, iglin сказал:

Пива сегодня не хочу, так что сам запрос вам какой нибудь другой любитель пива подскажет, если не справитесь самостоятельно)) 

А мороженка? ))))

Link to post
Share on other sites

Написал в личку, помогу сейчас

Link to post
Share on other sites

10 минут назад, BogdanUbi сказал:

А мороженка? ))))

Мне даже раскладку клавиатуры переключать лениво, выж видели в каком формате я алгоритм расписал)))

К тому же вон уже добрый человек какой то нашёлся) Правда странно почему помогать в личку ушел, а не сюда)

Link to post
Share on other sites

Прежде чем напиисать как, хотел протестировать у него в базе, в своей протестил. если еще кому понадобится

 

$query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY p.viewed DESC LIMIT " . (int)$setting['limit']);

заменить на

$query = $this->db->query("SELECT p.product_id, (SELECT COUNT(*) FROM " . DB_PREFIX . "review WHERE " . DB_PREFIX . "review.product_id=p.product_id) AS rcount FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY rcount DESC LIMIT " . (int)$setting['limit']);

 

 

  • +1 2
Link to post
Share on other sites


то есть добавили подсчет комментов


, (SELECT COUNT(*) FROM " . DB_PREFIX . "review WHERE " . DB_PREFIX . "review.product_id=p.product_id) AS rcount

 

и потом сортировка по новому полю, здесь я его назвал rcount

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.