Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация 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.

Статистика

Опубликовано:

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

 

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

Не судите строго, я недавно начал изучать стили в 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. Или искать другой вариант добавления блока в сайдбар. Где даже на форуме был. Но там через редактирование общего шаблона.

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

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

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.