Jump to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

(SOS34) Monthly Top Posters 1.0.0


(SOS34) Monthly Top Posters 1.0.0 - хук отображает топ постеров за месяц в боковом блоке.


 

  • 1 year later...

Поставил этот хук, но он учитывает сообщения пользователей даже из тем с отключенным счетчиком. Каким образом сделать так, чтобы количество сообщений в хуке было равно количеству сообщений в профиле? IPB 3.4.6

Каким образом сделать так, чтобы количество сообщений в хуке было равно количеству сообщений в профиле? IPB 3.4.6

Покажите мне, где в профиле есть статистика постов по месяцам.

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

P.S. может быть есть другой аналогичный хук, где учтен этот момент?

Edited by ss11

Есть за все время http://ipbmafia.ru/files/file/1132-sos34-members-stats-on-board-index-sidebar-100/

 

Если нужен именно этот, то можете открыть xml-файл, найти 

		$where = array( "EXTRACT(MONTH FROM FROM_UNIXTIME(p.post_date)) = {$month}", "EXTRACT(YEAR FROM FROM_UNIXTIME(p.post_date)) = {$year}" );

и ниже добавить 

		$where[] = "f.inc_postcount=1";

Посты из форумов, где отключен счетчик, не будут входить в статистику.

  • 11 месяцев спустя...
  • 1 year later...

помогите. Как убрать форматирование в этом хуке?

подробно на скриншоте

Screenshot_1.jpg

что нужно изменить в коде хука чтоб ники были без форматирования?

заранее спасибо. код хука вот

Спойлер

