С течением времени у разработчика постепенно накапливается запас небольших готовых решений (так называемые сниппеты), которые кочуют из проекта в проект и упрощают жизнь. И одним из таких сниппетов является дополнение к 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, но что есть, то есть.