Foх Posted April 13, 2017 Report Share Posted April 13, 2017 (edited) Добрый день. Кто нибудь реализовывал сортировку товаров по популярности? Тоесть вывод товаров по количеству просмотров. ............... Нашел решение. Edited April 13, 2017 by Foх Quote Link to post Share on other sites
FreePM Posted April 13, 2017 Report Share Posted April 13, 2017 Поделитесь? Quote Link to post Share on other sites
Foх Posted April 14, 2017 Author Report Share Posted April 14, 2017 Поделитесь? api/Products.php в функции get_products ищем запрос $query = "SELECT p.id, p.url, p.brand_id, p.name, p.annotation, p.body, p.position, p.created as created, p.visible, p.featured, p.meta_title, p.meta_keywords, p.meta_description, b.name as brand, b.url as brand_url FROM __products p ...... добавляем в SELECT выбор еще одного поля p.views и того выходит $query = "SELECT p.id, p.url, p.brand_id, p.name, p.annotation, p.body, p.position, p.created as created, p.visible, p.featured, p.meta_title, p.meta_keywords, p.meta_description, p.views, b.name as brand, b.url as brand_url FROM __products p ...... в функции get_product тоже правим запрос $query = $this->db->placehold("SELECT DISTINCT p.id, p.url, p.brand_id, p.name, p.annotation, p.body, p.position, p.created as created, p.visible, p.featured, p.meta_title, p.meta_keywords, p.meta_description На $query = $this->db->placehold("SELECT DISTINCT p.id, p.url, p.brand_id, p.name, p.annotation, p.body, p.position, p.created as created, p.visible, p.featured, p.meta_title, p.meta_keywords, p.meta_description, p.views также в этом классе добавляем функцию /** * Функция вносит +1 к просмотру товара * @param $id * @retval object */ public function update_views($id) { $this->db->query("UPDATE __products SET views=views+1 WHERE id=?", $id); return true; } В phpmyadmin выполняем запрос к БД ALTER TABLE `s_products` ADD `views` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `featured` правим view/ProductView.php После // Выбираем товар из базы $product = $this->products->get_product((string)$product_url); if(empty($product) || (!$product->visible && empty($_SESSION['admin']))) return false; добавляем if($product->visible && empty($_SESSION['admin'])) $this->products->update_views($product->id); Правки в шаблоне: product.tpl и products.tpl в удобном для Вас месте добавляем <small>Просмотров: {$product->views}</small> и делаем сортировку по просмотрам. в api/products.php находим код if(!empty($filter['sort'])) switch ($filter['sort']) { case 'position': $order = 'p.position DESC'; break; case 'name': $order = 'p.name'; break; Вставляем: case 'views': $order = 'p.views DESC'; break; Затем в в products.tpl <div class="sort"> Сортировать по <a {if $sort=='position'} class="selected"{/if} href="{url sort=position page=null}">умолчанию</a> <a {if $sort=='price'} class="selected"{/if} href="{url sort=price page=null}">цене</a> <a {if $sort=='views'} class="selected"{/if} href="{url sort=views page=null}">популярности</a> <a {if $sort=='name'} class="selected"{/if} href="{url sort=name page=null}">названию</a> </div> Чтоб количество просмотров товара считалось конкретно у вас, нужно выйти из сессии администратора. Или зайти с другого браузера. Quote Link to post Share on other sites
FreePM Posted April 14, 2017 Report Share Posted April 14, 2017 Спасибо за мануал Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.