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.