ciao,
Se mastichi l'inglese puoi guardare qui
http://docs.joomla.org/Routingma in poche parole:
poniamo che il tuo componente si chiama com_calcio e ha queste pagine:
index.php?option=com_calcio&view=squadre (liste di tutte le squadre)
index.php?option=com_calcio&view=squadre&id=18 (pagina di una squadra in particolare)
index.php?option=com_calcio&view=giocatore&id=18 (pagina con la scheda di un giocatore)
ora crea un file chiamato router.php e inseriscilo nella cartella del tuo componente
l'interno del file è cosi composto:
<?php
if(!defined('_JEXEC')) die( 'Restricted access' );
//funzione che crea le url sef da quelle normali
//Sostituire Calcio con il nome vero del componente
function CalcioBuildRoute(&$query){
$segments = array();
return $segments;
}
//Questa funtione trasforma le url sef in quelle normali
function CalcioParseRoute(&$segments)
{
$vars = array();
return $vars;
}
?>
Nella funzione BuildRoute viene passato l'array $query che contiene tutte le variabili Get dell'url.
index.php?option=com_calcio&view=squadre&id=18
in questo caso $query['view'] e $query['id']
da questi valori devi creare la tua url sef restituendo tutti i segmenti di cui è composta
es:
$segments[] = 'squadre;
$segments[] = 'roma';
in questo modo trasformi l'url da
index.php?option=com_calcio&view=squadre&id=18
a
calcio/squadre/roma
esempio in codice

<?php
function CalcioBuildRoute(&$query){
$segments = array();
if( isset($query['view']) && $query['view'] == 'squadre'){
$segments[] = 'squadre';
unset($query['view']); //se non elimini il parametro joomla lo appenderà alla fine dell'url
if( isset($query['id']) ){
$database =& JFactory::getDBO();
$database->setQuery("SELECT nome FROM #__calcio_sq WHERE id=".intval($query['id']) );
$nome = $database->loadResult();
if($nome){
$segments[] = $nome;
unset($query['id']);
}
}
return $segments;
}
?>
La funzione ParseRoute(&$segments) funziona al contrario, vengono passati i segmenti dell'url sef e bisogna trasformarli in un array di variabili ( che sarebbero poi le variabili GET)
$segments[0] (primo segmento dell'url sef, nel nostro esempio sarà 'squadre')
$segments[1] (secondo segmento nome della squadra)
devono diventare cosi:
$vars['view'] = 'squadre';
$vars['id'] = $id_squadra;
es codice:
<?php
function CalcioParseRoute(&$segments)
{
$vars = array();
// Count segments
$count = count( $segments );
// if no segment return
if( $count == 0) return $vars;
if( $segments[0] == 'squadre' ){
$vars['view'] = 'squadre';
if($count > 1){
$database =& JFactory::getDBO();
$sql = "SELECT id FROM #__calcio_sq WHERE nome='".mysql_escape_string( $segments[1] )."'";
$database->setQuery($sql,0,1);
$id = $database->loadResult();
if( $id) {
$vars['id'] = $id;
}
}
}
return $vars;
}
?>
grossomodo funziona così, prova a guardare anche i router.php contenuti nei componenti standard di joomla ( com_content, com_search ecc.)