XF 2.1 Изменения шаблона

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

Kostik

Только чтение
Сообщения
6
Реакции
1
Баллы
140
Шаблон PAGE_CONTAINER

Часть кода

Код:
<div class="p-title {{ $noH1 ? 'p-title--noH1' : '' }}">
<xf:contentcheck>
<xf:if is="!$noH1">
<h1 class="p-title-value">{$h1}</h1> // - Нужная строка
</xf:if>
<xf:if contentcheck="true">
<div class="p-title-pageAction"><xf:contentcheck><xf:pageaction /></xf:contentcheck></div>
</xf:if>
</xf:contentcheck>
</div>
</xf:if>
Есть рабочий скрипт работает если зайти на него напрямую (Скрипт вывода онлайна игрового сервера)


Хочу в p-title-value вместо {$h1}- Названия форума выставить online.php тот скрипт
подскажите как вывести результат для отображения
 
А мы ванги, и знаем что за скрипт, и в каком формате отдает данные?

В идеале, конечно, лучше создать виджет и вывести его в нужном месте при помощи "модификаций шаблонов"
 
Последнее редактирование:
Простите за формат , не знал как написать
PHP:
<?php


error_reporting(0);

class online {

    private $config;
    private $delay;
    private $filename;
    private $maxonline;
    private $online;

    public function __construct() {
        // Данные для соединения с базой сервера
        $this->config['host'] = 'localhost';
        $this->config['user'] = 'root';
        $this->config['password'] = 'fv123';
        $this->config['db'] = 'l2j';
        //Настройки
        $this->filename = 'cache.txt'; //имя файла,  В нем будет хранится реальный онлайн
        $this->delay = 300; // Время обновления онлайна из базы . например для обновления раз в 5 минут необходимо установить значение 300
    }

    public function get_online()
    {
        $this->new_online();
            $online = ($this->online);
            return round($online);
    }

    private function new_online() {
        $last_update = time() - filemtime($this->filename);
        if ($last_update > $this->delay) {
            $this->online = $this->refresh_online();
            $fp = fopen($this->filename, 'w');
            fwrite($fp, $this->online);
            fclose($fp);
            return true;
        } else {
            $fp = fopen($this->filename, "r");
            if ($fp) {
                $this->online = fgets($fp, 999);
            }
            fclose($fp);
            return true;
        }
    }

    private function refresh_online() {
        $conn = new mysqli($this->config['host'], $this->config['user'], $this->config['password'], $this->config['db']);
        $query = "SELECT  count(0) FROM `characters` WHERE `online`!=0";
        $result = $conn->query($query);
        if (!$result) {
            return false;
        }
        $rows = $result->fetch_assoc();
        $conn->close();
        $result->free();
        return $rows['count(0)'];
    }

}

$online = new online;
echo $online->get_online();

А мы ванги, и знаем что за скрипт, и в каком формате отдает данные?

В идеале, конечно, лучше создать виджет и вывести его в нужном месте при помощи "модификаций шаблонов"
щас попробую, надеюсь получится
 
Последнее редактирование модератором:
Все супер получилось без каких либо проблем
еще момент хотел бы уточнить
Код:
class status_bar {
    public static function renderWidget(\XF\Widget\AbstractWidget $abstractWidget)
    {
   
       $online = new online;
        echo $online->get_online();
       
        $fp = @fsockopen($servergame, $portgame, $errno, $errstr, 1);
        if($fp >= 1)
        {
            $gameonline = '<img src=on.png>';
        }
        else
        {
            $gameonline = '<img src=off.png>';
       
        }

        return $abstractWidget->renderer('server_widget', [
            // Здесь нужно указать параметры, которые нужно отображать в виджете
            'online_2' => $online->get_online(),
            'status_1' =>  $gameonline
        ]);
    }
}
выводит не как картинку а текстом img src=off.png

как исправить данное положение
 
Последнее редактирование:
Теперь совсем другая проблема ,
не видит совершенно запрос к серверу
пишет все время offline
хотя сервер Online
Код:
<?php

//include "config.php"; // подключаем файл с настройками подключения
class online {

    private $config;
    private $delay;
    private $filename;
    private $maxonline;
    private $online;

    public function __construct() {
        // Данные для соединения с базой сервера
        $this->config['host'] = 'Cкрыто';
        $this->config['user'] = 'скрыто';
        $this->config['password'] = 'скрыто';
        $this->config['db'] = 'скрыто';
        //-Настройки отображаения статус сервера-//
        $serverlogin="localhost";    // IP сервера   
        $servergame="localhost";    // IP сервера               
        $portgame="7777";            // Порт игрового сервера  [7777]
        $portlogin="2106";            // Порт логин сервера                [2106]
      
        //Настройки
        $this->filename = 'cache.txt'; //имя файла,  В нем будет хранится реальный онлайн
        $this->delay = 120; // Время обновления онлайна из базы . например для обновления раз в 5 минут необходимо установить значение 300
    }

    public function get_online()
    {
        $this->new_online();
            $online = ($this->online);
            return round($online);
    }
  

    private function new_online() {
        $last_update = time() - filemtime($this->filename);
        if ($last_update > $this->delay) {
            $this->online = $this->refresh_online();
            $fp = fopen($this->filename, 'w');
            fwrite($fp, $this->online);
            fclose($fp);
            return true;
        } else {
            $fp = fopen($this->filename, "r");
            if ($fp) {
                $this->online = fgets($fp, 999);
            }
            fclose($fp);
            return true;
        }
    }

    private function refresh_online() {
        $conn = new mysqli($this->config['host'], $this->config['user'], $this->config['password'], $this->config['db']);
        $query = "SELECT  count(0) FROM `characters` WHERE `online`!=0";
        $result = $conn->query($query);
        if (!$result) {
            return false;
        }
        $rows = $result->fetch_assoc();
        $conn->close();
        $result->free();
        return $rows['count(0)'];
    }
  


}




class status_bar {
    public static function renderWidget(\XF\Widget\AbstractWidget $abstractWidget)
    {
  
       $online = new online; // Создает переменную Онлайна

        $fp = @fsockopen($servergame, $portgame, $errno, $errstr, 1);
        $fp = @fsockopen($serverlogin, $portlogin, $errno, $errstr, 1);

        $game = ($fp >= 1) ? 'On-line': 'Off-line'; //запрос ответа от гейм сервера
        $login = ($fp >= 1) ? 'On-line': 'Off-line'; //запрос ответа от гейм сервера


        return $abstractWidget->renderer('server_widget', [
            // Здесь нужно указать параметры, которые нужно отображать в виджете
            'online_2' => $online->get_online(), //Выводит  Онлайн
            'status_2' => $login, //логин сервер
            'status_1' => $game //гейм сервер
        ]);
    }
}

искал другие запросы на сервер , все одно и тоже, не могу понять почему не работаетт
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу