1

サイドバー ナビゲーションの URL を実際のカテゴリを指すように変更する方法があるかどうか疑問に思っていました。

たとえば、コンピュータ ウィジェット、ラップトップ ウィジェット、電話ウィジェットのサブカテゴリを持つ親カテゴリ ウィジェットがあります。メイン ナビゲーションから電話ウィジェットに移動すると、SEO に適した URL は www.example.com/widgets/phone-widgets になりますが、ウィジェット カテゴリをクリックすると、デフォルトでサイドバー フィルタリング ナビゲーションがカテゴリ コンピューター ウィジェット、ラップトップ ウィジェットで表示されます、電話ウィジェット。このページで電話ウィジェットをクリックすると、ページの URL は www.example.com/widgets?cat=3 になります。

これらのサイド カテゴリ リンクを www.example.com/widgets?cat=3 ではなく www.example.com/widgets/phone-widgets を指すようにする方法はありますか? 拡張機能や 301 リダイレクトではなく、Magento コードを介して実行したいと考えています。

前もって感謝します!

4

3 に答える 3

2

このエラーを解決するモジュールを作成しました。

https://github.com/jruzafa/Devopensource_LayerCatSeo

ありがとう、

于 2014-02-05T03:12:25.780 に答える
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 に答える
1

このコードを使用して、指定されたカテゴリを (ID で) 読み込みます

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

これを使用してフレンドリー URL を取得します

$category->getCategoryUrl();
于 2012-12-27T21:53:11.637 に答える