2012-12-11 2 views
5

In einer Website, die ich erstelle, versuche ich den Referer zu verwenden, um zu überprüfen, ob AJAX-Anfragen von den richtigen URLs kommen.Erhalte das Objekt mit einer URL in Sitecore

Dazu möchte ich Sitecore eine URL zu einem Artikel auflösen lassen. Zum Beispiel

http://www.mysite.com/abc/def

könnte auf das Element auf dem Weg lösen

sitecore/Content/MySite/Home/abc/def

Was ist der empfohlene Weg, um dies in meinem Code zu gehen?

Antwort

1

nicht wirklich bekommen, was Sie (mit AJAX-Request und so weiter) zu tun versuchen, aber wenn Sie http://www.mysite.com/abc/def wollen sitecore/content/MySite/Home/abc/def das Element zu beheben, müssen Sie Ihre <site> in der web.config wie folgt konfigurieren:

<site name="MySite" hostName="www.mysite.com" rootPath="/sitecore/content/MySite" startItem="/Home" *other attributes here* /> 
1

können Sie die Methode verwenden ItemManager.GetItem(itemPath, language, version, database, securityCheck) ein Element zu beheben basierend auf es ist (voll) Weg.

6

Danke für alle Antworten, aber keiner von ihnen hat alles getan, was ich brauchte. Das hat für mich funktioniert.

var url = new Uri(...); 

// Obtain a SiteContext for the host and virtual path 
var siteContext = SiteContextFactory.GetSiteContext(url.Host, url.PathAndQuery); 

// Get the path to the Home item 
var homePath = siteContext.StartPath; 
if (!homePath.EndsWith("/")) 
    homePath += "/"; 

// Get the path to the item, removing virtual path if any 
var itemPath = MainUtil.DecodeName(url.AbsolutePath); 
if (itemPath.StartsWith(siteContext.VirtualFolder)) 
    itemPath = itemPath.Remove(0,siteContext.VirtualFolder.Length); 

// Obtain the item 
var fullPath = homePath + itemPath; 
var item = siteContext.Database.GetItem(fullPath); 
+0

Dies funktioniert möglicherweise nicht gut bei mehrsprachigen System. ?? – theusguy

+0

Da ich einen Bindestrich ('-') in meinem virtuellen Ordner hatte, musste ich den Aufruf nach der Suche nach dem virtuellen Ordner am Anfang des Pfades in' DecodeName' verschieben. @theusguy Sie können GetItem auch mit einer Sprache aufrufen, wenn Sie diese auch aus der URL extrahiert haben (oder Sie haben sie aus thesc_lang cookie gelesen). –

Verwandte Themen