|
|
20.02.2015, 10:07
|
|
Гость
Гость
|
Добрый день!
Есть ли в NetCat функционал по подсчету просмотров страниц-постов (только живых, исключая ботов)?
Нужно не для статистики, а для вывода кол-ва просмотров под объектами (постами) в открытом доступе для посетителей.
Также нужно для построения списка популярных постов на основе кол-ва просмотров по каждому.
Если функционала нет, то как можно реализовать подсчет просмотров, используя стандартные функции NetCat?
С php я на уровне чайника или чуть получше :-)
|
|
|
20.02.2015, 10:50
|
|
Nexwich
Панасин Александр
Зарегистрирован: 2011-04-05
Сообщений: 1037
|
Создать в компоненте поле "Views" тип "число" со значением по умолчанию "0".
В полное отображение объекта вписать
Код:<?=$nc_core->db->query("UPDATE Message".$classID." SET Views=Views+1 WHERE Message_ID=".$f_RowID."")?>
Это простой способ без проверок
Для последующего ответа с моей стороны вам придется авторизоваться
Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
|
|
|
20.02.2015, 11:25
|
|
Гость
Гость
|
Александр, спасибо большое!
Без проверок - вы имете ввиду без проверки ботов?
А если в списке объектов, то эту же функцию использовать? Тогда наверное много запросов к базе будет, список объектов может быть длинный. Как тогда в списке выводить кол-во просмотров оптимизированно?
|
|
|
20.02.2015, 11:30
|
|
Гость
Гость
|
А-а, извините, немножко Вас не понял. Этот код, чтобы просмотры записывались (обновлялись).
А выводить в списке или отображении как обычно другие поля.
Александр, немножко не в тему, Вы версткой занимаетесь - HTML5, CSS3, JS и "натягиванием" в NetCat?
|
|
|
23.02.2015, 11:12
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Да, выводить значения счетчиков как обычные поля:
Код:Просмотров: <?=$f_Views?>
Вот, кстати, вам слегка доработанный вариант - он отбросит просмотры основными роботами при обновлении счетчика:
Код:<?
$useragent = $_SERVER['HTTP_USER_AGENT'];
$notbot = "Mozilla|Opera"; // Chrome|Safari|Firefox|Netscape - все идут с отметкой Mozilla
$bot = "Bot/|robot|Slurp/|yahoo";
if ( preg_match("/$notbot/i", $useragent) && !preg_match("!$bot!i", $useragent) ) {
$nc_core->db->query("UPDATE Message".$classID." SET Views=Views+1 WHERE Message_ID=".$f_RowID."");
}
?>
Если вы хотите выполнять обновление счетчика прямо в списке объектов, то запрос нужно, конечно, вынести из "объекта в списке" и поставить его в префикс списка объектов или в суффикс, а SQL-запрос вместе с if'ом модифицировать вот так:
Код:
if (count($row_ids) && preg_match("/$notbot/i", $useragent) && !preg_match("!$bot!i", $useragent) ) {
$nc_core->db->query("UPDATE Message".$classID." SET Views=Views+1 WHERE a.Message_ID IN (".join(",",$row_ids).")");
}
Тогда на каждый просмотр списка товаров, независимо от кол-ва товаров на странице, у вас будет всего лишь один update-запрос.
В недокументированной переменной $row_ids в префиксе списка объектов неткат отражает идентификаторы объектов, которые желает вывести в цикле. Полагаю, что и в суффиксе тоже (но я проверял только в префиксе, так что не гарантирую).
|
|
|
16.03.2015, 12:32
|
|
Гость
Гость
|
Спасибо, Руслан! Только сейчас увидел Ваш ответ.
|