-
16-10-2019 - |
题
您可以将子标准子类别URL更改为SEO友好吗?如果是这样?
IE:
现有= store.com/apparel.html?cat=4
所需的= store.com/apparel/shirts.html
或与之接近的任何东西。
解决方案
让我首先解释为什么这种差异。在第一种情况下,您正在查看“服装”类别,并过滤结果使用ID 4(可能是衬衫)购买子类别。在第二种情况下,您是直接查看服装 - >衬衫类别。
如果您对服装类别有特殊的设置(例如不同的设计,不同的布局或侧边栏),您仍然可以在第一种情况下看到这些设置(?cat = 4)。
在第二种情况下,您将看到衬衫类别的设置。
如果您仍然想使用友好的URL进行过滤,则可以使用扩展名。
我建议 Manadev SEO分层导航 和 改进的导航他们俩都可以像您想要的那样配置为行为,甚至更多。
其他提示
通过覆盖 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)); } }