SharePoint 2010: Create a Custom Search Box

The SharePoint 2010 OOB basic seach box control can be slightly modified using CSS, but what if you want to make more changes that CSS just can’t do? No problem. The OOB Basic Search box is just a feature, so you all you need to do to copy the existing feature to a new custom feature, make your changes, install and activate it. Let’s see how this is done.

  1. You will want to find the existing OOB Basic Search feature. By default, that is found in the following location in your SharePoint 2010 server:
    
    
    C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions14TEMPLATEFEATURESOSearchBasicFeature
  2. Create a new subdirectory in the FEATURES directory, in our case, we will name it OSearchBasicFeatureCustom, i.e.
    
    
    C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions14TEMPLATEFEATURESOSearchBasicFeatureCustom
  3. Copy all of the contents from the OSearchBasicFeature directory to the OSearchBasicFeatureCustom directory.
  4. Open the feature.xml file found in the OSearchBasicFeatureCustom directory in a text editor and replace the GUID element with a new GUID. The quickest way to get a new GUID is to open Visual Studio and go to Tools->Create Guid.Also change the Title and Description elements while you are at it.
  5. Open the searchArea.xml file found in the OSearchBasicFeatureCustom directory in a text editor and change the ID element to a unqiue value like SmallSearchInputBoxCustom.
  6. Make other changes to the properties found in the searcharea.xml file. As an example, say that you would like to hide the scope. You would update the property:
    
    
    HideDD_useDefaultScope

    Would you like to change the Search button? No problem, use:

    
    
    /Style Library/go.gif

    Just change the url to match your search button.

    For a reference all the different properties you can change, check out this list from Microsoft:

    http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.portal.webcontrols.searchboxex_properties.aspx

  7. Once you have made these changes and saved the xml files, it is now time to start the SharePoint 2010 Management Shell so you can install and enable the feature.
  8. Run the following commands in the SharePoint 2010 Management Shell:
    
    
    Install-SPFeature OSearchBasicFeatureCustom
    Enable-SPFeature OSearchBasicFeatureCustom -Url <span class="green">http://www.yoursite.com/</span>

    Replace

    http://www.yoursite.com

    with the actual url of your SP site.

  9. Even though the new feature is a farm feature, I sometimes got an error:
    
    
    Enable-SPFeature : Feature 'OSearchBasicFeatureSPT' (ID: 66a7a44f-c33d-48de-8a4 f-d60960849895) is already activated at scope '<span class="green">http://www.yoursite.com/</span>'.
    At line:1 char:17
    + Enable-SPFeature &gt;&gt;&gt;&gt;  OSearchBasicFeatureSPT -Url <span class="green">http://www.yoursite.com/</span>
    + CategoryInfo          : InvalidData: (Microsoft.Share...etEnableFeature: SPCmdletEnableFeature) [Enable-SPFeature], DuplicateNameException
    + FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletEnableFeature
  10. My Suggestion to get around this is to disable, then re-enable the feature:
    
    
    Disable-SPFeature OSearchBasicFeatureSPT -Url <span class="green">http://www.yoursite.com/</span>
    Enable-SPFeature OSearchBasicFeatureSPT -Url <span class="green">http://www.yoursite.com/</span>
  11. The feature should now be ready to be used. Open your site, in our example
    http://www.yoursite.com

    , in SPD.

  12. Open you masterpage, by default found in the /_catalogs/masterpage directory, named default.master.
  13. Edit the default.master file and look for the following code:
    1
    2
    3
    4
    5
    <div id="search-box">
        <asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server">
            <SharePoint:DelegateControl</span> runat="server" ControlId="SmallSearchInputBox" Version="4"/>
        <asp:ContentPlaceHolder>
    </div>

    You only need to replace the ControlId property with the ID you set in the searcharea.xml file. In our example:

    1
    2
    3
    4
    5
    <div id="search-box">
       <asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server">
          <SharePoint:DelegateControl runat="server" ControlId="SmallSearchInputBoxSPT" Version="4"/>
       <asp:ContentPlaceHolder>
    </div>
  14. Save, Check In and Publish as required. That’s it!

References

5 thoughts on “SharePoint 2010: Create a Custom Search Box

  1. Hi Eric,

    at first thanks a lot for this post – it really works perfectly fine for me!
    I was wondering how i can add this feature to my VS-Solution since i have a solution where i manage my whole custom-masterpage and some images.

    The problem which i’m having is that im not quite sure how to integrate it to my solution. I tried to add it as a solution feature – which won’t work (maybe i just don’t get it) i also tried it by adding it as a new empty element, which also doesn’t work since we’re dealing with a feature and not an element 🙂

    Kind Regards,

    Peter

    1. Hi Peter,

      If you want to use the technique I provided in Visual Studio then either create a new feature, or you can use an existing feature, in your VS Project. If you already have an existing feature that applies your branding, then I suggest you just use that feature.

      Now, in your VS project, add a “new item”, in particular a “Blank Element”. Name it something like SmallSearchInputBoxSPT. This blank element will create a new Elements.xml file. This file will be / is the same as the, searcharea.xml file in the original example. In this Elements.xml file, replace what is there with what is found in the searcharea.xml. Make the changes I recommend in step 5 through step 6. Finally make sure that you include this elements.xml file in your feature.

      Thats it. You should now be able to reference the control in the delegate control using your new control id as set in Step 5.

    1. Hi,

      The search feature should be found in the following directory, which is a part of the 14 hive. C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions14TEMPLATEFEATURESoSearchBasicFeature. This feature might not be found in foundation only installations, it may only be a part of SharePoint 2010 Server. I will look this up and see if I can find out if this is or is not a feature including in Foundation. If you have SharePoint 2010 Server installed then I have no idea why you cannot find this feature unless an administrator removed it? That would be hard to believe though as I think it is needed OOTB.

Leave a Reply

Your email address will not be published. Required fields are marked *

Human Check *

Filed Under

Thank you to everyone who attended our webinar today! What an amazing session from @EricOverfield. Stay tuned for info on our June webinar!

Sound has been checked. Voices are warmed up. Join us now for "Use Office UI Fabric to Beautify #SharePoint'… https://t.co/D2KAtRvAjx

Last chance to register for our online session @ 11am PST. Join @EricOverfield to learn how to beautify #SharePoint… https://t.co/kJ1OEw7uE6

30 minutes away from our May webinar "Use Office UI Fabric to Beautify #SharePoint" w/ @EricOverfield. Join us!… https://t.co/7LklBb4Z9x

IT'S THE FINAL COUNTDOWN! Join us @ 11am PST for 'Use Office UI Fabric to Beautify #SharePoint' w/ @EricOverfield… https://t.co/rgfUW2qCQ3