Magento - 删除url key / product url中的数字

时间:2012-11-28 21:27:37

标签: magento url numbers

如您所知,如果您的产品共享网址密钥,则网址密钥会附加一个数字:

http://www.example.com/main-category/sub-category/product-name-**6260**.html

如何找到6260的(这是我的网址附加的#之一)?我试过产品ID,sku,我找不到它的来源。我问的原因是因为如果我能找到它,我可以创建一个字符串替换函数,以便在我在某些产品列表页面上回显之前将其从url中清除。

感谢。

3 个答案:

答案 0 :(得分:22)

在我们到达代码中的位置之前,请注意您正在进入痛苦的世界。

  1. 关于如何生成这些数字,没有简单规则。在某些情况下,它是商店ID,有些情况下它是简单的产品ID。在某些情况下,它既不是

  2. 即使有,但是从零开始的Magento网站通常会包含更改此功能的自定义功能

  3. 归根结底,由于Magento的人类可读/ SEO友好网址位于core_url_rewrite表格中,因此人们可以插入任意文字

  4. 除了厄运的警告,您正在寻找的模型是Mage::getSingleton('catalog/url')。这包含了生成Magento目录和产品重写的大部分逻辑。所有这些方法都以请求路径通过getUnusedPath方法结束。

    #File: app/code/core/Mage/Catalog/Model/Url.php
    public function getUnusedPath($storeId, $requestPath, $idPath)
    {
        //...
    }
    

    此方法包含在URL末尾创建唯一编号的逻辑。完全追踪它完全超出了Stack Overflow帖子的范围,但这条线尤其令人启发/沮丧。

    $lastRequestPath = $this->getResource()
        ->getLastUsedRewriteRequestIncrement($match[1], $match[4], $storeId);
    if ($lastRequestPath) {
        $match[3] = $lastRequestPath;
    }
    return $match[1]
        . (isset($match[3]) ? ($match[3]+1) : '1')
        . $match[4];
    

    特别是这两行

    $match[3] = $lastRequestPath;
    //...
    . (isset($match[3]) ? ($match[3]+1) : '1')
    //...
    

    如果不明显,有些情况下Magento会自动将1附加到URL,然后继续增加它。这使得这些URL的生成在生成时依赖于系统状态 - 没有简单的规则。

    此文件中的其他感兴趣的行

    if (strpos($idPath, 'product') !== false) {
        $suffix = $this->getProductUrlSuffix($storeId);
    } else {
        $suffix = $this->getCategoryUrlSuffix($storeId);
    }    
    

    这个$suffix也将在URL的末尾使用,因此这些方法值得研究。

    如果你要做的只是删除网址中的数字,那么使用正则表达式或某些explode / implode字符串jiggering可能会更好。

答案 1 :(得分:2)

我几乎不知道为什么会这样,但这对我有用。很可能是因为它使网址不唯一。 Magento ver。 1.7.0.2突然开始添加数字作为我的新产品名称的后缀,即使他们的网址和名称与旧产品不同。在预感时,我转到System -> Configuration -> Catalog -> Search Engine Optimizations -> Product URL Suffix并将默认.html更改为-prod.html。我想你可以把它改成你想要的任何后缀。然后我重新索引了我的网站,刷新了缓存,然后!所有数字都从产品网址中消失了。产品网址现在都具有格式custom-product-name-prod.html。规范标签还显示custom-product-name-prod.html,所以我很开心。

不知道它是否适用于其他人,但我希望它能。请注意,我确实拥有包含重复URL的旧产品和新产品,并且在执行此过程之前我已禁用旧产品。因此,如果您有2个产品具有相同的网址密钥并且两个都已启用,那么这可能对您无效。

答案 2 :(得分:0)

有问题!当您在编辑产品中查看时,您会看到链接是正确的,但是在您的商店中,URL是不同的。

  • 第1步:编辑URL并将SS添加到自定义URL的末尾。按 保存。 \ product-namess.html
  • 第2步:转到目录-> URL重写
  • 第3步:缩小条件范围,仅包括问题情况。 按搜索。
  • 第4步:下载Jib位鼠标记录器/宏 录音机。我免费。
  • 第5步:编辑“首次重写”。按 删除,然后单击确定。
  • 第6步:在JitBit上按Record。编辑第一次重写。 删除。好。按停止。
  • 第7步:下拉至播放旁边的选择X 时间。写记录数。按确定。
  • 第8步:观看 程序为您删除所有记录。
  • 第9步:目录->管理 产品。从自定义URL的末尾删除SS。不检查 创建重定向。固定。

我的更改该产品的记录为279条。所以花了大约一个小时。

相关问题