There are various ways to achieve content targeting in a content management system. In SharePoint, some common terms which are associated with this feature are Audience Targeting, Security Trimming, Metadata etc. Today I am going to share an example which we recently implemented for our customer and which required advanced targeting rules.
An internal portal accessed by employees and contractors in three dozen locations comprising of countries and/or regions. Authoring takes place in a separate content site and content is rendered on a publishing site. All content is targeted with three important profile attributes –
a. Location (comprises of country and their region)
c. Business Unit
Each piece of content or even a link takes user to the publishing site keeping authoring unexposed to the end user. What this means to search is
a. Customizing search results URL to point to publishing
b. Customizing hover preview to display publishing pages
The IT Leader's Guide to Multicloud Readiness
This guide provides practical key insights and important factors to consider to make informed decisions in your multicloud journey.
c. And most importantly the results should be targeted based on user profile properties (mentioned above)
In order achieve the above, we designed a custom solution extending content by search web part. This solution inserts a query token into the content search web part which filters the indexed content with logged in user’s profile attributes (Location, Role, Business Unit). (Credit goes to my colleague Ryan Selley for developing this robust solution)
First we’ll map managed properties to crawled properties for the taxonomy terms used to tag content.
Then we’ll create the custom web part in Visual Studio by extending content by search.
Then we’ll Generate a custom query variable to insert in the search query box.
Build this custom query token with logged in user’s profile properties in the BuildTAQuery()
This is how the query text looks in the search web part
With this token in place your content is now targeted on the user’s profile attributes. The logged in user will now only see content which has been tagged to their location, role, and business unit.
Happy targeted coding!