📚 Product Knowledge
Website Configuration
📖 Docs

Website Configuration - Optimizely CMS 12

Exam Area: Area 1 – Product Knowledge (15%)
Reference: https://docs.developers.optimizely.com/content-management-system/docs/sites


1. Website Configuration in Admin

Access: /episerver/cms/adminWebsites


2. SiteDefinition

// SiteDefinition - site configuration
public class SiteDefinition
{
    public string Name { get; set; }          // Site name
    public Uri SiteUrl { get; set; }          // Primary URL
    public ContentReference StartPage { get; set; } // Start page
    public IList<SiteHost> Hosts { get; set; } // Host bindings
}

// SiteHost - host binding
public class SiteHost
{
    public string Name { get; set; }          // Hostname
    public CultureInfo Language { get; set; } // Language for host
    public HostDefinitionType Type { get; set; } // Primary/Edit/Undecided
}

3. Admin UI - Sites

Admin → Websites
  → List of all sites
  → Each site:
     - Primary URL
     - Start page
     - Host bindings
  
  → Add site
  → Edit site settings
  → Manage host bindings

4. ISiteDefinitionRepository (Code)

public class SiteService
{
    private readonly ISiteDefinitionRepository _siteRepository;

    public SiteService(ISiteDefinitionRepository siteRepository)
    {
        _siteRepository = siteRepository;
    }

    public IEnumerable<SiteDefinition> GetAllSites()
    {
        return _siteRepository.List();
    }

    public SiteDefinition GetCurrentSite()
    {
        return SiteDefinition.Current;  // Static access
    }
}

5. Multi-site Config

// Multiple sites in 1 CMS instance
Site 1: www.company.com → StartPage ID 5
Site 2: blog.company.com → StartPage ID 100
Site 3: shop.company.com → StartPage ID 200

// Each site can have its own languages
Site 1 (www.company.com/en) → English
Site 1 (www.company.com/sv) → Swedish

Review Questions

  1. Where is Website Configuration in Admin? (/episerver/cms/admin → Websites)
  2. What does SiteDefinition.Current return? (The SiteDefinition of the current request's site)
  3. What is SiteHost used for? (Defines hostname bindings for a site)
  4. How many sites can a single CMS instance have? (Multiple sites – multi-site)