The content you're reading is getting on in years
This post is on the older side and its content may be out of date.
Be sure to visit our blogs homepage for our latest news, updates and information.
In the previous article we have demonstrated how to map embedded template of a control to an external one. A careful reader may have noticed that we have set the layoutTemplatePath property of viewSettings element indicating that the control has only one template - the layout template - which we are mapping.
While, it is true that all Views (controls based on ViewModeControl and ViewModeUserControl) indeed have only one template and that most of other controls have only one template, there are several controls that sport multiple templates.
In this article, we will examine how to map multiple templates of such controls.
Before we start, let us quickly take a glance at the list of Controls that use more than one template:
Another way to spot these controls is to open the reference Controls Config file that can be downloaded from your Client.net account and look for viewSettings elements which have a collection of additionalTemplates.
<viewSettings hostType="Telerik.Blogs.WebControls.BlogPosts"> |
<additionalTemplates> |
<!--Provides user interface for displaying a list of posts in the BlogPosts control in the blogs module.--> |
<add key="ItemListTemplatePath" layoutTemplatePath="~/Sitefinity/ControlTemplates/Blogs/ContentViewItemList.ascx" /> |
<!--Provides user interface for displaying a single post in the BlogPosts control in the blogs module.--> |
<add key="SingleItemTemplatePath" layoutTemplatePath="~/Sitefinity/ControlTemplates/Blogs/ContentViewSingleItem.ascx" /> |
</additionalTemplates> |
</viewSettings> |
Just as it was case with mapping controls with only one template, you will actually need to provide these templates at the paths you have specified.
*** IMPORTANT ***
Every time you modify ControlsConfig file it is necessary to restart the application in order for the changes to be applied. While there are numerous ways to restart an application, here are few handy ones - you can restart the IIS server, resave web.config file (e.g. open web.config file, press space, press backspace, save config.file), resave global.asax file (e.g. open global.asax file, press space, press backspace, save global.asax file)…
*** END IMPORTANT ***
*** NOTE ***
If you map to an external template that ends with the .ascx extension, you will be using standard ASP.NET template parser which means you will also need to provide localization file in the App_LocalResources file. Resources files are also part of the package that comes with ExternalTemplates.zip file.
If, on the other hand, you decide to use Sitefinity parser, embedded localization resources will be used. Sitefinity parser will be used if template ends in any other extension except .ascx (though the convention is .sft).
*** END NOTE
It is important to note that we are not required to map all the templates of a control to external ones. For example, we could map only the SingleItemTemplate of the BlogPosts control to an external template, while for ItemListTemplate we could keep using embedded one. To achieve this, our configuration would look like this:
<viewSettings hostType="Telerik.Blogs.WebControls.BlogPosts"> |
<additionalTemplates> |
<!--Provides user interface for displaying a single post in the BlogPosts control in the blogs module.--> |
<add key="SingleItemTemplatePath" layoutTemplatePath="~/Sitefinity/ControlTemplates/Blogs/ContentViewSingleItem.ascx" /> |
</additionalTemplates> |
</viewSettings> |
Notice that we have only removed the mapping for the ItemListTemplatePath property.
*** NOTE ***
Experienced users of Sitefinity know that ContentView based templates, such as BlogPosts, EventsView and NewsView have ContentViewDesigners attached to them which can dynamically load templates. We will touch on the topic of designers and mapping their templates in one of the following articles in this topic.
*** END NOTE ***
View all posts from The Progress Team on the Progress blog. Connect with us about all things application development and deployment, data integration and digital business.
Let our experts teach you how to use Sitefinity's best-in-class features to deliver compelling digital experiences.
Learn MoreSubscribe to get all the news, info and tutorials you need to build better business apps and sites
Progress collects the Personal Information set out in our Privacy Policy and the Supplemental Privacy notice for residents of California and other US States and uses it for the purposes stated in that policy.
You can also ask us not to share your Personal Information to third parties here: Do Not Sell or Share My Info
We see that you have already chosen to receive marketing materials from us. If you wish to change this at any time you may do so by clicking here.
Thank you for your continued interest in Progress. Based on either your previous activity on our websites or our ongoing relationship, we will keep you updated on our products, solutions, services, company news and events. If you decide that you want to be removed from our mailing lists at any time, you can change your contact preferences by clicking here.