2010-12-03 10 views
3

Ich versuche, Änderungen in NopCommerce zu machen, um Sprache in Adressleiste aufzunehmen Ich weiß, Knoten, was scheint, Problem zu sein.Problem mit UrlRewriting in NopCommerce

Wenn ich UrlRewriting deaktivieren funktioniert alles gut, wenn ich es aktiviere, wenn ich auf Standardsprache bin alles funktioniert gut, wenn ich zu einer anderen Sprache gehe, die nicht standardmäßig ist, habe ich die Probleme.

Ich habe zwei Teile des Codes für Standard languge und für andere Sprachen

ich ändern ein bisschen einen Code, so dass nun Hauptfunktion wählen, zwischen den Sprachen:

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(); 
    } 

Für Standardsprache Ich habe auch: für SEO.Category.UrlRewriteFormat ich in der Datenbank für Standardsprache haben: {0} c {1}/{2}

in UrlRewriting.config habe ich diese Regeln für die Standardsprache :

ohne URL wie meinen Link oben Blick Umschreiben www.nopcomerce.com/category.aspx?categoryid=10

Wenn ich meine Verbindung zur Kategorie in Standardsprache gehe www aussehen. nopcomerce.com/c10/somecategory

Für andere Sprachen:

Für SEO.Category.UrlRewri teFormat2 Ich habe für andere Sprachen in der Datenbank: {0} {1}/c {2}/{3}

und für andere Sprachen Ich habe

die Verbindung ohne url rewrithing für andere Sprache aussehen www.nopcomerce.com/category.aspx?language=de & categoryid = 10

Und wenn ich zum Beispiel in derselben Kategorie in deutscher Sprache zu gehen ich habe www.nopcomerce.com/de/c10/ somecategorylocalizedingerman

Jetzt weiß ich, diese Seite funktioniert gut, wie ich schon sagte, denn wenn ich UrlRewriting in NopCommerce deaktivieren alle Seiten in allen Sprachen funktioniert gut. Ich kann die Sprache zwischen Kategorien, Produkten und dem gesamten Portal ohne Probleme in jeder Sprache ändern.

Aber wenn ich URLRewriting ermöglichen, arbeitet die Links für die Kategorie der in Standardsprache in Ordnung (www.nopcomerce.com/c10/somecategory), aber wenn ich in anderen Sprachen auf den Link klicken Sie HIER, ich jedes Mal, klicken Sie auf einen link, zum Beispiel ein Link für Kategorie in einer anderen Sprache, der Inhalt, der Show ist von der Standardseite (wie es mich dort umleiten) aber ich sehe, dass der Link, den ich in einer Sprache gehen möchte, in der Adressleiste () geschrieben wird www.nopcomerce.com/en/c10/somecategorylocalizedingerman).

Ich versuche alles, aber ich weiß nicht, was das Problem ist. Was ist falsch?

Ich versuche auch, um Hilfe in NopCommerce-Forum zu bitten, aber es gibt keine Hilfe von dort.

Sie können über dieses Problem lesen, wo ich begann zu schreiben, bis zu diesem Teil, wo ich jetzt nicht, was scheint ein Problem sein.

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

Dank für jede Hilfe im Voraus.

Antwort

0

Nach mehreren Tagen der Folter und der vielen Stunden gab ich eine Sache auf, und es ist, dass Verbindungen so sein werden, wie ich will.

ich es nie geschafft, zu tun, dass Links für Sprachen, andere als die Standardverbindung, wie folgt aussieht:

nopcommerce.com/Land/Kategorie/name-of-Kategorie

Der nächstgelegene ich habe es geschafft, zu erreichen ist, mich zu verbinden, schauen

nopcommerce.com/category/country/name-of-category.

Ich habe auch geschafft, die Links, die wir nicht klassischen ImageButton als normale Hyperlink und Links, dass ich stolperte über ein interessantes Problem.

NopCommerce verwendet Cookies, um die Sprache zu ändern.

Ich fand den Namen des Cookies, und wie er in NopContext.Current.WorkingLanguage schreibt.

In ähnlicher Weise, habe ich auch eine Javascript-Funktion 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()); 
} 

, die im Cookie einen log-Wert der ausgewählten Sprache erzeugt, und das aktiviert wird, wenn ein Nutzer auf der Flagge des ausgewählten Sprache.

zB

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); 

Und nun kommen wir zum interessanten Teil, wo das Problem auftritt, und es ist mir nicht klar, warum es passiert.

Angenommen, wir haben Deutsch und Englisch

Als ich zum ersten Mal auf der Flagge der deutschen Sprache klicken, in der Adressleiste mir einen Link zu der deutschen Sprache zeigt, aber der Inhalt ist immer noch in Englisch. Erst wenn ich zum zweiten Mal (wieder) auf die Flagge in deutscher Sprache klicke, wird der Inhalt der Seite auf Deutsch umgestellt.

Ich verstehe nicht, warum das jetzt passiert mir?

Verwandte Themen