SharePoint 2013: How To Create Custom Display Templates For SharePoint Search

What are Display Templates?

Display Template is a new technique introduced in SharePoint 2013 in order to modify the look and feel of the search results by making use of HTML & JavaScript instead of XSLT modifications as we did in the earlier versions.

With this new rendering technique or rather framework, SharePoint offers some of the most compelling advantages as mentioned below:

  1. Display Templates Support HTML & JavaScript instead of XSLT (which is often quite cumbersome to work with).
  2. Display Templates based configurations supports a broader scope of execution than XSLT based configurations. (As Display Templates should be defined at Site or Site Collection Scope while XSLT based Templates could only be defined at the WebPart Scope).
  3. Display Template applies Per Item Basis and not Per Result Set Basis (Provides us with the Context of the Current Item which is under execution, so that we can make use of any Managed Metadata Property associated with the Search Result Item and render it as per needs)
  4. As the Display Templates are scoped to Site or Site Collection, they can be used for all kind of results, can be used with in Content Search Web Part, Refiners and so on.

I recommend you to follow this MSDN Article on Display Templates to get an in depth understanding on the topic.

By now we got a fairly good Idea on “What are Display Templates?” and now it is time to see them in action.

Business Scenario:

  1. Additional User Profile Property should be added to User Profile Page which will hold the User’s LinkedIn Profile URL.
  2. There should be a provision to adjust the display position of this Property in Core Search Result Web Part.

Prerequisites:

  1. User Profile Service should be up and running
  2. User Profile Synchronization should be configured
  3. Search Service Application Instance should be configured appropriately
  4. Search Center Site Collection should be configured appropriately

In order to see Display Templates in Action, we need to perform following steps:

  1. Create User Profile Property
  2. Start Full Crawl of Content Source for the User Profiles
  3. Create, Map and Configure Managed Property
  4. Start Full Crawl of Content Source for the User Profiles
  5. Create Display Template
  6. Create Result Type with Custom Display Template
  7. Test Display Template

Create User Profile Property

Go To Central Admin >> Manage Service Applications

1

Click on User Profile Service Application

2

Click on Manage User Properties

3

Click on New Property

4

Enter Name, Display Name, Type & Length for the User Property as needed.

5

Make sure Default Privacy Setting must be set to Everyone

6

Make sure Indexed must be selected under Search Settings Section, else this property will be skipped by Search Crawler and it won’t be available to use later.

7

Once done with it click OK to add the User Property

8

Once added you can find the new property under Custom Properties Section

9

Go to Manage User Profiles

10

Find the required User Profiles and Edit their Profiles by selecting Edit My Profile from ECB Menu

11

On the User Profile Page, locate the LinkedIn Profile Property

Enter the URL to LinkedIn Profile of the User and Save the User Profile Properties

12

13

With this we are all done with the Creation of User Profile Property.

Start Full Crawl of Content Source for the User Profiles

Now in order to generate the Crawled Property corresponding to the User Profile Property we need to run the Full Crawl on the People Content Source

Go to Search Service Application

14

Click on Content Sources

15

Click on People Search and select Start Full Crawl from ECB

16

Wait till the Crawl Status become Idle

Create, Map and Configure Managed Property

Go to Search Schema

17

Click on Crawled Properties Link

18

We should verify if the Crawl Property corresponding to our User Profile Property has been created successfully or not

Find the Crawled Property by entering Search Term in Crawled Properties Textbox and click on the Image button with Green Arrow image.

Make sure you should be able to see the Crawled Property which is created during the Full Crawl Process as shown below

19

New we need to create a new Managed Property and Map it with the crawled property shown in earlier step

Click on Managed Properties Link

Click on New Managed Property Link

20

Enter Name, Description, Data Type for the Managed Property

21

Select Searchable, Queryable, Retrievable, Sortable, Refinable and Safe as appropriate

22

23

Click on Add Mapping Button

24

On the Crawled Property Selection Screen

  1. Enter Property Name
  2. Click Find Button
  3. Select appropriate Crawled Property
  4. Click OK

25

Save the Managed Property Definition

26

In order to verify newly Created Managed Property

  1. Enter Property Name
  2. Click Image Button

You should be able to see Managed Property with all the settings you specified earlier.

27

With this we are done with the creation of require Managed Property corresponding to the Crawled Property

Start Full Crawl of Content Source for the User Profiles

Now in order to fill the Managed property with the value stored with in Crawled Property based on the mapping, we need to run the Full Crawl again as we did before.

28

Create Display Template

Once we are done with the Creation and Configuration of required Managed Property, it is time now to create a new Display Template which will include this Managed Property

We need to launch Design Manager from the Standard Menu as shown below

29

Click on Upload Design Files

30

Click on Location URL as shown below

31

Click on Display Templates Folder

32

Click on Search Folder

33

Since we need to modify the template for People Search Results, we need to modify the template Item_Person

34

Point of Caution: As a part of recommended SharePoint Practices, we should never edit and existing template, instead we should make a copy of it, rename it and then modify it as per our needs.

35

Open the Item_Person_LinkedIn Template file and make the following modifications

  1. Change the Title
  2. Added the Managed Property we created in earlier steps

36

Now you need to decide where exactly you want to place this Managed Property within the Display Template.

In our case I am going to place this below User Name

Find the Html Tag NameValue

Below this tag add the following code as shown below

  1. Check if LinkedInProfileUrl Managed Property is not Empty
  2. Add HTML snippet to display the value stored in LinkedInProfileUrl Managed Property
  3. Close the IF block

37

Save the file and copy it back to the same location

38

SharePoint generates a JS File corresponding to this HTML file automatically, and the JS file should not be modified by the users. This JS file will be maintained and modified by SharePoint system automatically based on the changes you have made in HTML File.

39

With this we are done with the development of new Display Template.

Create Result Type with Custom Display Template

Now the next step is to create a new Result Type, which will be using our new Display Template to display the Search Results

Go to Site Settings

40

Click on Result Types

41

Click on New Result Type

42

  1. Provide Name to the Result Type
  2. Select Result Source
  3. Select Display Template (the one we have just created)
  4. Save Result Type

43

44

We can see the newly created Result Type on Manage Result Type Page as shown below

45

With this we are all done with development of new Display Template, it is time to test it now.

Test Display Template

Search for the Users and sure enough you will find the new Property appears only for those User Profiles which contains a non-empty value for LinkedIn URL Property.

46

From the above walkthrough we can conclude the fact that Display Templates are simple but really powerfull mode of customizing Search Result Page as per custom needs.

Hope this help someone in need…

10 thoughts on “SharePoint 2013: How To Create Custom Display Templates For SharePoint Search

Leave a comment