Добро пожаловать на сайт SEDBY

Выводим количество пользователей по группам

Популярные запросы: тема Omnis, плагин Pagelist, Cotonti 0.9.24.2, ЧПУ, Font Face

  • 482 просмотра
  • 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.

Новый комментарий

Имя:
Для редактирования комментария осталось 10 минут
Блок пользователя
Регистрация на нашем сайте позволит вам общаться на форумах и получить доступ к другому полезному функционалу
Вы вошли как Гость