2

私は magento で filter-navigation を使用しているため、フィルタリングされたページの URL は次のように表示されます: www.example.com/page#cat=16&gan_data=true

カテゴリの URL キーを変更して、サブレベルのページではなく、フィルター設定 (上記の URL など) を含むトップ レベルのメニューを指すようにしたいと考えています。

問題は、そのような URL キーを保存すると、ハッシュ タグが # から - に変更されるため、新しい URL は次のようになることです: www.example.com/page-cat-16-gan-data-true

これを回避する方法はありますか?

4

1 に答える 1

2

URL キーをフォーマットするメソッドは、Mage_Catalog_Model_Category::formatUrlKey() です。

public function formatUrlKey($str)
{
    $str = Mage::helper('core')->removeAccents($str);
    $urlKey = preg_replace('#[^0-9a-z]+#i', '-', $str);
    $urlKey = strtolower($urlKey);
    $urlKey = trim($urlKey, '-');
    return $urlKey;
}

英数字以外の文字はダッシュに置き換えられます。そのため、ある程度の作業なしでできることはあまりありません。

いくつかのオプションがあります。

  • クラスをオーバーライドしてメソッドを変更します。
  • インストーラーを使用してバックエンド モデルを変更します。

2 番目のオプションは、アップグレードとの互換性が最も高い方法ですが、残念ながら、Catalog URL Rewrites インデックスは、同じ方法で URL キーを再フォーマットします。そのため、Category クラスをオーバーライドして formatUrlKey() メソッドを変更する必要があります。

于 2012-12-13T22:31:14.213 に答える