2012-03-29 6 views
3

Sitecore 6.3を実行しているサイトがあります。このサイトにはいくつかのサブサイトが含まれています(例:www.a.com & www.b.com)。私は尋ねたいことは、このサイトに別々のエイリアスを作成できるかどうかです(例:www.a.com/alias & www.b.com/aliasは別のページにリダイレクトする必要があります)。今、サイトwww.a.comのエイリアスを作成すると、www.b.comにも表示されます。どのようにこれを管理するためのアイデア? Thnx。Sitecore ASP.NET - ドメインごとのエイリアスを管理する

+0

Sitecoreでこれを行う方法は、デフォルトではありません。私はこの機能を作ることができると推測しますが、どこから始めたらいいか分かりません。たぶん、Sitecoreにhttps://support.sitecore.net/helpdesk/Default.aspxで尋ねてみてください(アクセスが必要です、Sitecoreトレーニングを受けている場合は取得する必要があります) – Holger

+0

それがあなたのために働いた場合は... –

答えて

4

これは可能です。私はすでにSitecoreのサポートチケットを作っています。私もこれを試してみました。 (私たちはまだコストについて合意していなかったので、まだライブウェブサイト上にそれを実装していない)。このクラスは、AliasResolverの代わりに、web.configファイルに挿入することができる

class MultiSiteAliasResolver : AliasResolver 
{ 
    public new void Process(HttpRequestArgs args) 
    { 
     Assert.ArgumentNotNull(args, "args"); 

     if (!Settings.AliasesActive) 
     { 
      Tracer.Warning("Aliases are not active."); 
     } 
     else 
     { 
      Sitecore.Data.Database database = Sitecore.Context.Database; 
      if (database == null) 
      { 
       Tracer.Warning("There is no context database in AliasResover."); 
      } 

      Item aliasItem = getAliasItem(args); 
      if (aliasItem != null) 
      { 
       LinkField linkField = aliasItem.Fields["Linked item"]; 
       if (linkField != null) 
       { 
        Item AliasLinkedTo = Sitecore.Context.Database.GetItem(linkField.TargetID); 

        if (AliasLinkedTo != null) 
        { 
         Sitecore.Context.Item = AliasLinkedTo; 
        } 
       } 
       else 
       { 
        base.Process(args); 
       } 
      } 
     }    
    } 

    /// <summary> 
    /// Gets the alias item. 
    /// </summary> 
    /// <param name="args">The args.</param> 
    /// <returns></returns> 
    private Item getAliasItem(HttpRequestArgs args) 
    { 
     string websitePath = Sitecore.Context.Site.RootPath.ToLower(); 

     if (args.LocalPath.Length > 1) 
     { 
      Item aliasItem = Sitecore.Context.Database.GetItem(websitePath + "/settings/aliassen/" + args.LocalPath); 

      if (aliasItem != null) 
      { 
       return aliasItem; 
      }     
     } 

     return null; 
    } 
} 

:これは、あなたが見たいかもしれないいくつかのサンプルコードです。たとえば:

<processor type="CommandTemplates.Classes.MultiSiteAliasResolver, CommandTemplates" /> 

私はこれがあなたのために働くことを願っています、幸運を!

update:私の例では、各ウェブサイトノード "/ settings/aliassen /"の下にフォルダがあります。これは、ユーザーがalliasesを設定したい場所です。ところで、このようなAliasResolverを変更すると、標準のSitecoreエイリアスボタンがトリガするウィンドウには、必要な機能がなくなることにも注意してください。私はその作業を行うための道のりをする時間がありませんでしたが、あなたはいつもあなたの新しいソリューションで作業する方法をコンテンツマネージャーに説明することができました。

+0

ありがとうこれは私が必要とするものです! – user1300494

+0

これはモジュールとしてリリースされました。http://marketplace.sitecore.net-> Multisite alias resolverからダウンロードできます。 – Younes

関連する問題