Forum->Flatnux->browser detection
  
Benvenuto Sconosciuto Registrati Aiuto383 Utenti

Utente Messaggio


xArgo

0 Livello 0 10

levellevellevellevellevellevellevellevellevellevel
profile mail home
Lunedì 19 Settembre 2005 - 00:44

browser detection:
ciao a tutti, si parla sempre più di frequente di compatibilità dei layout con i browser più comuni.
spesso, un webmaster che progetta un css testandolo con firefox, si trova in grave difficoltà quando deve visualizzare il suo sito con IE o opera...qualcuno decide di risolvere il problema scrivendo più css, uno per ogni browser, che non creino problemi con la visualizzazione.
io sono convinto che anche flatnuke debba fare un passo del genere; ma per farlo serve che per ogni tema si segua la procedura di testing sui vari browser, e si differenzino più css da caricare a seconda del browser utilizzato.
ho pensato che i grafici che creano temi per flatnuke potranno con qualche sforzo in piu fare cio che dico e creare all'interno del loro tema anziche il file style.css, una directory nominata css che contenga un css nominato col nome del browser a cui si riferisce (ie.css, firefox.css opera.css, per citare i piu diffusi...).
ho scritto un mini script che si va ad aggiungere all'header per rendere possibile un efficace browser detection automatico, che prenda in considerazione anche i temi "vecchi" che presentano il classico 'style.css'
questo script controlla che esista la cartella 'themes/$theme/css/', in caso positivo va a cercare nella variabile $_HTTP_USER_AGENT il nome del browser e carica a seconda del risultato trovato un css diverso; nel caso invece che la cartella 'themes/$theme/css/ non esista, carica il classico 'themes/$theme/style.css'

vi posto il codice, l'ho buttato giu in pochi minuti e non sono un grande esperto di sicuro c'è qualche errore, inoltre prendo in considerazione solo i tre browser principali...

/*
echo "<link rel='stylesheet' type='text/css' ";

if (file_exists("themes/$theme/css/"))
{
echo "href='themes/$theme/css/";

if (preg_match("/msie/i", $_HTTP_USER_AGENT))
{
echo "ie.css'>";
}
elseif (preg_match("/firefox/i", $_HTTP_USER_AGENT))
{
echo "firefox.css'>";
}
elseif (preg_match("/opera/i", $_HTTP_USER_AGENT))
{
echo "opera.css'>";
}
}
else
{
echo "href='themes/$theme/style.css'>";
}
*/

fatemi sapere se puo interessare una cosa del genere, io la trovo utile...


---
[ xArgo ]



speleoalex

0 Livello 10 10

levellevellevellevellevellevellevellevellevellevel
profile mail
Lunedì 19 Settembre 2005 - 09:16

Re: browser detection:
è una cosa utile ma secondo me andrebbe all' interno del tema stesso.
L' header può essere infatti sovrascritto da quello presente nel tema.
Ho infatti introdotto la funzione :
<blockquote><pre>
function fromtheme($file)
{
global $theme;
return file_exists("themes/$theme/".$file) ? "themes/$theme/".$file : $file;
}
</pre></blockquote>

questa viene utilizzata in questo modo:
<font color=#00ff00>
include (fromtheme('header.php'));
</font>

Un altro esempio è:
<font color=#00ff00>
<img src='<?=fromtheme('images/icons/error.gif');>
</font>


volevo infatti togliere tutte le logiche non indispensabili dal core e spostarle sui temi in modo da avere le massime prestazioni di velocità con temi che non hanno bisogno di utilizzarle.

Alex



xArgo

0 Livello 0 10

levellevellevellevellevellevellevellevellevellevel
profile mail home
Lunedì 19 Settembre 2005 - 10:09

Re: browser detection:
non ho capito come utilizzarla comunque...puoi dire al tema di caricare 'css/<i>browser</i>.css' se lo trova, altrimenti 'style.css'??

---
[ xArgo ]



speleoalex

0 Livello 10 10

levellevellevellevellevellevellevellevellevellevel
profile mail
Lunedì 19 Settembre 2005 - 12:41

Re: browser detection:
Si ma funziona solo sulla beta23 che non è ancora uscita.

Istruzioni:
1)copia il file header.php nella root del tuo tema
2)sostituisci :

<blockquote><pre>
<LINK REL=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"StyleSheet\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" HREF=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"themes/$theme/style.css\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" TYPE=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"text/css\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\">
";
</pre></blockquote>

con quello che hai scritto tu sopra.

Per farlo funzionare nelle versioni precedenti devi aggiungere la funzione fromtheme in functions.php e sostituire gli:

include ('header.php');
con :
include (fromtheme('header.php'));


Alex



xArgo

0 Livello 0 10

levellevellevellevellevellevellevellevellevellevel
profile mail home
Lunedì 19 Settembre 2005 - 12:52

Re: browser detection:
intanto testo lo script fuori da flatnuke, e aspetto la beta23!spero vi sia piaciuta la mia idea!<img src=images/emoticon//09.png>

---
[ xArgo ]

 [1]