Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Статистика

Здравствуйте знатоки!

 

У меня пару вопросов касаемо изменения шаблона.

Не судите строго, я недавно начал изучать стили в IPB(касаемо своего форума)

 

Кратко о форуме:

Форум находится в локальной сети, доступа извне нет, если какая-то информация нужна, спрашивайте, предоставлю.

Движок: IPB 2.3.6

Шаблон стандартный

 

Вопросы:

 

1. Хотел добавить блок справа, добавил.

Мои действия:

 

Админцентр > Список стилей > Изменение HTML шаблонов skin_boards (главная страница) > PageTop

В самый низ шаблона вставить:

<table border="0" cellpadding="0" cellspacing="0" width="100%">
   <tr>
       <td>

Админцентр > Список стилей > Изменение HTML шаблонов skin_boards (главная страница) > stats_footer

В самый низ шаблона вставить:

       </td>
       <td align="left" valign="top" width="20%">
            <div class="borderwrap">

<div class="maintitle"><p><!--Блог 1--></p></div>

<div class="tablepad"><!--Текст в блоге--></p></div></div>
           </div>
           <br />
<div class="borderwrap">
<div class="maintitle"><p><!--Блог 2--></p>
<div class="tablepad"><!--Текст в блоге--></p></div>
           </div>
           <br />
       </td>
   </tr>
</table>

Проблема: при отключении статистики блок пропадает.

 

2. Хочу отключить статистику на главной и добавить показ количество пользователей онлайн в ручную, где см.скриншот №1:

Необходимо добавить рядом следующее:

Онлайн: число(Пользователей число)

 

Нашел значения которые отвечают за вызов данных

Админцентр > Список стилей > Изменение HTML шаблонов skin_boards (главная страница) > ActiveUsers

<tr>
		<td class="formsubtitle" colspan="2">{$active['TOTAL']} {$this->ipsclass->lang['active_users']}</td>
	</tr>
	<tr>
		<td class="row1" width="1%"><{F_ACTIVE}></td>
		<td class="row2">
			<b>{$active['GUESTS']}</b> {$this->ipsclass->lang['guests']}, <b>{$active['MEMBERS']}</b> {$this->ipsclass->lang['public_members']}, <b>{$active['ANON']}</b> {$this->ipsclass->lang['anon_members']}
			<div class="thin">{$active['NAMES']}</div>
			{$active['links']}
		</td>
	</tr>
	<!--IBF.WHOSCHATTING-->

 

Нашел куда добавлять

Админцентр > Список стилей > Изменение HTML шаблонов skin_global (глобальные шаблоны) > global_board_footer

Как мне его добавить правильно или может быть я его не туда добавляю или надо редактировать сам файл php?

Если брать например

{$active['GUESTS']} и {$active['MEMBERS']}

Который отвечает за вывод количество гостей и пользователей и добавить вот так:

<td width="45%" align="right" nowrap="nowrap">Онлайн: {$active['GUESTS']}(Пользователей {$active['MEMBERS']})<% QUICKSTATS %>{$this->ipsclass->lang['global_timeisnow']}: {$time}</td>

То ничего не работает, только добавляется текст, как мне это осуществить? Будьте добры подсказать, где мне копать..

Рекомендованные сообщения

Админцентр > Список стилей > Изменение HTML шаблонов skin_global (глобальные шаблоны) > global_board_footer

Если в этом шаблоне нет переменной $active, то откуда взяться данным.

  • Автор

Если в этом шаблоне нет переменной $active, то откуда взяться данным.

Не подскажите, где эта переменная находится? php файле?

sources/lib/func_boardstats.php

В функции active_users формируются данные. Только не массив с данными, а html. Также зависит от настройки показывать активных или нет.

 

- Можно в функцию добавить аргумент, как возвращать данные "массив или html".

В sources/lib/func_boardstats.php найти

	function active_users()

Заменить на

	function active_users($html=true)

Найти

			return $this->ipsclass->compiled_templates['skin_boards']->ActiveUsers($active, $this->ipsclass->vars['au_cutoff']);

Заменить на

			return ($html ? $this->ipsclass->compiled_templates['skin_boards']->ActiveUsers($active, $this->ipsclass->vars['au_cutoff']) : $active);

Найти

if ($this->ipsclass->vars['allow_online_list'])

Заменить на

if ($this->ipsclass->vars['allow_online_list'] and $html)

