Блок статуса сервера для форума XenForo

  • Автор темы Автор темы Andrey
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Andrey

Я админ,смекаешь?
Команда форума
Админ
Зануда
Проверенный
Местный
1.png
Создаем блок по инструкции ниже, кидаем папку Example из архива в папку с форумом /var/www/forum/library

Инструкция актуальна только для XenForo 1.2 и выше, в старых версиях эта конструкция работать не будет!

Реализация проходит в два этапа:

I. Создаем свой блок в боковой панели:

Идём в панель управления, далее в внешний вид, далее выбираем иконку "Шаблоны", после чего нажимаем кнопку + Создать новый шаблон, придумываем имя, например у нас шаблон назван - ServerStatus. И добавляем в него следующий код:
Код:
<div class="section">

<div class="secondaryContent">

<h3>Статус сервера</h3>

<xen:callback class="Example_Banner_index" method="getHtml"></xen:callback>

</div>

</div>
Сохраняем.

Далее открываем шаблон forum_list и в удобное для Вас место вставляем:
Код:
<xen:include template="ServerStatus" />
Если Вы хотите добавить свою боковую панель под блоком "Пользователи онлайн", то в шаблоне forum_list найдите:

Код:
<xen:sidebar>

<xen:edithint template="sidebar.css" />
И ниже добавьте:

Код:
<xen:include template="ServerStatus" />
Если Вам нужно разместить нашу боковую панель ниже статистики форума, то всё в том же шаблоне (forum_list) найдите:

Код:
<!-- block: forum_stats -->
<div class="section">
<div class="secondaryContent statsList" id="boardStats">
<h3>{xen:рhrase forum_statistics}</h3>
<div class="pairsJustified">
<dl class="discussionCount"><dt>{xen:рhrase discussions}:</dt>
<dd>{xen:number $boardTotals.discussions}</dd></dl>
<dl class="messageCount"><dt>{xen:рhrase messages}:</dt>
<dd>{xen:number $boardTotals.messages}</dd></dl>
<dl class="memberCount"><dt>{xen:рhrase members_count}:</dt>
<dd>{xen:number $boardTotals.users}</dd></dl>
<dl><dt>{xen:рhrase latest_member}:</dt>
<dd><xen:username user="$boardTotals.latestUser" /></dd></dl>
<!-- slot: forum_stats_extra -->
</div>
</div>
</div>
<!-- end block: forum_stats -->
И ниже добавляем:

Код:
<xen:include template="ServerStatus" />
Ну и наконец, если Вам нужно добавить новую боковую панель под блок "Поделиться этой страницей, то в шаблоне forum_list находим:

Код:
<xen:include template="sidebar_share_page">
<xen:set var="$url">{xen:link canonical:index}</xen:set>
</xen:include>
И ниже добавляем:

Код:
<xen:include template="ServerStatus" />


II. Вызов .php файла непосредственно из шаблона.

В XenForo 1.2 был введён новый тег <xen:callback>, который позволяет вызывать php файлы непосредственно из шаблонов.
Создаём файл index.php с таким содержимым:
PHP:
<?php

class Example_Banner_index {
  public static function getHtml() {
    include '/var/www/forum/library/Example/Banner/banner.php';
    return $output;
  }
}
?>
И кладём его по пути: /var/www/forum/library/Example/Banner/index.php
Создаём файл banner.php с таким содержимым:
PHP:
<?php
//Специально для http://kn1fe-zone.ru
$config = array
(
        'host'    =>    'localhost',
        'user'    =>    'root',
        'pass'    =>    'pass',
        'name'    =>    'pw',
        'link'        =>    'ip',
        'port'        =>    '29000',
);

$link = mysql_connect($config['host'], $config['user'], $config['pass']);
mysql_select_db($config['name'], $link);
        $fp = fsockopen($config['link'], $config['port'], $err, $err, 1);

    if(!$fp)
        $servstatus = '<font color="red">Offline.</font>';
    else
        $servstatus = '<font color="green">Online.</font>';

$online = mysql_query("select count(*) from point where zoneid='1'");
        $on = mysql_fetch_row($online);
        $on[0] = $on[0];
        $query = mysql_query("select userid from auth where rid = '0'");
        $count = 0;
        $off_count = 0;
        while($o2 = mysql_fetch_array($query))
            {
                    $online = mysql_query("select * from point where uid='".$o2[0]."'and zoneid='1'");
                    $o = mysql_fetch_row($online);
                    $query2 = mysql_query("select name from users where id = '".$o2[0]."'");
                    while($o3 = mysql_fetch_array($query2))
                    {
                            if ($o[3] == 1)
                            {
                                $count++;
                            }
                            else
                            {
                                $off_count++;
                            }
                    }
            }
    $Query = mysql_query("SELECT * from users");
    $akkov = mysql_num_rows($Query);
echo <<<html
<center>
<b>Сервер: $servstatus<br/>
Кол-во в сети: $on[0]<br/>
Кол-во GM в сети: $count<br/>
Аккаунтов на сервере: $akkov<br/>
html;
mysql_close();
?>
 

Вложения

Кто скачивал предыдущию версию статуса, наверняка сталкивался с проблемой что Админ панель съезжала в низ

Все было из за того что в кодировке UTF-8 был скрытый символ, отсюда собственно и ошибки были на форуме.
Вот кому нужно исправленный статус сервера.
1.png
2.png
 

Вложения

Для тех у кого серв и сайт стоят отдельно, поменяйте содержимое index.php на
PHP:
<?phpclass Example_Banner_index {
public static function getHtml() {
return file_get_contents('ТУТ ССЫЛКА ДО ФАЙЛА НА СЕРВЕРЕ');
}
}?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху