Welcome to MSDN Blogs Sign in | Join | Help

Search features, web parts and delegate controls

SharePoint has got great power with it's delagate controls. With the default.master the following delegate controls are available:

  • AdditionalPageHead
  • GlobalSiteLink0
  • GlobalSiteLink1
  • GlobalSiteLink2
  • SmallSearchInputBox
  • TopNavigationDataSource
  • PublishingConsole
  • QuickLaunchDataSource

Delegate lets you change the the control during run time. So you can apply the best control possible, for just one site and not another.

After having read a few of the online guides on how to use delegates, I would like to point out that they are not limited to web and site scopes. They work great on web application level as well. Implemented wisely this can save you an extra set of master pages...!

 

Here are some of the guides:

http://msdn2.microsoft.com/en-us/library/ms463169.aspx

http://www.sharepointbuzz.com/index.php/2008/01/16/how-to-change-search-box-image/

http://www.sharepointblogs.com/mrbill/archive/2007/05/24/using-delegate-controls-in-sharepoint.aspx

http://www.devx.com/enterprise/Article/36628/1954?pf=true

 

Small example:

I wanted a search box without a dropdown on my portal, but with a dropdown on the team sites. So I implemented two set of features:

Nr.1

Searcharea.xml

<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Control
Id="SmallSearchInputBox"
Sequence="12"
ControlClass="Microsoft.SharePoint.Portal.WebControls.SearchBoxEx" ControlAssembly="Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">

    <Property Name="GoImageUrl">/_layouts/images/SearchButton.jpg</Property>
    <Property Name="GoImageUrlRTL">/_layouts/images/SearchButton.jpg</Property>
    <Property Name="GoImageActiveUrl">/_layouts/images/SearchButton.jpg</Property>
    <Property Name="GoImageActiveUrlRTL">/_layouts/images/SearchButton.jpg</Property>
    <Property Name="UseSiteDefaults">false</Property>
    <Property Name="FrameType">None</Property>
    <Property Name="DropDownMode">HideScopeDD</Property>
    <Property Name="DropDownWidth">140</Property>
    <Property Name="ShowAdvancedSearch">false</Property>
    <Property Name="SearchResultPageURL">http://contoso.com/search/pages/results.aspx</Property>
  </Control>
</Elements>

 

Feature.xml
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright (c) Microsoft Corporation. All rights reserved. -->
<Feature Id="......"
Title="Search box feature for the Portal header"
Description="Search feature - replaces OOB feature"
DefaultResourceFile="spscore"
Version="12.0.0.0"
Scope="WebApplication"
ReceiverAssembly="Microsoft.Office.Server.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"

ReceiverClass="Microsoft.Office.Server.Search.Administration.BasicSearchFeatureReceiver"
xmlns="http://schemas.microsoft.com/sharepoint/">
  <ElementManifests>
        <ElementManifest Location="searcharea.xml"/>
    </ElementManifests>

</Feature>

 

Nr.2

I created two similiar files, but exchanged

    <Property Name="DropDownMode">HideScopeDD</Property>

with

    <Property Name="DropDownMode">ShowDD</Property>

 

Installed the featueres, open central admin and enabled one feature for each web application. Easy? :)

Have you used delegates in a cool way? Drop me a line!

Published Tuesday, April 15, 2008 9:34 PM by Stian Kirkeberg

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# Microsoft news and tips &raquo; Search features, web parts and delegate controls

Leave a Comment

(required) 
required 
(required) 
 
Page view tracker