Либо, если нужны ссылки (Полный список по: последним действиям, именам пользователей), то

			if ($this->ipsclass->vars['allow_online_list'])
		{

Заменить на

			if ($this->ipsclass->vars['allow_online_list'])
		{
			if (!isset($this->ipsclass->compiled_templates['skin_boards']))
			{
				$this->ipsclass->load_template('skin_boards');
			}

- Включить поддержку php в шаблонах

init.php

define( 'IPB_ACP_ALLOW_TEMPLATE_PHP', 1 );

 

- Использовать в шаблонах

<php>
$boardStats = $this->ipsclass->load_class( ROOT_PATH.'sources/lib/func_boardstats.php', 'func_boardstats' );
$activeUsers = $boardStats->active_users(false);
</php>
Онлайн: {$activeUsers['GUESTS']}(Пользователей {$activeUsers['MEMBERS']})

  • Автор

Благодарю за информацию, сегодня попробую.

 

Со статистикой поможете?

При отключении статистики, боковая панель отключается.

Изменено пользователем NetTomsk

  • Автор

После изменения как Вы описали, вываливается ошибка при просмотре профиль пользователя или темы код ошибки 500

В логах

PHP Fatal error:  Call to a member function active_user_links() on a non-object in /var/www/wwwroot/data/www/sources/lib/func_boardstats.php on line 240

После изменения как Вы описали, вываливается ошибка при просмотре профиль пользователя или темы код ошибки 500

Я поправил пост.

Со статистикой поможете?

При отключении статистики, боковая панель отключается.

Не могу воспроизвести проблему.

Отключил Показывать статистику форума? (Отображение статистики форума внизу главной страницы.). Сайдбар на месте.

  • Автор

Хорошо, где вырезать статистику?

Хорошо, где вырезать статистику?

Поискать в шаблонах :)

  • Автор

Может есть возможность скрыть статистику от пользователей?

Не нашел такой функции в настройках форума

  • Автор

PHP Parse error: syntax error, unexpected '?>', expecting function (T_FUNCTION) in /var/www/wwwroot/data/www/sources/lib/func_boardstats.php on line 611

PHP Parse error: syntax error, unexpected '?>', expecting function (T_FUNCTION) in /var/www/wwwroot/data/www/sources/lib/func_boardstats.php on line 611

Проверяйте правильность правок.

Может есть возможность скрыть статистику от пользователей?

Не нашел такой функции в настройках форума

sources/action_public/boards.php

Статистика

			$this->output .= $this->ipsclass->compiled_templates['skin_boards']->stats_header($this->statfunc->users_online, $this->statfunc->total_posts, $this->statfunc->total_members, $show);
		$this->output .= $stats_html;
		$this->output .= $this->ipsclass->compiled_templates['skin_boards']->stats_footer();

  • Автор

Проверил еще раз, скопировал из бэкапа func_boardstats.php

В sources/lib/func_boardstats.php

   function active_users()

Заменил на

   function active_users($html=true)

Далее

           return $this->ipsclass->compiled_templates['skin_boards']->ActiveUsers($active, $this->ipsclass->vars['au_cutoff']);

Заменил на

           return ($html ? $this->ipsclass->compiled_templates['skin_boards']->ActiveUsers($active, $this->ipsclass->vars['au_cutoff']) : $active);

Далее

if ($this->ipsclass->vars['allow_online_list'])

Заменил на

           if ($this->ipsclass->vars['allow_online_list'])
           {
               if (!isset($this->ipsclass->compiled_templates['skin_boards']))
               {
                   $this->ipsclass->load_template('skin_boards');
               }

 

В шаблоне global_board_footer добавил в начале

<php>
$boardStats = $this->ipsclass->load_class( ROOT_PATH.'sources/lib/func_boardstats.php', 'func_boardstats' );
$activeUsers = $boardStats->active_users(false);
</php>

И

<td width="45%" align="right" nowrap="nowrap">Онлайн: {$activeUsers['GUESTS']}(Пользователей {$activeUsers['MEMBERS']})<% QUICKSTATS %>{$this->ipsclass->lang['global_timeisnow']}: {$time}</td>

Верно? После этих действий вываливается ошибка

Верно?

Нет.

Смотрите внимательно.

Далее

if ($this->ipsclass->vars['allow_online_list'])

Где открывающая скобка?

В моем варианте

Либо, если нужны ссылки (Полный список по: последним действиям, именам пользователей), то

            if ($this->ipsclass->vars['allow_online_list'])

            {

  • Автор

Статистику закомментировал и блок пропал

Статистику закомментировал и блок пропал

Читаем

Ваше

Админцентр > Список стилей > Изменение HTML шаблонов skin_boards (главная страница) > stats_footer

Мое

$this->output .= $this->ipsclass->compiled_templates['skin_boards']->stats_footer();

Естественно то, что Вы добавили в шаблон, не будет выводиться. Если не принципиально можно скрыть статистику через css. Или искать другой вариант добавления блока в сайдбар. Где даже на форуме был. Но там через редактирование общего шаблона.

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.