2012-03-29 2 views
3

Ich habe Site Sitecore 6.3 laufen. Diese Website enthält einige Unterwebsites (z. B. www.a.com & www.b.com). Ich möchte fragen: Ist es möglich, separate Aliase für diese Seiten zu erstellen (z. B. www.a.com/alias & www.b.com/alias sollte auf verschiedene Seiten umleiten). Wenn Sie jetzt einen Alias ​​für die Website www.a.com erstellen, wird dieser auch auf www.b.com erscheinen. Irgendwelche Ideen, wie man das schafft? Thnx.Sitecore ASP.NET - Aliase pro Domain verwalten

+0

In Sitecore ist dies standardmäßig nicht möglich. Ich würde annehmen, dass diese Funktionalität hergestellt werden könnte, aber ich weiß nicht, wo ich anfangen soll. Vielleicht kannst du Sitecore unter https://support.sitecore.net/helpdesk/Default.aspx fragen (benötigt Zugang, den du erhalten solltest, wenn du Sitecore Training hast) – Holger

+0

Akzeptiere die Antwort, wenn es für dich funktioniert ... –

Antwort

4

Dies ist möglich. Ich habe bereits ein Support-Ticket für Sitecore erstellt. Ich habe das auch ausgearbeitet und für mich hat ihre Lösung gut funktioniert. (habe es noch nicht auf der Live-Website implementiert, weil wir noch keine Einigung über die Kosten hatten). Dies ist ein Beispielcode Sie vielleicht sehen:

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

Diese Klasse in der web.config anstelle des AliasResolver eingeführt werden könnte. Zum Beispiel:

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

Ich hoffe, dass dies für Sie arbeiten wird, viel Glück!

update: In meinem Beispiel habe ich einen Ordner unter jedem Website-Knoten "/ settings/aliassen /", das ist der Ort, den ich möchte, dass die Benutzer Allianzen setzen. Übrigens bemerken Sie auch, dass wenn Sie den AliasResolver so ändern, das Fenster, das die Sitecore Alias-Standardschaltfläche auslöst, nicht mehr die benötigte Funktionalität hat. Ich hatte keine Zeit, einen Weg zu finden, diese Arbeit zu machen, aber Sie könnten den Content-Managern immer erklären, wie Sie mit Ihrer neuen Lösung arbeiten.

+0

Danke Genau das brauche ich! – user1300494

+0

Dies wurde als Modul veröffentlicht, das Sie von http://marketplace.sitecore.net -> Multisite Alias ​​Resolver herunterladen können – Younes

Verwandte Themen