3

NopCommerce に変更を加えて、アドレスバーに言語を含めようとしましたが、何が問題なのかわかりません。

UrlRewriting を無効にすると、すべて正常に動作し、有効にすると、デフォルトの言語を使用しているときに、デフォルトではない別の言語に移動するとすべて正常に動作し、問題が発生します。

デフォルト言語用と他の言語用の 2 つのコード部分があります

コードを少し変更したので、メイン関数は言語を選択するようになりました:

    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

事前にご協力いただきありがとうございます。

4

1 に答える 1

0

数日間の拷問と何時間もの時間の後で、私は 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);

そして今、問題が発生する興味深い部分に来ましたが、なぜそれが発生したのか私には明らかではありません.

ドイツ語と英語があるとします

ドイツ語の旗を最初にクリックすると、アドレスバーにドイツ語へのリンクが表示されますが、コンテンツはまだ英語です。2 回目に (再度) ドイツ語の旗をクリックすると、ページの内容がドイツ語に切り替わります。

なぜこれが今私に起こっているのか理解できませんか?

于 2010-12-04T16:21:54.853 に答える