Work with module providers
With this sample, you learn to use the following APIs related to module providers:
- Getting source links for the current site
- Get the module providers using the module name
- Get the default provider
- Get a specific provider - the News provider (built-in) and for a dynamic module (
Press releases)
C#
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:
- To get all sites, use the
GetSites()method and create a newSiteRegionclass for eachISitereturned by it. - To get the active modules in your Sitefinity CMS instance, use the
ActiveTypesmethod, then get the name of their modules, and finally - filter out the distinct names of the modules. - To obtain the list of providers activated in a site, use the
GetProvidersmethod with the names of the dynamic modules obtained in the previous step.
C#
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?
Enhance your Sitefinity skills by enrolling in free training sessions. Become Sitefinity certified through Progress Education Community to strengthen your professional credentials.
Get started with Integration Hub | Sitefinity Cloud
This free lesson teaches administrators, marketers, and other business professionals how to use Sitefinity Integration Hub to create automated workflows between Sitefinity and other business systems.
Web Security for Sitefinity Administrators
This free lesson teaches administrators the basics about protecting your Sitefinity instance and your 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 ASP.NET Core and take advantage of its decoupled architecture and modern development model.