<?xml version="1.0" encoding="utf-8"?>
<hookexport>
  <hookdata>
    <config>
      <hook_name>(SOS34) Monthly Top Posters</hook_name>
      <hook_desc>Will show top monthly posters on sidebar</hook_desc>
      <hook_author>Adriano Faria</hook_author>
      <hook_email>administracao@sosinvision.com.br</hook_email>
      <hook_website>http://www.sosinvision.com.br</hook_website>
      <hook_update_check/>
      <hook_requirements><![CDATA[a:3:{s:21:"required_applications";a:1:{s:6:"forums";a:3:{s:8:"app_name";s:6:"Forums";s:11:"min_version";i:34006;s:11:"max_version";i:0;}}s:20:"hook_php_version_min";s:0:"";s:20:"hook_php_version_max";s:0:"";}]]></hook_requirements>
      <hook_version_human>1.0.0</hook_version_human>
      <hook_version_long>10000</hook_version_long>
      <hook_extra_data><![CDATA[a:5:{s:7:"display";a:3:{s:8:"language";s:50:"From forums_public_boards: topMonthlyPosters_month";s:9:"templates";s:35:"From skin_boards: topMonthlyPosters";s:8:"settings";s:90:"Setting groups: (SOS34) Monthly Top Posters<br />Settings: EXCLUDE Groups, Number of Users";}s:13:"settingGroups";a:1:{i:0;s:17:"topMonthlyPosters";}s:8:"settings";a:2:{i:0;s:24:"topMonthlyPosters_groups";i:1;s:20:"topMonthlyPosters_nr";}s:8:"language";a:1:{s:20:"forums_public_boards";a:1:{i:0;s:23:"topMonthlyPosters_month";}}s:9:"templates";a:1:{s:11:"skin_boards";a:1:{i:0;s:17:"topMonthlyPosters";}}}]]></hook_extra_data>
      <hook_key>topMonthlyPosters</hook_key>
      <hook_global_caches/>
    </config>
  </hookdata>
  <hookfiles>
    <file>
      <hook_file_real>topMonthlyPosters.php</hook_file_real>
      <hook_type>templateHooks</hook_type>
      <hook_classname>topMonthlyPosters</hook_classname>
      <hook_data><![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:0:"";s:15:"classToOverload";s:0:"";s:9:"skinGroup";s:11:"skin_boards";s:12:"skinFunction";s:18:"boardIndexTemplate";s:4:"type";s:7:"foreach";s:2:"id";s:11:"side_blocks";s:8:"position";s:9:"outer.pre";}]]></hook_data>
      <hooks_source><![CDATA[<?php

class topMonthlyPosters
{
    public $registry;
    public $member;
    public $cache;

    public function __construct()
    {
        $this->registry = ipsRegistry::instance();
        $this->DB        =  $this->registry->DB();
        $this->settings =& $this->registry->fetchSettings();
        $this->cache    = $this->registry->cache();
        $this->caches   =& $this->registry->cache()->fetchCaches();
        $this->member   = $this->registry->member();
        $this->memberData =& $this->registry->member()->fetchMemberData();
        $this->registry->class_localization->loadLanguageFile( array( 'public_boards', 'forums' ) );
    }

    public function getOutput()
    {
        if ( IPSMember::isInGroup( $this->memberData, explode( ',', IPSText::cleanPermString( $this->settings['topMonthlyPosters_groups'] ) ) ) )
        {
            return false;
        }

        $month         = date('m');
        $year        = date('Y');
        $monthname  = gmstrftime( '%B', time() );

        $where = array( "EXTRACT(MONTH FROM FROM_UNIXTIME(p.post_date)) = {$month}", "EXTRACT(YEAR FROM FROM_UNIXTIME(p.post_date)) = {$year}" );

        $this->DB->build( array( 'select'   => 'm.member_id, m.members_display_name, m.member_group_id, m.members_seo_name, COUNT(*) AS posts',
                                 'from'     => array( 'members' => 'm' ),
                                 'where'    => implode( ' AND ', $where ),
                                 'add_join' => array( 0 => array( 'select' => 'pp.*',
                                                                   'from'  => array( 'profile_portal' => 'pp' ),
                                                                  'where' => 'pp.pp_member_id=m.member_id',
                                                                  'type'  => 'left' ),
                                                      1 => array( 'from'  => array( 'posts' => 'p' ),
                                                                  'where' => 'p.author_id=m.member_id',
                                                                  'type'  => 'left' ),
                                                      2 => array( 'from'  => array( 'topics' => 't' ),
                                                                  'where' => 't.tid=p.topic_id',
                                                                  'type'  => 'left' ),
                                                      3 => array( 'from'  => array( 'forums' => 'f' ),
                                                                  'where' => 'f.id=t.forum_id',
                                                                  'type'  => 'left' ) ),
                                 'group'    => 'p.author_id',
                                 'order'    => 'posts DESC',
                                 'limit'    => array( 0, $this->settings['topMonthlyPosters_nr'] ),
        ) );

        $q = $this->DB->execute();

        if ( $this->DB->getTotalRows( $q ) )
        {
            $top_posters = array();

            while( $r = $this->DB->fetch( $q ) )
            {
                $r = IPSMember::buildDisplayData( $r );
                
                $top_posters[ $r['member_id'] ] = $r;
            }

            return $this->registry->output->getTemplate( 'boards' )->topMonthlyPosters( $top_posters, $monthname );
        }
    }
}]]></hooks_source>
    </file>
  </hookfiles>
  <hookextras_settings>
    <setting>
      <conf_is_title>1</conf_is_title>
      <conf_title_title>(SOS34) Monthly Top Posters</conf_title_title>
      <conf_title_desc>Settings for this hook</conf_title_desc>
      <conf_title_noshow>0</conf_title_noshow>
      <conf_title_keyword>topMonthlyPosters</conf_title_keyword>
      <conf_title_app>forums</conf_title_app>
      <conf_title_tab>Hooks</conf_title_tab>
    </setting>
    <setting>
      <conf_id>1505</conf_id>
      <conf_title>EXCLUDE Groups</conf_title>
      <conf_description><![CDATA[Select which user groups YOU DON'T WANT to show the sidebar block]]></conf_description>
      <conf_group>201</conf_group>
      <conf_type>multi</conf_type>
      <conf_key>topMonthlyPosters_groups</conf_key>
      <conf_value/>
      <conf_default/>
      <conf_extra>#show_groups#</conf_extra>
      <conf_evalphp><![CDATA[$key = 'topMonthlyPosters_groups';

if ( $save == 1)
{
    if ( is_array($_POST[ $key ]) )
    {
        $_POST[ $key ] = implode(",",$_POST[ $key ]);
    }
    else
    {
        $_POST[ $key ] = "";
    }
}
if ( $show == 1 )
{
    $key .= '[]';
}]]></conf_evalphp>
      <conf_protected>1</conf_protected>
      <conf_position>2</conf_position>
      <conf_start_group/>
      <conf_add_cache>1</conf_add_cache>
      <conf_keywords/>
      <conf_title_keyword>topMonthlyPosters</conf_title_keyword>
      <conf_is_title>0</conf_is_title>
    </setting>
    <setting>
      <conf_id>1504</conf_id>
      <conf_title>Number of Users</conf_title>
      <conf_description/>
      <conf_group>201</conf_group>
      <conf_type>input</conf_type>
      <conf_key>topMonthlyPosters_nr</conf_key>
      <conf_value/>
      <conf_default>5</conf_default>
      <conf_extra/>
      <conf_evalphp/>
      <conf_protected>1</conf_protected>
      <conf_position>1</conf_position>
      <conf_start_group/>
      <conf_add_cache>1</conf_add_cache>
      <conf_keywords/>
      <conf_title_keyword>topMonthlyPosters</conf_title_keyword>
      <conf_is_title>0</conf_is_title>
    </setting>
  </hookextras_settings>
  <hookextras_language>
    <language>
      <word_app>forums</word_app>
      <word_pack>public_boards</word_pack>
      <word_key>topMonthlyPosters_month</word_key>
      <word_default>Top Poster</word_default>
    </language>
  </hookextras_language>
  <hookextras_modules/>
  <hookextras_help/>
  <hookextras_templates>
    <templates>
      <template_group>skin_boards</template_group>
      <template_content><![CDATA[<div class='ipsSideBlock clearfix'>
    <h3>{$this->lang->words['topMonthlyPosters_month']} ({$monthname})</h3>
    <div class='_sbcollapsable'>
        <ul class='ipsList_withminiphoto'>
            <if test="top_posters:|:is_array( $top_posters ) && count( $top_posters )">
                {parse striping="top_posters" classes="row1,row2 altrow"}
                <foreach loop="top_posters:$top_posters as $r">
                    <li class='clearfix'>
                        <a href='{parse url="showuser={$r['member_id']}" seotitle="{$r['members_seo_name']}" template="showuser" base="public"}' title='{$this->lang->words['view_profile']}' class='ipsUserPhotoLink left'><img src='{$r['pp_mini_photo']}' alt="{$r['members_display_name']}{$this->lang->words['users_photo']}" class='ipsUserPhoto ipsUserPhoto_mini' /></a>
                        <div class='list_content'>
                            {IPSMember::makeProfileLink(IPSMember::makeNameFormatted( $r['members_display_name'], $r['member_group_id']), $r['member_id'])}
                            <p class='desc ipsType_smaller'>
                                {parse format_number="$r['posts']"} {$this->lang->words['posts']}
                            </p>
                        </div>
                    </li>
                </foreach>
            </if>
        </ul>
    </div>
</div>]]></template_content>
      <template_name>topMonthlyPosters</template_name>
      <template_data>$top_posters, $monthname</template_data>
      <template_updated>1235666400</template_updated>
      <template_removable>0</template_removable>
      <template_added_to>1</template_added_to>
      <template_user_added>1</template_user_added>
      <template_user_edited>0</template_user_edited>
      <template_master_key>root</template_master_key>
    </templates>
  </hookextras_templates>
  <hookextras_css/>
  <hookextras_replacements/>
  <hookextras_tasks/>
  <hookextras_database_create/>
  <hookextras_database_alter/>
  <hookextras_database_update/>
  <hookextras_database_insert/>
</hookexport>
 

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.