Categorie
Blog

Programmazione magento – Creare url rewrite

Ciao a tutti,
in questo post, il primo della serie intitolata “Programmazione Magento“, vi mostrerò come creare in maniera semplice i rewrite per tutte le pagine che volete, sia che queste siano dinamiche, ad esempio quelle generate da moduli personalizzati, oppure statiche, come quelle create da cms.

Cosa è un URL REWRITE?

Una url rewrite è una tecnica per la quale una url viene sostituita da un altra che riteniamo migliore per varie motivazioni, che possono essere leggibilità e ottimizzazione per i motori di ricerca.

Facciamo un esempio:
Abbiamo una ulr del tipo:
[sourcecode]
www.sito.com/page.php?id=237&regione=toscana&provincia=firenze
[/sourcecode]

Questa url è alquanto complessa, e si differenzia dalla altre per il tipo e valore dei parametri passati in GET. Per le motivazioni che abbiamo accennato prima vogliamo trasformare questa url nella seguente:
[sourcecode]
www.sito.com/toscana/firenze/pagina.html
[/sourcecode]

Per fare questo è necessario utilizzare le Url Rewrite di apache.
Non starò qua a spiegare come funzionano le url rewrite di apache, ma vi dico solamente che Magento è in grado di produrre e generare Url Rewrite per apache attraverso il suo “motore” di rewrite che è in grado di rispodere alle esigenze di creare url ben formattate ad esempio nei nostri moduli personalizzati.

Ma andiamo a vedere come è possibile creare url rewrite da codice di magento.
[sourcecode language=”php”]
Mage::getModel(‘core/url_rewrite’)
//si imposta il tipo di rewrite a personalizzato
->setIsSystem(false)
//si imposta lo store view per il quale la url rewrite verrà creata
->setStoreId(2)
//si imposta il path che si vuole riscrivere, è il path originale non riscritto
->setIdPath($originalurl)
//si imposta il path che si vuole riscrivere, è il path originale non riscritto
->setTargetPath($originalurl)
//si imposta la nuova url (quella riscritta)
->setRequestPath($new_url)
->save();
[/sourcecode]

Così è possibile creare un rewrite. Accedendo alla $new_url veniamo rediretti (in automatico ed in modo nascoto) alla vecchia url, ma il browser manterrà quella nuova nella barra degli indirizzi.

Se poi vi capita di dover ricercare delle url in base al path reale oppure a quello riscritto potete utilizzare le seguenti funzioni:
[sourcecode language=”php”]
Mage::getModel(‘core/url_rewrite’)->setStoreId(2)->loadByIdPath($originalurl)
Mage::getModel(‘core/url_rewrite’)->setStoreId(1)->loadByRequestPath($new_url)
[/sourcecode]

Per qualunque richiesta non esitate a contattarmi!