gpt4 book ai didi

url - Magento 1 - 删除网址键/产品网址中的数字

转载 作者:行者123 更新时间:2023-12-04 01:36:48 25 4
gpt4 key购买 nike

您可能知道,如果您的产品共享 url key ,则 url key 将附加一个数字:

IE
http://www.example.com/main-category/sub-category/product-name-**6260**.html
我如何找到 6260 的来源(它是附加到我的网址的 # 之一)?我试过产品id,sku,我找不到它的来源。我问的原因是因为如果我能找到它,我可以创建一个字符串替换函数,在我在某些产品列表页面上回显它们之前将其从 url 中刷新出来。

谢谢。

最佳答案

在我们到达发生这种情况的代码位置之前,请注意您正在进入一个痛苦的世界。

  • 没有 简单 关于如何生成这些数字的规则。有些情况下它是商店 ID,有些情况下它是简单的产品 ID。有些情况下它既不是
  • 即使有,对于非从头开始的 Magento 站点来说,包含更改此内容的自定义功能也很常见
  • 最终,由于 Magento 的人类可读/SEO 友好的 URL 位于 core_url_rewrite 中。表,人们可以插入任意文本

  • 除了厄运警告,您正在寻找的模型是 Mage::getSingleton('catalog/url') .这包含生成 Magento Catalog 和产品重写的大部分逻辑。所有这些方法都以通过 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 的末尾,因此这些方法值得研究。

    如果您要做的只是从 URL 中删除数字,则最好使用正则表达式或一些 explode/ implode字符串抖动。

    关于url - Magento 1 - 删除网址键/产品网址中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13614738/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com