Witam.
Wszystkiego dobrego w Nowym 2007 Roku.
Odpowiem tak. Nie da się zrobić, aby moduł działał poprawnie pod
Internet Explorerem, dlatego, że według autora modułu, on już działa poprawnie (ale przewrotnie!). Niepoprawnie, dalej według autora modułu, działa
Twoja templatka,
moja templatka, i pewnie templatki
paru tysięcy ludzi, którzy korzystają z Joomla. I napiszę przewrotnie, znów, że
autor ma rację!. Chodzi o tryb pracy
Internet Explorer'a. Może on pracować w trybie normalnym,
standardowym, lub w tak zwanym trybie "
quirks mode", czyli kompatybilnym "wstecz" z wcześniejszymi wersjami IE, np. wersją 5.5. Po napotkaniu skryptu np. twojej templatki, podaniu analizie,
Internet Explorer wybiera sam sobie tryb odpowiedni do tego, czy twoja templatka spełnia standardy
WC3, czy nie. Jeśli spełnia, a są takie templatki, wówczas pozostaje w trybie "
standard", i moduł "
RokLatest News" pracuje poprawnie. Widziałem na własne oczy takie strony. Jeżeli natomiast templatka nie spełnia wymogów
WC3, wówczas
Internet Explorer "przełącza" się w tryb "
quirks mode", i widzisz to, co widzisz, czyli niepoprawnie działający moduł. I teraz pytanie. Po "kiego" autor napisał taki moduł, który pod jedną przeglądarka "działa" bez zarzutów, a pod inną nie?. Myślę, że "
walczy" o zachowywanie, lub bardziej, "
przestrzeganie" standardów WC3 przez użytkowników Joomla. Tylko teraz następne pytanie?. W imię czego "walczy"?. Przecież "
utrzymanie" standardu WC3 nie jest takie proste. Ja na mojej stronie mam około
100 ostrzeżeń o błędach w kodzie, i to często nie z samej templatki, tylko np. z tekstów pisanych w edytorze i widniejących na stronie głównej. No cóż. Skoro autor modułu, wspaniałego modułu nie chce, aby używało go wiele osób, to już jego sprawa. To tyle tytułem wstępu.
Teraz co do praktycznych porad.
Możemy "
zmusić" IE aby nie "
przełączał" się w tryb "
quirks mode", usuwając z templatki tak zwany
XML Prolog, czyli definicję wersji
XML, stosowanej na naszej stronie, która to, według jednych jest wymagana, według innych nie. U mnie, po "
zaslashowaniu" linijki z
XML Prologiem, moduł zaczął działać, ale inne moduły, boty i komponenty zaczęły "dziwnie" się zachowywać. Bot
dynamicImage wyświetlał mi obrazki nie tam, gdzie powinien. I wiele innych, dziwnych rzeczy. Ale tylko pod IE. Pod
Firefoxem wszystko było w porządku. Co należy, lub można zrobić?. Oto kod pierwszych linii mojej templatki:
Kod: |
<?php
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
// needed to seperate the ISO number from the language file constant _ISO
$iso = explode( '=', _ISO );
// xml prolog
echo '<?xml version="1.0" encoding="ISO-8859-2"?' .'>';?>
|
Widzimy na dole
XML Prolog. Mozemy zrobić tak:
Kod: |
<?php
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
// needed to seperate the ISO number from the language file constant _ISO
$iso = explode( '=', _ISO );
// xml prolog
// echo '<?xml version="1.0" encoding="ISO-8859-2"?' .'>';
?>
|
... i w ten sposób linijka z
Prologiem XML będzie "
niewidzialna" dla interpretatora PHP oraz przeglądarki, poprzez podwójne znaki "/" (slash), lub zastosować "moją metodę":
Kod: |
<?php
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
// needed to seperate the ISO number from the language file constant _ISO
$iso = explode( '=', _ISO );
// xml prolog
$browser = getenv("HTTP_USER_AGENT"??);
// IE5 // IE6
if (preg_match("/MSIE 5.+Win./", $browser) || preg_match("/MSIE 6.+Win./", $browser)) {
echo ' ';
}else{
echo '<?xml version="1.0" encoding="ISO-8859-2"?' .'>';
}
?>
|
..czyli wstawiamy instrukcję "warunkową"
if, aby przy wizycie gościa z IE,
XML Prolog nie był uwzględniany w kodzie naszej templatki, a w pozostałych przypadkach był.
Co jeszcze możemy zrobić?.
Możemy zaopatrzyć się w templatke spełniajacą "standardy", tylko trzeba trochę poszukać. Ale czy warto dla jednego modułu?.
Możemy nic nie robić, czyli zostawić kod templatki "w spokoju", i liczyć, że odwiedzjących nas gości z IE będzie jak najmniej, ale to raczej niemożliwe.
Możemy nie instalować modułu. No... Ale to już tylko w ekstremalnych przypadkach
.
Koncowy tekst. Co do drugiej części twojego postu "
pagoad", to modułu nie da się "rozłożyć" na części, i to też jest pewnie "pomysł" autora
. Jego prawo.
To tyle na temat
RokLatest News. Może coś z nim "pokombinuję", ale dopiero wtedy, jak będe miał więcej czasu. Pozdro.
Jokris.