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!

Categorie
Blog

Cancellare tutte le url rewrite dei prodotti e categorie

Vi sarà capitato di rinominare delle categorie o prodotti e non fare caso al checkbox che sta sotto l’url key del prodotto o categoria che dice:

 

 

Il checkbox create permanent Redirect for old url crea dei redirect 301 quando si cambia la url di una categoria o un prodotto, in modo che gli spider ed i visitatori riescano a raggiungere la categoria ed il prodotto anche quando la url cambia.

Questa è una ottima cosa per i siti in produzioni che sono già stati indicizzati da google, ma se si vuole assegnare un nome ad una categoria che è stato precedentemente utilizzato a volte magento internviene nelle url inserendo un -1, -1 alla url, ad esempio facendo riferimento alla url della immagine soprastante quel design mi veniva trasformato in design-1.html

La domanda quindi è: Come posso cancellare tutte le url rewrite in modo da ripartire da zero con delle url pulite pulite?

La soluzione è cancellare la tabella core_url_rewrite con la seguente query:

[sourcecode language=”sql”]
delete FROM `core_url_rewrite`
[/sourcecode]

La tabella viene così svuotata. Voi non dovrete fare altro che loggarvi di nuovo nella amministrazione del vostro magento e reindicizzare le url delle categoria e prodotti: