Я пытаюсь внести изменения в 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
Теперь я знаю, что эта страница работает нормально, как я уже говорил, потому что, когда я отключаю UrlRewriting вNopCommerce все страницы на всех языках работает нормально.Я могу поменять язык между категориями, продуктами и всем порталом без проблем на любом языке.
Но когда я включаю UrlRewriting, ссылки для категорий на языке по умолчанию работают нормально ( www.nopcomerce.com / c10 / somecategory ), но когда я нажимаю на ссылки на других языках, каждый раз, когда я нажимаю на любую ссылку, например на какую-то ссылку для категории на другом языке, показывается содержимое со страницы по умолчанию (как будто он перенаправляет меня туда) но я вижу, что ссылка, на которую я хочу перейти на каком-то языке, написана в адресной строке ( www.nopcomerce.com / de / c10 / somecategorylocalizedingermanerman ).
Я пробую все, но не знаю, в чем проблема.Что не так?
Я также пытаюсь попросить о помощи на форуме NopCommerce, но оттуда нет помощи.
Вы можете прочитать об этой проблеме, где я начал писать, до этой части, где яне делайте сейчас то, что кажется проблемой.
http://www.nopcommerce.com/boards/t/1039/seo-and-multilingual-pages.aspx?p=1
Спасибо за любую помощь заранее.