Jump to content

Статистика форума


Recommended Posts

07.01.2022 в 16:26, Атаман сказал:

General Statistics 1.0.1

ага, спасибо огромное. А по второй статистике не подскажите ? 

1.png

Edited by vitaliiigoreviz
Link to comment
Share on other sites

2 часа назад, Атаман сказал:

Штатная, добавьте блок.

Штатный У меня отображает только зарегестрированных. Ещё вопрос. А как убрать Регистрация такого то числа Пробовал спрятать класс через none в стилях - не прокатывает. Может есть какой то способ ?

Link to comment
Share on other sites

  • 8 months later...

Как для дефолтных виджетов статистики посчитать количество форумов в Forums и количество категорий в Files?

Примеры из других виджетов:

$stats['total_videos'] = \IPS\Db::i()->select( 'COUNT(*)', 'videos_cat', array( 'file_open=?', 1 ) )->first();
$stats['totalAlbums'] = \IPS\gallery\Album\Item::databaseTableCount( TRUE );

Планирую использовать тут:

/applications/forums/widgets/forumStatistics.php
/applications/downloads/widgets/downloadStats.php

Edited by root108
Link to comment
Share on other sites

 

07.01.2022 в 14:38, vitaliiigoreviz сказал:

А как мне сделать статистику форума и пользователей такую же как у вас ?

Я на старом дизайне не использовал плагины, использовался функционал блоков Pages в которых было вставлено содержимое шаблонов.

 

1 час назад, root108 сказал:

Как для дефолтных виджетов статистики посчитать количество форумов в Forums и количество категорий в Files?

Примеры из других виджетов:

$stats['total_videos'] = \IPS\Db::i()->select( 'COUNT(*)', 'videos_cat', array( 'file_open=?', 1 ) )->first();
$stats['totalAlbums'] = \IPS\gallery\Album\Item::databaseTableCount( TRUE );

 

Как пом мне, наверное лучше использовать стандартный функционал Nodes (Overview of Nodes - Developer Documentation) чем отдельный запросы.

А так количество всех родителей и потомков, в нашем случае форумов и подфорумов (считаются все, в том числе и категории):

        $rootsForum = \IPS\forums\Forum::roots();
        $countForums = count($rootsForum);
        
        foreach ($rootsForum as $root) {
            $countForums = $countForums + (($root->hasChildren()) ? $root->childrenCount() : 1);
        }

        echo $countForums;

Для Downloads код будет такой же, только вместо \IPS\forums\Forum будет \IPS\downloads\Category.

 

1 час назад, root108 сказал:

Планирую использовать тут:

/applications/forums/widgets/forumStatistics.php
/applications/downloads/widgets/downloadStats.php

Надеюсь отнаследуетесь и сделаете плагин?

  • Like 1
Link to comment
Share on other sites

38 minutes ago, Lesovsky said:

Надеюсь отнаследуетесь и сделаете плагин?

Я не сильно программист. Для подсчета категорий в Downloads сделал следующую конструкцию, которая работает (по аналогии с другим виджетом):

$stats['total_downloads'] = \IPS\Db::i()->select( 'COUNT(*)', 'downloads_categories' )->first();

Для форумов у меня есть пример для подсчета всех тем:

		/* TOTAL TOPICS */
		if ( \IPS\Settings::i()->zerostats_topics )
		{
			$stats['total_topics'] = \IPS\Db::i()->select( "COUNT(*)", 'forums_topics', array( 'approved = ?', 1 ) )->first();
		}

Подскажите, как по аналогии будет выглядеть ваша конструкция для подсчета всех форумов + подфорумов?

Edited by root108
Link to comment
Share on other sites

Вот тут что нужно добавить?

		/* TOTAL FORUMS */
		if ( \IPS\Settings::i()->zerostats_forums )
		{
			$stats['total_forums'] = ..............................
		}

 

Edited by root108
Link to comment
Share on other sites

if ( \IPS\Settings::i()->zerostats_forums )

Настройки с таким ключом нет (если вы её сами не добавили), поэтому это условие не актуально.

 

Если вам не нужно проверять права доступа исключая например приватные разделы, тогда мой код не нужен, а по аналогии как вы сделали по примеру:

$stats['total_forums'] = \IPS\Db::i()->select( 'COUNT(*)', 'forums_forums' )->first();

И ваша строчка:

$stats['total_downloads'] = \IPS\Db::i()->select( 'COUNT(*)', 'downloads_categories' )->first();

Т.е. просто в /applications/forums/widgets/forumStatistics.php вставить эти две строчки над:

return $this->output( $stats );

 

И всё, а в шаблоне добавить вывод используя эти ключи.

  • Like 1
Link to comment
Share on other sites

Спасибо огромное. Сейчас попробую для форумов. Еще небольшой вопрос, проверьте, пожалуйста аналогичные запросы правильные или нет? Приложение Musicbox:

/* TOTAL MUSICBOX PLAYLISTS */
            $stats['total_musicboxplaylists'] = \IPS\Db::i()->select( "COUNT(*)", 'musicbox_categories' )->first();

 /* TOTAL MUSICBOX PERFORMERS */
            $stats['total_musicboxperformers'] = \IPS\Db::i()->select( "COUNT(*)", 'musicbox_artists' )->first();
       
 /* TOTAL MUSICBOX COMPOSITIONS */
            $stats['total_musicboxcompositions'] = \IPS\Db::i()->select( "COUNT(*)", 'musicbox_songs' )->first();

А вот тут я не знаю, как посчитать количество прослушиваний всех композиций в Muscidbox. В приложении рядом с каждой композицией отображается количество прослушиваний. Как их суммировать правильно? Ниже пример подсчета из приложения Videos. Что в нем поменять?
        

        /* TOTAL MUSICBOX NUMBER OF COMPOSITIONS PLAYS */
            $stats['total_musicboxplays'] = \IPS\Db::i()->select( "SUM(views)", 'videos_videos', array( 'video_status=1' ) )->first();

 

Link to comment
Share on other sites

Тут нашел количество просмотров категории (playlist): image.thumb.jpeg.951f9ecdfd6890ab664ebf6310f96453.jpeg

Обнаружил, что это же поле отвечает и за просмотр (прослушивание) отдельной комозиции.

Edited by root108
Link to comment
Share on other sites

15 минут назад, root108 сказал:

Приложение Musicbox

К сожалению у меня нет данного приложения, выкладывать сюда по нашим правилам нельзя, т.к. оно платное, но что вы привели похоже на истину, в том числе и по views.

  • Like 1
Link to comment
Share on other sites

Вроде получилось посчитать. Есть какой-то универсальный способ в файл плагина .xml добавилять сразу перевод языковых строк, а не только языковые строки на английском? В системе два языка: английский и русский. ID русского языка на разных сайтах может отличаться. Для английского  в файле добавлено:

<word key="zerostats_musicboxperformers" js="0">Listen performers</word>

 

Edited by root108
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...