您可以将子标准子类别URL更改为SEO友好吗?如果是这样?

IE:

现有= store.com/apparel.html?cat=4

所需的= store.com/apparel/shirts.html或与之接近的任何东西。

有帮助吗?

解决方案

让我首先解释为什么这种差异。在第一种情况下,您正在查看“服装”类别,并过滤结果使用ID 4(可能是衬衫)购买子类别。在第二种情况下,您是直接查看服装 - >衬衫类别。

如果您对服装类别有特殊的设置(例如不同的设计,不同的布局或侧边栏),您仍然可以在第一种情况下看到这些设置(?cat = 4)。

在第二种情况下,您将看到衬衫类别的设置。

如果您仍然想使用友好的URL进行过滤,则可以使用扩展名。
我建议 Manadev SEO分层导航改进的导航他们俩都可以像您想要的那样配置为行为,甚至更多。

其他提示

我创建了一个解决此错误的模块。

https://github.com/jruzafa/devopensource_layercatseo

谢谢,

通过覆盖 getUrl() 方法中的方法 Mage_Catalog_Model_Layer_Filter_Item class

(Go to /app/code/core/Mage/Catalog/Model/Layer/Filter/Item.php)

在第57行中找到该功能,应该看起来像这样:

 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));
  }

改成 :

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));
    }
}
许可以下: CC-BY-SA归因
scroll top