2012-12-27 69 views
1

我想知道是否有任何方法將側欄導航的URL更改爲指向實際類別。將側面分層導航中的Magento子類別更改爲指向實際類別

例如,存在具有子類別計算機小部件,筆記本電腦小部件,電話小部件的父類別小部件。如果您通過主導航導航到手機窗口小部件,搜索引擎優化友好的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重定向。

預先感謝您!

回答

1

使用此代碼加載特定類別(按ID)

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

使用此得到友好的URL

$category->getCategoryUrl(); 
+1

謝謝您的回答。你能告訴我在哪個文件中我應該添加這個代碼嗎? – AndreyZ

+0

看看這個問題:http://stackoverflow.com/questions/3453827/magento-layered-navigation-categories – pzirkind

0

您可以覆蓋的getURL Mage_Catalog_Model_Layer_Filter_Item()方法。

這裏是例子:

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