If you want to architect a functional and easy to maintain SharePoint logical architecture you're going to have to use multiple site collections, and even web applications.
Using multiple site collections is easy enough, but then you'll encounter navigation issues. There are a number of cross site navigation web parts, but I didn't like any of them.
Most inherit some for sitemap provider and require you to edit the layouts.sitemap... anyway I figured I could do better so I did, and I'm sharing it with you.
Web Application Navigator
- List based navigation.
- Multiple navigation list support.
- Menu or tree view.
- Security trimming.
- Display, or hide without deleting navigation item.
- Add the IIOS.SP.WebParts.Navigation.wsp to your farm solutions.
- Deploy the Solution to a Web Application.
- Enable the Feature in Site Collection.
- Add the web part to your master page or web part page.
- When you activate the Feature it will create a Navigation list in the root site, go to the Web Application and loop through all the Site Collections, and their Sites the user who is activating the feature
has access to (so probably a good idea for a Farm Admin to activate it) and save the URL, Position and Site name in the Navigation list.
- The Feature will create a Custom Action on the settings page under Look and Feel, so you can access the Navigation list
- And finally adds the web part definition to the web part gallery.
- All navigation links are stored in a Navigation list. Activating the feature will create one, but you can create more if required. The list implements a simple Parent> Child relationship to render
a hierarchy. You can have n level children. You can also add as many navigation links as required.
- The list contains the metadata to render the navigation. All the fields are self explanatory maybe with the exception of...
Position: This is the position the link will have in relation to it's siblings .
Display: This shows or hides the link.
Security Trim: If this is disabled, it won't check if the user has access to the site and will render the link regardless. This is useful if you want to give users access to a child site, but not the parent site.
- To render the navigation menu, you need to add the web part to a page, or a master page.
- Once the web part has 3 properties you can edit.
List Name: this is the name of the list that contains the Navigation items. If you create another list just enter the name here.
Display Tree: If enabled it will render the navigation as a tree. This is implemented with the help of
GTreeView by Per Gårdebrink with his permission.
Use Full Width: If you want the menu to cover the full width select this, otherwise it will only use the minimum required.
You have a web application with 10 Site Collections, these Site Collections have a combined 30 subsites.
You want to implement consistent navigation across all sites.
- Deploy the Solution to the web app.
- Activate the Feature on the root Site Collection of the web app.
- Modify all the Site Collection master pages by adding the web part in
or modify the SharePoint hive master page by adding the web part in
or add the web part in to a page.
- If you modified the master page/s, then the web part will be visible on all Site Collections, and there's no further action required.
If you added it to a page, then you'll need to export the web part definition and import it to every Site Collection web part Gallery.
- Q: What if I activate the feature in other Site Collections of the same web app?
A: The root Site Collection list will be ignored. The web part first tries to get the Navigation list from the current site, then works it's way to the root.
- Q: What happens when I deactivate the Feature?
A: It will delete the default Navigation list and remove the web part definition from the Gallery.
- Q: People see different links, why is that?
A: Because Security Trim is enabled on that link and the person does/doesn't have access.
- Q: Does it work on SharePoint 2013?
A: I've only done minimal testing, and it works except the Feature icon doesn't deploy properly, but you could copy it over manually. Also note that using this web part in 2013 isn't as necessary as 2010 because 2013 has MetaData Navigation.