Foх Опубликовано 13 апреля, 2017 Жалоба Поделиться Опубликовано 13 апреля, 2017 (изменено) Добрый день. Кто нибудь реализовывал сортировку товаров по популярности? Тоесть вывод товаров по количеству просмотров. ............... Нашел решение. Изменено 13 апреля, 2017 пользователем Foх Цитата Ссылка на сообщение Поделиться на другие сайты
FreePM Опубликовано 13 апреля, 2017 Жалоба Поделиться Опубликовано 13 апреля, 2017 Поделитесь? Цитата Ссылка на сообщение Поделиться на другие сайты
Foх Опубликовано 14 апреля, 2017 Автор Жалоба Поделиться Опубликовано 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> Чтоб количество просмотров товара считалось конкретно у вас, нужно выйти из сессии администратора. Или зайти с другого браузера. Цитата Ссылка на сообщение Поделиться на другие сайты
FreePM Опубликовано 14 апреля, 2017 Жалоба Поделиться Опубликовано 14 апреля, 2017 Спасибо за мануал Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.