Главная » MODx- профессиональный инструмент для разработки сайтов » Количество просмотров на сайте MODx Evo
    РейтингРейтингРейтингРейтингРейтинг


Количество просмотров на сайте MODx Evo

В данной статье рассмотрен сниппет счетчик просмотров страницы. Каждый посетитель сайта сможет увидеть количество показов страницы, а Вы сможете отследить посещаемость того или иного ресурса. Значение заходов на страницу поможет выявить ее рейтинг, а также это потенциальный показатель для сортировки статей.

1. Создайте новый TV-параметр
Имя параметра: countViews
Заголовок: Количество просмотров
Тип ввода: Text
привяжите его к шаблонам, которые используют страницы доступные для счетчика.


2. Создайте новый чанк
Название чанка: countViews
Описание: Количество просмотров
Код чанка

<div class="countViews">Просмотров: [ [ countViews? &type=`output` &id=`` &tvid=`12` ] ]</div>


Данный чанк выводит показатель счетчика посещений. В моем случае счетчик используется в шаблонах вывода статей через ditto, поэтому в вызове сниппета Вы видите плейсхолдер , а сам сниппет countViews кешированный.


3. Создайте новый сниппет
Название сниппета: countViews
Описание: Счетчик просмотров


Код сниппета

<?php
$type = isset($type) ? $type : 'output';
$table = $modx->getFullTableName('site_tmplvar_contentvalues'); 
$insert = false;
$lock = ($lock == '1') ? true : false;
$_SESSION['countViews'] = is_array($_SESSION['countViews']) ? $_SESSION['countViews'] : array();
$countViews = (isset($_SESSION['countViews'][$id]) && $_SESSION['countViews'][$id] === true) ? true : false;
$usertype = isset($_SESSION['usertype']) ? $_SESSION['usertype'] : 'user';

switch($type) {

case 'output':

$count = $modx->getTemplateVar('countViews', '*', $id);
echo ($count['value'] == '' ? '0' : $count['value']);

break;

case 'counter':

if($usertype == 'manager' || ($lock && $countViews)) {

break;

} else {

$tvar = $modx->db->select('value', $table, 'tmplvarid ="'.$tvid.'" and contentid="'.$id.'"');

if($modx->db->getRecordCount($tvar) == 0) {
$insert = true;
$count = 0;
} else {
$row = $modx->db->getRow($tvar);
$count = $row['value'];
}

$count++;
$_SESSION['countViews'][$id] = true;

$fields = array('value' => $count, 'tmplvarid' => $tvid, 'contentid' => $id); 
if($insert) {
$modx->db->insert($fields, $table);
} else {
$modx->db->update($fields, $table, 'tmplvarid = "'.$tvid.'" and contentid = "'.$id.'"');
}

}

break;

}
?>



4. В том месте, где нужно вывести показатель посещаемости страницы вызовите чанк

{ {countViews} }


На самой странице, счет посещений которой нужно вести, вызовите сниппет:

[ !countViews? &type=`counter` &id=`15` &tvid=`12`! ]


Теперь параметры сниппета countViews:

type - Тип вызова сниппета
output - Вывести счет посещений
counter - Пересчитать счет посещений (прибавляет 1 после вызова с данным значением параметра type) 
id - ID страницы, счет которой нужно вывести или пересчитать tvid - ID TV-параметра countViews lock - Блокировать повторный просмотр
0 - Не блокировать (можно накручивать просмотры обновлением страницы)
1 - Блокировать
По-умолчанию 0


 

css template

Не забывайте написать ваш комментарий, понравилась ли статья. От вас пару слов, а мне — признание поисковых систем, что пишу нормальные человеческий статьи. Заранее спасибо вам!