Back to top

Autore Topic: Creare SEF url  (Letto 2297 volte)

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Creare SEF url
« il: 26 Lug 2010, 13:28:38 »
ciao a tutti, volevo sapere esattamente come faccio a creare url SEF all'interno di un componente.
ho letto che funziona tutto tramite il file router.php, però non ho trovato molto di più se non:

spezzetta l'url, metti le variabili

qualcuno mi può dare qualche consiglio/suggerimento?
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline bronco

  • Nuovo arrivato
  • *
  • Post: 9
    • Mostra profilo
Re:Creare SEF url
« Risposta #1 il: 27 Lug 2010, 18:49:45 »
ciao,
Se mastichi l'inglese puoi guardare qui http://docs.joomla.org/Routing

ma 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:
Codice: [Seleziona]
<?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 :)

Codice: [Seleziona]
<?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:
Codice: [Seleziona]
<?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.)



Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:Creare SEF url
« Risposta #2 il: 28 Lug 2010, 11:55:44 »
wow!
questa si che è una risposta!

grazie mille  ;D
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline jhix

  • Nuovo arrivato
  • *
  • Post: 4
    • Mostra profilo
Re:Creare SEF url
« Risposta #3 il: 29 Ott 2010, 19:04:35 »
buonasera, prima di tutto grazie anche da parte mia per l'ottima risposta
io vorrei creare un metodo SEF che prenda in input le variabili passate con il GET e crei un unica URL
Forse con un esempio sara piu chiaro

index.php?option=com_calcio&view=squadra&id=18
a
calcio/la_squadra_della_roma

é una cosa possibile???


 



Web Design Bolzano Kreatif