Magento URL键,包括哈希(#)

Magento URL键,包括哈希(#),magento,url,hashtag,Magento,Url,Hashtag,我在magento中使用过滤器导航,因此过滤页面的url显示如下:www.example.com/page#cat=16&gan_data=true 我想更改我的类别上的URL键,使它们指向顶层菜单,包括过滤器设置(如URL),而不是子级页面 问题是,当我像这样保存URL键时,哈希标记从#变为-,因此新的URL如下所示:www.example.com/page-cat-16-gan-data-true 有没有办法避免这种情况?格式化URL键的方法是Mage\u Catalog\u Model\u

我在magento中使用过滤器导航,因此过滤页面的url显示如下:www.example.com/page#cat=16&gan_data=true

我想更改我的类别上的URL键,使它们指向顶层菜单,包括过滤器设置(如URL),而不是子级页面

问题是,当我像这样保存URL键时,哈希标记从#变为-,因此新的URL如下所示:www.example.com/page-cat-16-gan-data-true


有没有办法避免这种情况?

格式化URL键的方法是Mage\u Catalog\u Model\u Category::formatUrlKey()

任何非字母数字字符都将替换为破折号。因此,没有一些工作你做不了什么

您有两个选择:

  • 重写该类并更改方法
  • 更改后端模型 通过安装程序

第二个选项与升级最兼容,但不幸的是,CatalogURL重写索引将通过相同的方法重新格式化URL键。因此,您必须重写Category类来更改formatUrlKey()方法。

我使用第三个选项解决了这个问题。将.htaccess文件中的URL重写如下:重写page-cat-16-gan-data-true page#cat=16&gan_data=true
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;
}