Thursday, 3 March 2011

Configuring metadata navigation settings on SharePoint lists with PowerShell

A nice feature in SharePoint Server 2010 is the ability to provide list and document library navigation/filtering through metadata and content type association. In a nutshell, this provides the ability to switch on features in the SharePoint user interface that allow users to find information by filtering and navigating using metadata tags and content types as opposed to folders, which as we all know have their limitations. Further details on the feature can be found here.

The feature is configured in the user interface by selecting “Metadata navigation settings” from the list settings. This will display an administration interface similar to the one shown below:

image

As you can see from the screenshot above, I have two custom columns called Document Status (single-value Choice type) and Technology (single-value Managed Metadata type) available in the Available Hierarchy Fields and Available Key Filter Fields boxes ready to add as a navigation hierarchy or key filter. Note the default setting for Selected Hierarchy Fields is Folders.

For this example, I will use PowerShell to configure both the navigation hierarchy and key filters settings to include my custom columns. I will also show you how to add the Content Type and Folders options too.

First, we will assign the site that contains the list to a variable and use this variable to get the list:

#Get Web and List objects
$web = Get-SPWeb
http://portal/permuniquesite
$list = $web.Lists["Shared Documents"]

Next, we will get the current metadata navigation settings for the list and assign them to a variable:

#Get metadata navigation settings for the list
$listNavSettings = [Microsoft.Office.DocumentManagement.MetadataNavigation.MetadataNavigationSettings]::GetMetadataNavigationSettings($list)

The next two lines of the script clear the configured hierarchies and configured key filters on the list. You could use these commands in combination with the SetMetadataNavigationSettings and $list.RootFolder.Update() commands mentioned later to remove any currently configured metadata navigation settings for the list:

#Clear current metadata navigation settings on the list
$listNavSettings.ClearConfiguredHierarchies()
$listNavSettings.ClearConfiguredKeyFilters()

These commands will add my two custom columns to the Selected Key Filter Fields:

#Configure key filters by adding columns
$listNavSettings.AddConfiguredKeyFilter($list.Fields["Technology"])
$listNavSettings.AddConfiguredKeyFilter($list.Fields["Document Status"])

These next two lines are quite important. I have found that the navigation hierarchy configuration does not work when configuring it from PowerShell unless you add the default Folders item to the Selected Hierarchy Fields first. Without this step, the custom columns will be added successfully in the Metadata navigation settings page, but they will not appear in the Tree View interface:

#Add folder navigation hierarchi$listes into list settings
#This is required to enable and show navigation hierarchies in the Tree View
$folderHierarchy = [Microsoft.Office.DocumentManagement.MetadataNavigation.MetadataNavigationHierarchy]::CreateFolderHierarchy()
$listnavSettings.AddConfiguredHierarchy($folderHierarchy)

The next step is optional, but contains the commands needed to add Content Type navigation hierarchies to the settings, if required:

#Optionally add content type navigation hierarchies into list settings if required
$ctHierarchy = [Microsoft.Office.DocumentManagement.MetadataNavigation.MetadataNavigationHierarchy]::CreateContentTypeHierarchy()
$listnavSettings.AddConfiguredHierarchy($ctHierarchy)

We now add the custom columns to the Selected Hierarchy Fields:

#Configure extra navigation hierarchies by adding list columns
$listNavSettings.AddConfiguredHierarchy($list.Fields["Technology"])
$listNavSettings.AddConfiguredHierarchy($list.Fields["Document Status"])

And finally, set the metadata navigation settings and update the root folder of the list, which is where the settings are stored:

#Set the new metadata navigation settings and update the root folder of the list
[Microsoft.Office.DocumentManagement.MetadataNavigation.MetadataNavigationSettings]::SetMetadataNavigationSettings($list, $listNavSettings, $true)
$list.RootFolder.Update()

The Metadata navigation settings page should now look as follows:

image

To test the metadata navigation feature, you will need to switch on the Tree View setting for the site. This can be done in the UI by selecting Site Settings > Tree view > Enable Tree View or you can change it with a couple of extra lines in your PowerShell script:

#Enable Tree View on the site so that navigation hierarchies can be used in the UI
$web.TreeViewEnabled = $true
$web.Update()

