Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the domain name for a Sitecore item

I have a multi site Sitecore installation. I am trying to create an email that gets sent out that contains links back to the Sitecore editor for each item. I have it all working except the correct domain name. Given an item ID how would I use the API to get the domain for that item? For example - I want to produce a URL like the following:

http://www.mySite1.com/sitecore/shell/sitecore/content/Applications/Content Editor.aspx?id=id

The only part I'm not sure about is how to programmatically retrieve the "www.mySite1.com" part. Any ideas? I can never find stuff like this in the Sitecore API although I am sure it is there somewhere.

like image 589
Corey Burnett Avatar asked Dec 16 '22 07:12

Corey Burnett


2 Answers

I am assuming you have multiple sites set up in the <sites> section of your web.config file and that each one has a hostName property defined e.g.

<site name="website1" hostName="website1.com" ...
<site name="website2" hostName="website2.com" ...

You can use the SiteManager class to access info about each sites including the hostName

Sitecore.Sites.SiteManager.GetSite("website1").Properties["hostName"]

.. if you are running in a Sitecore page you can access the currently running Site object using

Sitecore.Context.Site 

Hope this helps :)

like image 92
Stephen Pope Avatar answered Dec 28 '22 10:12

Stephen Pope


I think there are a few approaches for you:

  1. In your <linkManager> config, set alwaysIncludeServerUrl to true so calls to GetItemUrl() have absolute full URLs.

  2. Set the barely documented targetHostName attribute on the <site ... /> node in your web.config and ensure the Sitecore config setting Rendering.SiteResolving is set to true. This should then resolve the correct target hostname given the site in context.

like image 36
Mark Ursino Avatar answered Dec 28 '22 09:12

Mark Ursino