Adding a link to a document’s folder in SharePoint 2010 Enterprise Search
Posted
Monday, August 23, 2010 11:19 AM
by
CoreyRoth
One request I have seen a lot from people since MOSS 2007 is the desire to add a link to the subfolder of a document on the search results page. This is useful when the user wants to see what else is in that folder or if they want to perform other operations on that document (such as viewing properties or compliance details). In SharePoint 2007, I wrote the Document Link Handler to help with this. It simply looked up the details on the item and redirected the user to the appropriate page. In SharePoint 2010, this is not necessary any more since they added the new sitename column in the search results XML document. Today we will customize the look of the search results page. All we have to do is use the new sitename column in the XSL that displays the results.
There are two ways to go about this. If you only want this new link to show up on certain results pages, you can edit the CoreResultsWebPart in a given search center. If you want the link to be global and to appear on all search centers, you can edit the Local Search Results federated location. Today we’ll demonstrate modifying the federated location, but if you want to just change a specific page, edit it, and then edit the Core Results Web Part. You will then click the XSL editor button and make the same changes as we are about to do in the federated location.
To edit the federated location go to your Search Service Application –> Federated Locations, then edit Local Search Results. Expand the Display Information and scroll down to the Core Search Results Display Metadata section.
Ensure Use Default Formatting is not checked and click the button next to the XSL textbox. I found that the best place to add the link is near the location where the View in Browser link normally appears. The place in the file is more than half way down. If you see the ViewInBrowser link you know you are near the right spot. Here is what it looks like.
Now, what do we add there? It’s pretty simple. We use XSL to create a link and pass the value of the sitename element. However, I recommend that you only show the link for documents. The sitename element is always populated but you might find that it has less relevance on things like non-SharePoint sites or for list items. It’s up to you if you want to include it or not though. Here is the code that you will want to add.
<xsl:if test="isdocument = 'True'">
<a>
<xsl:attribute name="href">
<xsl:value-of select="sitename"/>
</xsl:attribute>
View Folder
</a>
</xsl:if>
One thing to note is that in SharePoint 2007, you used to compare isdocument to a value of 1. That doesn’t work anymore. You have to compare it to True or False. That’s really all you have to do. Here is what it looks like together.
Once you have the change complete, click OK and then save your changes to the federated location. It usually takes about a minute for your changes to show up when you do search. So wait a bit and then go to your search center and give it a try. Here is what the link looks like on my results screen.
If the link doesn’t show up for you, try another search term. If you still have issues, try removing the isocument xsl:test element and see if the link shows up then. This link is pretty easy to add, so give it a try today. I think the link to the document’s folder is really handy and I think your users will appreciate it.