Edycja szablonu ze statystykami i online

Założony przez  Illuminati.

wersja skryptu MyBB: 1.8.4
adres forum: http://forum.stormweb.pl/index.php
na czym polega problem (screen, opis, komunikaty, nazwa stylu/theme/szablonu):

Chodzi o to, że chciałem edytować szablon a dokładnie dwa szablony w taki sposób aby jedną zmienną przenieść do innego szablonu. Tak zrobiłem własnie z {$lang->stats_mostonline} przenosząc ją do szablonu index_whosonline, kod wygląda następująco:
<tr>
<td class="trow1"><span class="smalltext">{$lang->online_note}<br />{$lang->stats_mostonline}<br />{$onlinemembers}</span></td>
</tr>
Problem jest taki, ze zamiast ładnie wyświetlać ile i kiedy było najwięcej online to wyświetla mi taką linijkę:
Najwięcej użytkowników online - {1} - było {2} o {3}.
Co nalezy zrobić aby działało to prawidłowo?
A spróbuj:
Najwięcej użytkowników online - {$mostonline['numusers']} - było {$recorddate} o  {$recordtime}</span>
Prośby na PW dotyczące wsparcia z problemami będą ignorowane. Pomoc poza forum - odpłatna; kontakt: snakemybboard@gmail.com.
Po dodaniu tego wyświetla się tak:
Najwięcej użytkowników online - - było o
Jest jeszcze niezbyt dobre rozwiązanie:
1) napisać wtyczkę, która to wyświetli;
Rozwiązanie dla kodu z tego posta: Edycja szablonu ze statystykami i online - Post #264412
<?php


if(!defined('IN_MYBB')) die();

function 
lang_var_info(){
    return array(
        
"name"          => "Nazwa",
        
"description"   => "Opis",
        
"website"       => "",
        
"author"        => "Snake_",
        
"authorsite"    => "",
        
"version"       => "1.0",
        
"guid"          => "",
        
"codename"      => "",
        
"compatibility" => "*"
    
);
}

function 
lang_var_activate()
{
    
}

function 
lang_var_deactivate()
{
    
}
$plugins->add_hook('global_start''lang_var');

function 
lang_var() 
{
    global 
$cache$lang$recordcount$recorddate$recordtime$mostonline$mybb;
    
    
$mostonline $cache->read('mostonline');
    
$recordcount $mostonline['numusers'];
    
$recorddate my_date($mybb->settings['dateformat'], $mostonline['time']);
    
$recordtime my_date($mybb->settings['timeformat'], $mostonline['time']);
    
$lang->stats_mostonline $lang->sprintf($lang->stats_mostonlinemy_number_format($recordcount), $recorddate$recordtime);


Gdzie nazwa pliku to lang_var.php.
2) edytować plik źródłowy index.php - tylko, że przy aktualizacji będziesz musiał o zmianach pamiętać).
$mostonline $cache->read('mostonline');
    
$recordcount $mostonline['numusers'];
    
$recorddate my_date($mybb->settings['dateformat'], $mostonline['time']);
    
$recordtime my_date($mybb->settings['timeformat'], $mostonline['time']);

    
// Then format that language string.
    
$lang->stats_mostonline $lang->sprintf($lang->stats_mostonlinemy_number_format($recordcount), $recorddate$recordtime); 
Dodać przed
    eval('$whosonline = "'.$templates->get('index_whosonline').'";'); 

Proponuję użyć metody pierwszej (lepsza, bo nie trzeba się bawić przy każdej aktualizacji w edycję pliku).
Prośby na PW dotyczące wsparcia z problemami będą ignorowane. Pomoc poza forum - odpłatna; kontakt: snakemybboard@gmail.com.
A zapomniałem dodać choć dzisiaj mnie to już zdenerwowało, mam wgrany plugin template conditionals więc można jakoś powyższy kod uprościć czy wystarczy, ze wrzucę go do pomiędzy znaczniki <if...></if> ?
Illuminati napisał(a):A zapomniałem dodać choć dzisiaj mnie to już zdenerwowało, mam wgrany plugin template conditionals więc można jakoś powyższy kod uprościć czy wystarczy, ze wrzucę go do pomiędzy znaczniki <if...></if> ?
Jeśli chodzi o Template Conditionals, to niekoniecznie.

Można by w sumie coś pomyśleć i użyć PHP in Templates, chociaż nie byłoby sensu instalowania tego pluginu, skoro podałem Ci gotowca wtyczki. Na to samo wyjdzie.
Prośby na PW dotyczące wsparcia z problemami będą ignorowane. Pomoc poza forum - odpłatna; kontakt: snakemybboard@gmail.com.
Zastosowałem się do drugiego sposobu, imo prostszy :D
Tylko, że chyba źle napisałeś. Nie dodać "przed" a "po" tej ostatniej linijce co podałeś w pierwszym tagu. Bo zrozumiałem to tak, że trzeba to wklepać przed
$mostonline = $cache->read('mostonline');
Należy dodać przed:
eval('$whosonline = "'.$templates->get('index_whosonline').'";'); 

Drugi sposób prostszy? No polemizowałbym :D
Teraz czeka Cię edycja pliku index.php po każdej aktualizacji.

Jeśli chodzi o pierwszy sposób to tylko:
- utworzyć plik lang_var.php;
- jako zawartość wrzucić w/w kod;
- zapisać i wrzucić do inc/plugins;
- aktywować w ACP -> pluginy;
Uwierz mi, używając tego dodatku będziesz miał lepsze życie i przy aktualizacjach nie trzeba będzie się o to martwić. No, ale zrobisz jak uważasz.
Prośby na PW dotyczące wsparcia z problemami będą ignorowane. Pomoc poza forum - odpłatna; kontakt: snakemybboard@gmail.com.



Użytkownicy przeglądający ten wątek:

1 gości