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

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


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

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

 

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

 

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

Изменено пользователем Foх
Ссылка на сообщение
Поделиться на другие сайты

Поделитесь?

 

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>

 

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

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

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

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

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

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

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

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

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

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

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