С течением времени у разработчика постепенно накапливается запас небольших готовых решений (так называемые сниппеты), которые кочуют из проекта в проект и упрощают жизнь. И одним из таких сниппетов является дополнение к HitsPage, которое выводит рейтинг ресурсов по количеству просмотров.
Для использования достаточно иметь переменную шаблона (TV), которая содержит количество просмотров.
<?php
$limit = (int)$modx->getOption('limit', $scriptProperties, 50);
$tvName = (string)$modx->getOption('tv', $scriptProperties, '');
$tv = $modx->getObject('modTemplateVar', ['name' => $tvName]);
if (is_object($tv) && $tv instanceof modTemplateVar) {
$q = $modx->newQuery('modTemplateVarResource');
$where = [
'tmplvarid' => $tv->get('id'),
];
$q->select([
'modTemplateVarResource.contentid',
'modTemplateVarResource.value',
'r.pagetitle'
]);
$q->innerJoin('modResource', 'r', 'r.id = modTemplateVarResource.contentid');
$q->where($where);
$q->limit($limit);
$q->sortby('CAST(modTemplateVarResource.value AS UNSIGNED)', 'DESC');
$q->prepare();
$q->stmt->execute();
$result = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $resource) {
echo $resource['value'].') <a href="'.$modx->makeUrl($resource['contentid']).'">'.$resource['pagetitle'].'</a>
';
}
} else {
echo 'TV \''.$tvName.'\' не существует';
}
Вызов сниппета:
[[!kotiki? &tv=`HitsPage` &limit=`50`]]
Теперь достаточно вызвать этот сниппет на странице и получить рейтинг просмотров ресурсов. Да, это точно не убийца Яндекс.Метрики и Google Analytics, но что есть, то есть.
Комментарии (0)