Content providers in a multisite environment

Work with module providers

With this sample, you learn to use the following APIs related to module providers:

  1. Getting source links for the current site
  2. Get the module providers using the module name
  3. Get the default provider
  4. Get a specific provider - the News provider (built-in) and for a dynamic module (Press releases)

 

using System.Collections.Generic;
using System.Linq;
using Telerik.Sitefinity.Modules.Libraries;
using Telerik.Sitefinity.Modules.News;
using Telerik.Sitefinity.Multisite;
using Telerik.Sitefinity.Services;
namespace SitefinityWebApp
{
public partial class GetProvidersExample
{
public void GetContentProvidersForCurrentSite()
{
var multisiteContext = SystemManager.CurrentContext as MultisiteContext;
// All data source links for current site
List<MultisiteContext.SiteDataSourceLinkProxy> dataSources = multisiteContext.CurrentSite.SiteDataSourceLinks.ToList();
string librariesDataSourceName = typeof(LibrariesManager).FullName; // "Telerik.Sitefinity.Modules.Libraries.LibrariesManager"
// Get the module's providers by the module's name
var currentSiteProv = multisiteContext.CurrentSite.GetProviders(librariesDataSourceName).Select(p => p.ProviderName);
// Get the default provider
var defaultProvider = multisiteContext.CurrentSite.GetDefaultProvider(librariesDataSourceName);
// Get the providers for news for current site
var newsSiteProvs = multisiteContext.CurrentSite.GetProviders(typeof(NewsManager).FullName).Select(p => p.ProviderName);
// Get the providers for "Press releases" dynamic module for current site
var pressReleasesSiteProvs = multisiteContext.CurrentSite.GetProviders("Press releases").Select(p => p.ProviderName);
}
}
}

Enumerate all content providers enabled in all your sites

To enumerate all content providers and match them to the sites where they are enabled, perform the following:

  1.  To get all sites, use the GetSites() method and create a new SiteRegion class for each ISite returned by it.
  2. To get the active modules in your Sitefinity CMS instance, use the ActiveTypes method, then get the name of their modules, and finally - filter out the distinct names of the modules.
  3. To obtain the list of providers activated in a site, use the GetProviders method with the names of the dynamic modules obtained in the previous step.
  4.  

 

using System.Collections.Generic;
using System.Linq;
using Telerik.Sitefinity.DynamicModules.Builder;
using Telerik.Sitefinity.Multisite;
using Telerik.Sitefinity.Services;
namespace SitefinityWebApp
{
public partial class GetProvidersExample
{
public void EnumerateAllContentProviders()
{
var multisiteContext = SystemManager.CurrentContext as MultisiteContext;
var sites = multisiteContext.GetSites();
foreach (var site in sites)
{
using (new SiteRegion(site))
{
var siteTypesAndProvides = this.GetProviders(site);
// use siteTypesAndProvides here
// ...
}
}
}
private IDictionary<string, string[]> GetProviders(ISite site)
{
var result = new Dictionary<string, string[]>();
var dynamicModuleNames = ModuleBuilderManager.GetActiveTypes().Select(t => t.ModuleName).Distinct();
foreach (var dynamicModuleName in dynamicModuleNames)
{
var typeProviders = site.GetProviders(dynamicModuleName);
result.Add(dynamicModuleName, typeProviders.Select(p => p.ProviderName).ToArray());
}
return result;
}
}
}

Want to learn more?

Increase your Sitefinity skills by signing up for our free trainings. Get Sitefinity-certified at Progress Education Community to boost your credentials.

Get started with Integration Hub | Sitefinity Cloud | Sitefinity SaaS

This free lesson teaches administrators, marketers, and other business professionals how to use the Integration hub service to create automated workflows between Sitefinity and other business systems.

Web Security for Sitefinity Administrators

This free lesson teaches administrators the basics about protecting yor Sitefinity instance and its sites from external threats. Configure HTTPS, SSL, allow lists for trusted sites, and cookie security, among others.

Foundations of Sitefinity ASP.NET Core Development

The free on-demand video course teaches developers how to use Sitefinity .NET Core and leverage its decoupled architecture and new way of coding against the platform.

Was this article helpful?