image

The metadata navigation and key filters features will show up on the left-hand side of the SharePoint user interface, underneath the quick launch menu, as shown above. To complete the script, don’t forget to dispose of the Web object:

#Dispose of the Web object
$web.Dispose()

46 comments:

  1. Hey Phil,

    This worked great for me, but a question. How can we add the "All Tags" column? I believe this represents the enterprise keywords field. This is treated like a special type like content type, but there's no special method for adding it. I tried all tags and enterprise keywords, and it didnt work. Ideas? The MetadataNavigationKeyFilter class says its there:

    "If it is the special Enterprise Keywords field, then the filter will be an All Tags filter, which enables you to find items with the managed metadata term in any of the Managed Metadata fields in the item".

    Thanks as always!

    ReplyDelete
  2. I dont think you need to update root folder.

    ReplyDelete
  3. I can not get this to work properly. Using the code above, I am able to add all the correct settings to the list, however the navigation controls only flash for a fraction of a second when the page loads, and then they disapear again.

    If I then go into the metadata navigation settings for the list, all the correct settings are there, and when I press "ok" and go back to the list, everything is working as intended. How can I add the "OK" part into the script?

    ReplyDelete
    Replies
    1. I figured out what was causing this behaviour. I was clearing the configured hierarchies and key filters and not updating it before adding the new fields. What I had to do instead was to first clear previous filters, then update the navigation settings, and then fetch a new $listNavSettings object, add the new filters, and call update again:
      first:
      $listNavSettings = [Microsoft.Office.DocumentManagement.MetadataNavigation.MetadataNavigationSettings]::GetMetadataNavigationSettings($list)
      $listNavSettings.ClearConfiguredHierarchies()
      $listNavSettings.ClearConfiguredKeyFilters()
      [Microsoft.Office.DocumentManagement.MetadataNavigation.MetadataNavigationSettings]::SetMetadataNavigationSettings($list, $listNavSettings, $true)
      $list.RootFolder.Update()

      $listNavSettings = [Microsoft.Office.DocumentManagement.MetadataNavigation.MetadataNavigationSettings]::GetMetadataNavigationSettings($list)
      $listNavSettings.AddConfiguredHierarchy($myField)
      $listNavSettings.AddConfiguredKeyFilter($myField)

      [Microsoft.Office.DocumentManagement.MetadataNavigation.MetadataNavigationSettings]::SetMetadataNavigationSettings($list, $listNavSettings, $true)
      $list.RootFolder.Update()

      Delete
    2. My previous post wasnt entierly true, after further investigation. In my case I had a different problem, where the key filters and hierarchies would flash for a fraction of a second and then dissapear. All the settings were correct, and even if I did the settings manually through the the sharepoint GUI, it still didnt work.

      So the problem was in the custom list view that the document library was using. Im not sure how or why, but inserting some markup fixed my problem, using this blog: http://tihomirignatov.blogspot.no/2010/08/how-to-use-metadata-navigation-in.html

      I noticed something interesting when investigating this too. The URL to the view (http://server/web/list/Forms/dokumenter.aspx?woid=1&NavIndex=1 &HideFolderView=true&RootFolder=/site/web/list/1/Dokumenter&Source=1) contains an argument "HideFolderView=true". If I manually changed said argument to "false" instead, then the key filters and hierarchies would show as expected. Just saying.

      Delete
  4. by: alat bantu sex termurah
    Hello sir, after I read the article you get to the bottom, It is very interesting to look at, it can provide benefits, and also the lessons, I really like it.
    so that I can remember with this master page and be back here, I leave a trail so that I could track my trail I have ever visit
    alat bantu sex pria
    alat bantu sex wanita
    I apologize if I trace unfavorable.

    ReplyDelete
  5. [url=http://www.yeezyboost-350.us.com][b]adidas yeezy boost 350[/b][/url]
    [url=http://www.coachfactory-outletonlines.us.com][b]coach outlet online[/b][/url]
    [url=http://www.moncler-outlet.us.com][b]moncler jackets[/b][/url]
    [url=http://www.adadasstansmith.com][b]stan smith adidas[/b][/url]
    [url=http://www.adidastrainersuk.org.uk][b]adidas uk[/b][/url]
    [url=http://www.tomsshoesoutlet.in.net][b]toms outlet[/b][/url]
    [url=http://www.pandoracharmssaleclearance.me.uk][b]pandora charms sale clearance[/b][/url]
    [url=http://www.michaelkorsoutletclearance.com.co][b]michael kors outlet clearance[/b][/url]
    [url=http://www.coachoutletstore-online.us.com][b]coach outlet store online[/b][/url]
    [url=http://www.abercrombieandfitch.in.net][b]bercrombie[/b][/url]
    0323shizhong

    ReplyDelete
  6. given article is very helpful and very useful for my admin, and pardon me permission to share articles here hopefully helped :

    Suplemen untuk mengatasi nafsu makan anak yang hilang
    Obat testis bengkak ampuh
    Cara menyembuhkan penyakit katup jantung

    ReplyDelete
  7. A declaring the particular estimate, You are investing buy regarding items from owner if you're the back again prospective buyer. You have read carefully and accepted the world shipping and delivery tool requisites frees in a totally new windowpane quite possibly bill. Significance costs before cited may very well be short sale change even ought to ones optimal buy quantity..

    Due to sending in Camisetas De Futbol Baratas some Coach Outlet Online Store bet, You are investing in buy this advice supplement from the owner if you're equipement foot the Maillot De Foot Pas Cher back again prospective buyer. resultados de futbol You read and accept to the world transporting show t's and c's starts up in a replacement window case npotentially loss. Transfer penalty service fees in the offered might be controlled Maglie Poco Prezzo by change circumstance you heighten you the highest level of wager helping..

    These volume entails pertinent practices jobs, Levy, Stock dfb trikot müller broker effectively payments. This is what level is be governed by change unless you want to make agreed paying. The local surf forecast in an european union part lay claim more significant usa, Significance calendario de futbol tax manuel neuer trikot rot to this own not maillot foot 2018 really recoverable.

    ReplyDelete
  8. I like your topic of selection for blog but want to suggest you for sharing some more information regarding your subject so that we can understand your thought more clearly
    hooda games

    ReplyDelete
  9. Check getting the money for exchanges should be possible effectively and naturally without a clerk through check liquidating machines. These machines are found in numerous areas, for example, comfort stores and banks and can frequently be gotten to 24 hours every day. car title loans online chicago

    ReplyDelete
  10. thank you information, very helpful, do not forget to visit also kunju our page to berai information about health
    obat kesrek di selangkangan
    Cara Mengobati Tukak Lambung
    cara menghilangkan budug
    Obat Luka Lebam

    ReplyDelete
  11. It is a time consuming process to locate a legitimate, high-quality designer Michael Kors Handbags On Sale at a decent price. One brand name that is sought after is the Michael Kors Bags On Sale. Anywhere you see high demand you will find people out to make a quick buck.

    ReplyDelete
  12. There are those who want to collect vintage items like Michael Kors Factory Outlet with genuine and high quality leathers from Michael Kors. To be able to grab a quality Michael Kors Bags Outlet item of your choice, make sure to be very careful in selecting what to buy, how to buy and where to buy the Michael Kors Outlet Online.

    ReplyDelete
  13. thank you very useful information admin, and pardon me permission to share articles here may help Cara menyembuhkan penyakit gondok

    ReplyDelete
  14. Numpang share Obat Nyeri Punggung and Obat Herpes thanks for permission and I hope this can be usefull for every one

    ReplyDelete
  15. Designer Exposure es un buen lugar para comprar su Bolsos Michael Kors original.
    The Woven Tote es también una selección impresionante en el Bolsos Michael Kors Baratos.
    Bolso de alta calidad que debe contemplar absolutamente un Bolsos Michael Kors Outlet.
    Du kommer att upptäcka en handfull detaljer som du kan förvänta dig att komma över på en vanlig Michael Kors Rea.
    Du kan hitta ett antal platser som ger Väska Michael Kors.
    Sortimentet är fantastiskt för alla som letar efter en MK Väska.
    Håll dina ögon öppna för den här säsongens val som kommer att presenteras under bara några månader och det kommer utan tvekan att bli spektakulärt.

    ReplyDelete