Cambia categoria Subnavigation url
-
16-10-2019 - |
Domanda
si può cambiare Subnavigation sottocategoria URL per SEO friendly? se sì, come?
vale a dire:
esistente = store.com/apparel.html?cat=4
desiderato = store.com/apparel/shirts.html
o qualcosa di vicino a quello.
Soluzione
Mi spiego prima perché è questa differenza. Nel primo caso si sta visualizzando la categoria 'abbigliamento' e filtrando i risultati Compra sottocategoria con id 4 (probabilmente camicie). Nel secondo caso si sta visualizzando la categoria Abbigliamento-> camicie direttamente.
Se avete speciali impostazioni per la categoria abbigliamento (come design diverso, diverso layout o barre laterali) si sarà ancora in grado di vedere le impostazioni nel primo caso (? Cat = 4).
Nel secondo caso vedrete le impostazioni per la categoria camicie.
Se si desidera continuare a utilizzare gli URL amichevoli per filtrare è possibile utilizzare una proroga.
Vi consiglio Manadev Seo Layered Navigation e Amasty navigazione migliorata
Ciascuno di essi può essere configurato per comportarsi come si desidera e anche di più.
Altri suggerimenti
Ho creato un modulo che risolve questo errore.
https://github.com/jruzafa/Devopensource_LayerCatSeo
Grazie,
Questo può essere risolto abbastanza facilmente l'override del metodo getUrl()
nella Mage_Catalog_Model_Layer_Filter_Item class
(Go to /app/code/core/Mage/Catalog/Model/Layer/Filter/Item.php)
Trovare la funzione in linea 57, che dovrebbe assomigliare a questo:
public function getUrl() { $query = array( $this->getFilter()->getRequestVar()=>$this->getValue(), Mage::getBlockSingleton('page/html_pager')->getPageVarName() => null // exclude current page from urls); return Mage::getUrl('*/*/*', array('_current'=>true, '_use_rewrite'=>true, '_query'=>$query)); }
Passa a:
public function getUrl() { if($this->getFilter()->getRequestVar() == "cat"){ $category_url = Mage::getModel('catalog/category')->load($this->getValue())->getUrl(); $return = $category_url; $request = Mage::getUrl('*/*/*', array('_current'=>true, '_use_rewrite'=>true)); if(strpos($request,'?') !== false ){ $query_string = substr($request,strpos($request,'?')); } else{ $query_string = ''; } if(!empty($query_string)){ $return .= $query_string; } return $return; } else{ $query = array( $this->getFilter()->getRequestVar()=>$this->getValue(), Mage::getBlockSingleton('page/html_pager')->getPageVarName() => null // exclude current page from urls ); return Mage::getUrl('*/*/*', array('_current'=>true, '_use_rewrite'=>true, '_query'=>$query)); } }