当将长度 2 更改为 5 时,在 URL 中显示唯一 SEO 代码两次

Displaying Unique SEO code two times in the URL when change length 2 to 5

我的编辑是vs2015社区

当前默认的 nopCommerce 仅支持两个字符的唯一 SEO 代码

但我至少需要五个字符。例如,如果越南英语,则 url 将是 /vn-en,如果是越南越南语,则 url 将是 /vn-vi

所以我想在 Unique SEO 代码中添加 vn-en 和 vn-vi。但它只支持两个字符。所以我对代码做了一些更改。

  1. LanguageMap.cs HasMaxLength(2) 到 HasMaxLength(5)
  2. LanguageValidator.cs 长度 (2) 到长度 (5)
  3. 语言中的 nvarchar(2) 到 nvarchar(5) table

然后 nop 允许我在该字段中添加五个字符。

但是当我从前台商店更改语言时 url 显示为 /vn-vi/vn-vi。意思是显示seo代码两次。我可以在输出中直接看到 404 页面未找到 html 代码。

当该字段中有两个字符时,工作正常。我错过了一些步骤?

谁能指导一下?

等待您的回复

在调查您面临的问题后,是因为 AddLanguageSeoCodeToRawUrl 方法 LocalizedUrlExtenstions 添加了两次 SEO 代码。

我认为我们可以在将其添加到 URL 之前修复检查 UniqueSeoCode

if (!url.Contains(language.UniqueSeoCode))
{
    //add SEO code
    url = url.Insert(startIndex, language.UniqueSeoCode);
    url = url.Insert(startIndex, "/");
}

AddLanguageSeoCodeToRawUrl方法中添加if条件,检查!

_seoCodeLengthLocalizedUrlExtenstions 中的 2 更改为 Nop.Web.Framework > 本地化

希望对您有所帮助!