2012-12-27 2 views
1

Je me demandais s'il y avait un moyen de changer les URL de la navigation de la barre latérale pour pointer vers les catégories réelles. Par exemple, il existe des widgets de catégorie parente avec des sous-catégories: widgets d'ordinateurs, widgets d'ordinateurs portables, widgets de téléphone. Si vous naviguez dans la barre de navigation principale vers le widget du téléphone, l'URL conviviale sera www.example.com/widgets/phone-widgets, mais si vous cliquez sur la catégorie du widget, vous allez avoir par défaut la navigation avec le filtrage de la barre latérale avec les catégories. , Widgets de téléphone. Si, sur cette page, vous cliquez sur Widgets téléphone, l'URL de la page sera www.example.com/widgets?cat=3.Modifier les sous-catégories de Magento dans la navigation par couches latérales pour pointer vers les catégories réelles

Y a-t-il un moyen de faire en sorte que ces liens de catégorie secondaire pointent vers www.example.com/widgets/phone-widgets au lieu de www.example.com/widgets?cat=3? Je voudrais vraiment le faire via le code Magento plutôt que l'extension ou la redirection 301.

Merci d'avance!

Répondre

1

Utilisez ce code pour charger la catégorie donnée (par ID)

$category = Mage::getModel('catalog/category')->load($categoryId); 

Utilisez cette option pour obtenir URL conviviale

$category->getCategoryUrl(); 
+1

Merci pour votre réponse. Pouvez-vous me dire dans quel dossier je devrais ajouter ce code? – AndreyZ

+0

consultez cette question: http://stackoverflow.com/questions/3453827/magento-layered-navigation-categories – pzirkind

0

Vous pouvez remplacer la méthode getURL() de Mage_Catalog_Model_Layer_Filter_Item.

Voici par exemple:

public function getUrl() 
{ 
    $value = $this->getValue(); 
    $query = array(
     $this->getFilter()->getRequestVar() => $value, 
     Mage::getBlockSingleton('page/html_pager')->getPageVarName() => null // exclude current page from urls 
); 
    $url = Mage::getUrl('*/*/*', array('_current'=>true, '_use_rewrite'=>true, '_query'=>$query)); 
    if ($this->getFilter()->getRequestVar() != 'cat') { 
    return $url; 
    } 

    // Change ?cat=4 for real category url if no additional filters are present 
    // www.x.com/y?cat=4 
    // => 
    // www.x.com/y/z 

    $pos = strpos($url, '&'); 
    if ($pos !== false) { 
    return $url; 
    } else { 
    // no additional filters 
    return Mage::getModel('catalog/category')->load($value)->getUrl(); 
    } 
} 
Questions connexes