gpt4 book ai didi

.net - NopCommerce 中的 UrlRewriting 问题

转载 作者:行者123 更新时间:2023-12-05 01:25:49 24 4
gpt4 key购买 nike

我尝试在 NopCommerce 中进行更改以在地址栏中包含语言我确实知道这似乎是什么问题。

当我禁用 UrlRewriting 时一切正常,当我启用它时,当我使用默认语言时一切正常当我转到另一种非默认语言时,我遇到了问题。

我有两部分代码用于默认语言和其他语言

我稍微更改了一段代码,所以主要功能现在在语言之间进行选择:

    public static string GetCategoryUrl(Category category, int languageId)
{
if (category == null)
throw new ArgumentNullException("category");
string seName = GetSEName(category.SEName);

if (String.IsNullOrEmpty(seName))
{
var categoryLocalized = CategoryManager.GetCategoryLocalizedByCategoryIdAndLanguageId(category.CategoryId, languageId);
if (categoryLocalized != null)
{
seName = GetSEName(categoryLocalized.Name);
}
else
{
seName = GetSEName(category.Name);
}
}

int defaultLanguage = Convert.ToInt32(SettingManager.GetSettingValue("Localization.DefaultLanguageID"));
string url = String.Empty;

string url2 = String.Empty;

//***for default language***
if (languageId == defaultLanguage)
{
url2 = SEOHelper.EnableUrlRewriting ? SettingManager.GetSettingValue("SEO.Category.UrlRewriteFormat") : "{0}Category.aspx?CategoryID={1}";
url = string.Format(url2, CommonHelper.GetStoreLocation(), category.CategoryId, seName);
}

//***for other languages***
else
{
url2 = SEOHelper.EnableUrlRewriting ? SettingManager.GetSettingValue("SEO.Category.UrlRewriteFormat2") : "{0}Category.aspx?Language={1}&CategoryID={2}";
url = string.Format(url2, CommonHelper.GetStoreLocation(), GetLocaleSubFolder(languageId), category.CategoryId, seName);
}
return url.ToLowerInvariant();
}

对于默认语言我还有:对于 SEO.Category.UrlRewriteFormat,我在数据库中有默认语言:{0}c{1}/{2}

在 UrlRewriting.config 中,我有以下默认语言规则:

没有 url 重写我上面的链接看起来像www.nopcomerce.com/category.aspx?categoryid=10

当我以默认语言转到类别时,我的链接看起来像www.nopcomerce.com/c10/somecategory

对于其他语言:

对于 SEO.Category.UrlRewriteFormat2,我在其他语言的数据库中有:{0}{1}/c{2}/{3}

以及我拥有的其他语言

没有为其他语言重写 url 的链接看起来像www.nopcomerce.com/category.aspx?language=de&categoryid=10

例如,当我用德语进入同一类别时,我会www.nopcomerce.com/de/c10/somecategorylocalizedingerman

现在我知道该页面工作正常,正如我之前所说,因为当我在 NopCommerce 中禁用 UrlRewriting 时,所有语言的所有页面都工作正常。我可以在类别、产品和整个门户之间更改语言,在每种语言上都没有问题。

但是当我启用 UrlRewriting 时,类别的默认语言链接工作正常 (www.nopcomerce.com/c10/somecategory),但是当我点击链接时在其他语言中,每次我点击任何链接,例如其他语言类别的某些链接,显示的内容来自默认页面(就像它重定向我一样)但我看到我想进入的链接语言写在地址栏中 (www.nopcomerce.com/de/c10/somecategorylocalizedingerman)。

我尝试了所有方法,但我确实不知道问题出在哪里。怎么了?

我也尝试在 NopCommerce 论坛上寻求帮助,但没有任何帮助。

你可以阅读我开始写的这个问题,直到我现在没有的这部分看起来是个问题。

http://www.nopcommerce.com/boards/t/1039/seo-and-multilingual-pages.aspx?p=1

提前感谢您的帮助。

最佳答案

经过几天的折磨和许多小时后,我放弃了一件事,那就是链接将如我所愿。

除了默认链接外,我从未设法为语言创建链接,如下所示:

nopcommerce.com/国家/类别/类别名称

我设法实现的最接近的是链接我的外观

nopcommerce.com/类别/国家/类别名称。

我还设法制作了我们不是经典 ImageButton 的链接,而不是常规超链接和我偶然发现的一个有趣问题的链接。

NopCommerce 使用 cookie 来更改语言。

我找到了 cookie 的名称,并在他将其写入 NopContext.Current.WorkingLanguage 时。

以类似的方式,我也创建了一个javascript函数setCookie()

function setCookie(c_name, value, expiredays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
document.cookie = c_name + "=" + escape(value) +
((expiredays == null) ? "" : ";expires=" + exdate.toUTCString());
}

它在 cookie 中创建所选语言的日志值,并在用户点击所选语言的标志时激活。

例如

string coockie = String.Format("javascript:setCookie('{0}','{1}','{2}');", "Nop.CustomerLanguage", language.LanguageId.ToString(), new TimeSpan(365, 0, 0, 0, 0));
hpLanguage.Attributes.Add("onclick", coockie);

现在我们来到了问题发生的有趣部分,我不清楚为什么会发生。

假设我们有德语和英语

当我第一次点击德语的旗帜时,地址栏中显示了一个德语链接,但内容仍然是英语。只有当我第二次(再次)点击德语中的旗帜时,页面内容才会切换到德语。

我不明白为什么现在会发生这种情况?

关于.net - NopCommerce 中的 UrlRewriting 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4346000/

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