Выводим количество пользователей по группам
- 470 просмотров
- 23 января, 2023
- Обновлено: 16 октября, 2023
- admin
- Время чтения: 2 минуты
Видимо, данная задача решается отдельным плагином, но мы просто напишем маленькую функцию. Для примера используем php-файл темы оформления, например, nemesis.php. Начальный вариант функции выглядит так:
function cot_count_users($group) { $db_users = Cot::$db->users; $group = (int)$group ? $group : 4; $total = Cot::$db->query(" SELECT COUNT(*) FROM $db_users WHERE user_maingrp = $group ")->fetchColumn(); return $total; }
Ничего сложного, как видим. Вначале проверяем аргумент (номер группы) на целое значение. Если номер не указан, используем значение 4 -- группа зарегистрированных пользователей. Добавляем нашу функцию в шаблон, например, index.tpl:
{PHP|cot_count_users('5')}
Поскольку с полученным значением все же надо что-то делать, передадим его в стандартную "коробочную" функцию Cotonti cot_declension, предварительно определив для нее языковую переменную типа Ls:
$Ls['users'] = 'пользователь,пользователя,пользователей';
Теперь снова начинаем работать в шаблоне:
{PHP|cot_count_users('5')|cot_declension($this, 'users')}
Вместо сухого числа имеем фразу вида "5 пользователей". Уже неплохо. Но давайте не будем напрягать шаблонизатор и сформируем весь вывод в нашей функции:
function cot_count_users($group = 4, $decl = '') { $db_users = Cot::$db->users; $group = (int)$group ? $group : 4; $total = Cot::$db->query(" SELECT COUNT(*) FROM $db_users WHERE user_maingrp = $group ")->fetchColumn(); $total = empty($decl) ? $total : cot_declension($total, $decl); return $total; }
Как видим, наша функция принимает два аргумента с указанными значениями по умолчанию. При использовании ее в шаблоне в виде:
{PHP|cot_count_users()}
получим простое количество в виде целого числа. Если же укажем оба аргумента, например, так:
{PHP|cot_count_users('5', 'users')}
, то получим на выходе красивое "5 пользователей".
Выводы
Наша несложная функция позволяет выводить в необходимой локации количество пользователей в группе, указанной в виде аргумента. Если функцию объявлять в php-файле темы, она может использоваться глобально. Если же глобально не требуется, к использованию ресурсов хостинга подходить рационально, возможно для ее размещения стоит использовать часть плагина с каким-либо "локальным" хуком. Например, page.tags или page.list.tags.
Новый комментарий