Страница 1 из 2

Количество просмотров товара

Добавлено: 18.04.2017, 16:28
Julius123
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>

Добавлено: 07.01.2018, 15:29
pikasso
Как я понимаю это для Первой ветки Окай ?
так как во второй ветке я не нашел схожих кусков кода.

Добавлено: 07.03.2018, 20:32
pikasso
Ребята подскажите...Как я понимаю какая то не совместимость...3 раза делал не вышло.

Добавлено спустя 27 секунд:
не нашел нужных кусков кода

Добавлено: 07.03.2018, 22:44
wisma
Julius123 писал(а):В phpmyadmin выполняем запрос к БД

КОД: ВЫДЕЛИТЬ ВСЁ

ALTER TABLE `s_products` ADD `views` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `featured`
Ну как минимум запрос у вас не может пройти ) это от Симплы, но если порытся по файлам можно понять интуитивно куда добавить по инструкции..

Добавлено: 08.03.2018, 06:25
korshunov
По-моему, это совпадает один-к одному с разработкой для Simpla
http://forum.simplacms.ru/topic/1086-количество-просмотров-товаров/
аж от 2012 года.

Это не будет работать даже в версии 1.х.х, так как там код существенно другой. В частности, запросы в OkayCMS не такие.

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

Добавлено: 09.03.2018, 10:56
Julius123
korshunov писал(а):По-моему, это совпадает один-к одному с разработкой для Simpla
http://forum.simplacms.ru/topic/1086-количество-просмотров-товаров/
аж от 2012 года.

Это не будет работать даже в версии 1.х.х, так как там код существенно другой. В частности, запросы в OkayCMS не такие.

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

Как раз код и был для первой версии, для второй версии нужно поменять запрос вместо s_products поменять на ok_products и все будет работать, проверено на последней версии! Скриншот: http://prntscr.com/iounuw

Добавлено: 09.03.2018, 11:35
korshunov
Julius123 писал(а):Как раз код и был для первой версии

Не знаю, что Вы имеете в виду "для первой версии", но для версии 1.2.4
1. в api/Products.php НЕТ запроса, который Вы пишете в самом начале,
2. список полей не такой,
3. в запросе должно быть $lang_sql->fields, в Вашей инструкции этим и не пахнет.

В версии 1.1.10 то же самое.
Не проверял полностью, но, по-моему, для прочих версий 1.х.х те же замечания справедливы...

Добавлено: 23.03.2018, 12:26
pikasso
В общем на этом все и заглохло.... печалька
а по скрину как то не логично...заходить в редактирование товара , что бы увидеть количество просмотров....

Добавлено: 23.03.2018, 12:28
Julius123
pikasso писал(а):В общем на этом все и заглохло.... печалька
а по скрину как то не логично...заходить в редактирование товара , что бы увидеть количество просмотров....
Постараюсь в скором времени выложить актуальную инструкцию, на скриншоте вывод кол-во просмотров в админке для админа, чтобы админ видел в админке тоже, в карточке товара на сайте тоже отображается

Добавлено: 25.03.2018, 07:02
pikasso
Julius123 писал(а):
pikasso писал(а):В общем на этом все и заглохло.... печалька
а по скрину как то не логично...заходить в редактирование товара , что бы увидеть количество просмотров....
Постараюсь в скором времени выложить актуальную инструкцию, на скриншоте вывод кол-во просмотров в админке для админа, чтобы админ видел в админке тоже, в карточке товара на сайте тоже отображается
Было бы великолепно. )))

Добавлено: 14.05.2018, 06:12
korshunov
Julius123 писал(а):Постараюсь в скором времени выложить актуальную инструкцию...

Есть ли надежда на результат?

Добавлено: 07.11.2018, 20:28
pikasso
Надеюсь все же будет решение ...для более свежих версий...

Добавлено: 12.11.2018, 22:20
Elanlar
в api/products.php выборку делаем так

Код: Выделить всё

                p.views as views,
кроме этого я ещё добавил и такой кусок

Код: Выделить всё

                case 'views':
                    $order = 'p.views ASC';
                    break;
                case 'views_desc':
                    $order = 'p.views DESC';
                    break;

работает как часы

Добавлено: 13.11.2018, 16:48
pikasso
Elanlar писал(а):в api/products.php выборку делаем так

Код: Выделить всё

                p.views as views,
кроме этого я ещё добавил и такой кусок

Код: Выделить всё

                case 'views':
                    $order = 'p.views ASC';
                    break;
                case 'views_desc':
                    $order = 'p.views DESC';
                    break;

работает как часы
Это как дополнение к верхней инструкции?

Добавлено: 15.11.2018, 20:28
Elanlar
Да, верхняя инструкция для Симплы, но для OkayCMS надо немножко по другому.

Добавлено: 15.11.2018, 20:55
pikasso
Elanlar писал(а):Да, верхняя инструкция для Симплы, но для OkayCMS надо немножко по другому.
Есть подсказка?

Добавлено: 16.11.2018, 07:31
korshunov
pikasso писал(а):Есть подсказка?

Подсказка очевидная - переделать то решение под Okay с учетом всей разницы. Если рассчитываете получить готовый код - то это требует некоторых трудозатрат. Вот Julius123 еще полгода назад собирался выложить решение, то его пока нет - видимо, не совсем просто.

Добавлено: 16.11.2018, 15:37
Elanlar
pikasso писал(а):Есть подсказка?
наверху все показано, а Я подсказал как это в OkayCMS-е должен быть. Какая ещё подсказка нужна?

Добавлено: 06.08.2019, 13:10
MotoR4ik
так ни у кого и нету готового решения?

Добавлено спустя 1 час 7 минут:
Вроде все сделал, но почему то не работает добавления новых просмотров

Добавлено: 06.08.2019, 15:47
korshunov
MotoR4ik писал(а):Вроде все сделал, но почему то не работает добавления новых просмотров

Возможно, проверяете под админом, а в этом случае специально не увеличивается счетчик...