Cześć.
DrunkenDuck. Po pierwsze to cieszę się, że prowadzisz stronę dla Polonii. Jak dobrze zrozumiałem, to angielskiej, prawda?. I tak trzymaj!!
Twój problem prawdopodobnie dotyczy nie tylko modułu "
mod_whosonline" czyli "
Gościmy", bo jak pisze
wikary, jest on elementem składowym standardowego pakietu instalacyjnego z
Joomla, ale prawdopodobnie też wersji pliku językowego
Joomla "
polish.php". Piszesz, że nadpisałeś pliki z modułem. Tylko że istnieją dwie wersje modułu. Ja mam np. starszą, ale już w
Joomla 1.12 jest zmodyfikowana wersja, mimo że daty są takie same i plik
XML jest identyczny.
Żeby Ci zobrazować, a także innym, w czym leży problem, przedstawię Ci poniżej kod znajdujący się w pliku "
mod_whosonline.php" w
Joomla 1.07, gdzieś koło linii 36:
Kod 1a:Kod: |
if ($guest_array != 0 && $user_array==0) {
if ($guest_array==1) {
$content.=_WE_HAVE;
$content.=_GUEST_COUNT;
$content.=_ONLINE;
eval ("\$content = \"$content\";");
} else {
|
... i jeszcze od linii 60, dla pełnego zobrazowania:
Kod: |
} else {
$content.=_WE_HAVE;
$content.=_GUESTS_COUNT;
$content.=_ONLINE;
$content.=_AND;
eval ("\$content = \"$content\";");
}
|
...i odpowiadające mu stałe w pliku "
polish.php"
Joomla 1.07:
Kod 1b:
Kod: |
//** whos_online.php */
DEFINE('_WE_HAVE', 'Odwiedza nas ');
DEFINE('_AND', ' oraz ');
DEFINE('_GUEST_COUNT','$guest_array go¶ć');
DEFINE('_GUESTS_COUNT','$guest_array go¶ci');
DEFINE('_MEMBER_COUNT','$user_array użytkownik');
DEFINE('_MEMBERS_COUNT','$user_array użytkowników');
DEFINE('_ONLINE',' Online');
DEFINE('_NONE','Jeste¶ tylko Ty!');
/** modules/mod_stats.php */
|
A teraz "
mod_whosonline.php" w
Joomla 1.12, gdzieś koło linii 44:
Kod 2a:
Kod: |
if ($guest_array != 0 || $user_array != 0) {
$output .= _WE_HAVE;
// guest count handling
if ($guest_array == 1) {
// 1 guest only
$output .= sprintf( _GUEST_COUNT, $guest_array );
} else if ($guest_array > 1) {
// more than 1 guest
$output .= sprintf( _GUESTS_COUNT, $guest_array );
}
// if there are guests and members online
if ($guest_array != 0 && $user_array != 0) {
$output .= _AND;
}
// member count handling
if ($user_array == 1) {
// 1 member only
$output .= sprintf( _MEMBER_COUNT, $user_array );
} else if ($user_array > 1) {
// more than 1 member
$output .= sprintf( _MEMBERS_COUNT, $user_array );
}
$output .= _ONLINE;
}
|
...i odpowiadające mu zdefiniowane stałe w pliku "
polish.php"
Joomla 1.12:
Kod 2b:
Kod: |
/** whos_online.php */
DEFINE('_WE_HAVE', 'Odwiedza nas ');
DEFINE('_AND', ' oraz ');
DEFINE('_GUEST_COUNT','%s go¶ć');
DEFINE('_GUESTS_COUNT','%s go¶ci');
DEFINE('_MEMBER_COUNT','%s użytkownik');
DEFINE('_MEMBERS_COUNT','%s użytkowników');
DEFINE('_ONLINE','');
DEFINE('_NONE','Jeste¶ tylko Ty!');
/** modules/mod_banners */
|
...czyli dla starszej wersji modułu używane są zmienne
$guest_array, które to umieszczone są w pliku językowym
Joomla 1.07. Natomiast nowsza wersja modułu używa już funkcji
sprintf, która zamienia sformatowane dane na łańcuch znaków. Zmienna
%s - oznacza łańcuch tekstowy. I te zmienne
%s umieszczone są pliku języka
Joomla 1.12.
Zwróć uwagę na to, że moduł ten nie ma własnego pliku językowego, więc pobiera wartości do stałych np.
_GUEST_COUNT, które akurat tutaj mogą mieć różne wartości, ze zdefiniowanych stałych językowych znajdujących się w pliku "
polish.php" w katalogu "
./language/", czyli w głównym katalogu
Joomla.
A teraz jak wyleczyć
cię z Twojej bolączki:
- Pobierz sobie dwa pliczki poniżej. Po opisach poznasz, do której wersji Joomla są przynależne. Jeden jest oznaczony jako 1.0.7plus, bo nie sprawdzałem, od jakiej wersji nastąpiła zmiana. Być może już od 1.11, lub 1.10. Zawsze można to sprawdzić studiując ten post i porównując kody 1ab i 2ab.
- Jeśli posiadasz kod w pliku językowym z Joomla 1.07 i z kodu 1b, nadpisz pliki, po uprzednim rozpakowaniu "mod_whosonline_1.07plus.zip"
- Jeśli posiadasz kod w pliku językowym z Joomla 1.12 i z kodu 2b, nadpisz pliki, po uprzednim rozpakowaniu "mod_whosonline_1.12.zip"
To tyle. Pozdrawiam.
Jokris.