Featured Post

Selezione fogli di stile in base al browser – Javascript

Tra le varie soluzioni per caricare un foglio di stile in base al browser che stiamo utilizzando vi è anche quella che utilizza Javascript. Utilizziamo un semplice test già definito qui. 1opera=(/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent))?1:0;2mozilla=(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent))?1:0;3ie=(/MSIE...

Read More

SMARTY: BREVE INTRODUZIONE

Posted by admin | Posted in PHP, Smarty | Posted on 26-11-2008

Tag:,

0

Smarty è un motore per la creazione di template che permette di separare la parte di logica (PHP) dalla parte di presentazione (HTML, XML, ecc.).

Smarty offre un semplice linguaggio per creare i template, con la possibilità di avere condizioni e cicli.

Ho utilizzato questo strumento per riscrivere del codice che avevo già creato in precedenza ed effettivamente il codice prodotto è risultato di granlunga inferiore di quello che avevo in partenza. Il codice rimane più pulito e più semplice da modificare, sia nella parte di logica che in quella di template.

Come Funziona?

Per utilizzare Smarty bisogna prima di tutto scaricare le sue librerie e copiarle in una cartella del sito (io userò la cartella “libs”).  Sono necessarie altre due cartelle, la cartella templates e la cartella templates_c.

Nella cartella templates (Come dice il nome stesso) verranno creati i file di template, mentre la seconda è una cartella che serve per il funzionamento di Smarty, verrà quindi lasciata vuota. Bisogna assicurarsi che questa cartella abbia i permessi di scrittura per l’utente PHP.

Ora dovremo includere nella nostra pagina PHP le librerie e istanziare un oggetto Smarty.

1
require 'libs/Smarty.class.php';
2
$smarty = new Smarty;

I dati verranno passati al template tramite variabili assegnate a Smarty tramite codice.
1
$variabile = "In questa variabile c'è del contenuto magari preso da database";
2
$smarty->assign("variabile",$variabile);

La funzione assign ha come primo parametro il nome della variabile che sarà visibile e utilizzabile nel template, e come secondo parametro il valore da associare alla variabile, per esempio
1
$smarty->assign("menu_selezionato", 2);
2
$smarty->assign("titolo", "Esempio");

Smarty offre anche la possibilità di utilizzare un comodo strumento di debug.

Per attivarlo si usa il seguente comando:

1
$smarty->debugging = true;

A questo punto per associare un template alla pagina si usa il metodo display, l’estensione di default per la creazione di template è “tpl”:
1
$smarty->display("mio_template.tpl")

L’unica cosa che manca ora da fare è di definire il template:
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
<head>
5
<title>{$titolo}</title>
6
<body>
7
    {$contenuto}
8
</body>
9
</html>

Come vedete dal codice per utilizzare le variabili precedentemente definite è solo necessario chiuderle tra parentesi graffe utilizzando il $ prima del nome, come se fossero normali variabili PHP.

[PHP] Cambiare i Fogli di Stile (CSS) in base al Browser

Posted by admin | Posted in PHP | Posted on 29-10-2008

Tag:,

3

In questo breve POST vi introduco un modo molto semplice per cambiare (o selezionare) il foglio di stile adatto in base al browser che l’utente sta utilizzando.

Perchè ciò?
Purtoppo la compatibilità tra i diversi browser non è al cento per cento quindi in alcuni casi è necessario adottare stili diversi per avere lo stesso risultato grafico su i diversi browser.

Con PHP si può fare in un modo molto semplice, utilizzando la variabile $_SERVER in cui si può trovare lo user agent utilizzato.

( TIP: Per vedere tutto il contenuto della variabile $_SERVER si può usare la funzione PHP var_dump($_SERVER), essendo $_SERVER un array associativo verranno visualizzate tutte le chiavi dell’array con i relativi valori )

La chiave che a noi interessa è appunto HTTP_USER_AGENT ($_SERVER['HTTP_USER_AGENT']) nella quale si trova il browser ed il sistema operativo che l’utente utilizza.

Si può quindi con un semplice if selezionare il foglio di stile che ci interessa, in base al browser o al sistema operativo:

1
<?php
2
if ( ereg( "Mozilla" , $_SERVER['HTTP_USER_AGENT']) ) {
3
echo '<link rel="stylesheet" type="text/css" href="stile1.css" />';
4
}else{
5
echo '<link rel="stylesheet" type="text/css"href="stile2.css" />';
6
}
7
?>

Per il funzionamento della funzione eregi vi rimando al sito di Php.net

( TIP: eregi è la versione case insensitive di ereg )