1

我想知道是否有任何方法可以更改侧边栏导航的 URL 以指向实际类别。

例如,有一个父类别小部件,其子类别为计算机小部件、笔记本电脑小部件、电话小部件。如果您通过主导航导航到手机小部件 SEO 友好 URL 将是 www.example.com/widgets/phone-widgets,但如果您单击小部件类别,默认情况下,您将拥有带有类别的侧边栏过滤导航计算机小部件、笔记本电脑小部件, 手机小部件。如果在此页面上单击电话小部件,则页面的 URL 将为 www.example.com/widgets?cat=3。

有没有办法让这些侧面类别链接指向 www.example.com/widgets/phone-widgets 而不是 www.example.com/widgets?cat=3?我真的很想通过 Magento 代码而不是扩展或 301 重定向来做到这一点。

先感谢您!

4

3 回答 3

2

我创建了一个模块来解决这个错误。

https://github.com/jruzafa/Devopensource_LayerCatSeo

谢谢,

于 2014-02-05T03:12:25.780 回答
1

使用此代码加载给定的类别(按 ID)

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

使用它来获取友好的 URL

$category->getCategoryUrl();
于 2012-12-27T21:53:11.637 回答
1

您可以覆盖 Mage_Catalog_Model_Layer_Filter_Item 的 getUrl() 方法。

这是示例:

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();
  }
}
于 2015-08-08T15:03:53.340 回答