Jump to content

Сортировка Товаров По Популярности


Recommended Posts

Добрый день. Кто нибудь реализовывал сортировку товаров по популярности? Тоесть вывод товаров по количеству просмотров.

 

...............

 

Нашел решение.

Edited by Foх
Link to post
Share on other sites

Поделитесь?

 

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>

 

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...