If you want to understand why branding SharePoint is a challenge, try to rebrand the out of the box SharePoint Blog Site Template. One of the most basic site templates you’ll want to use in SharePoint Online has its origins back in SharePoint 2003 and the site template structure hasn’t really changed since SharePoint 2007!
Understanding the Blog Site Template Structure
As mentioned above, the Blog Site Template is based on legacy paradigms and patterns. If you edit the page, you can see the structure of the blog site components:
- The default.aspx page can be edited, but you cannot change its page layout. The default one is a 3 column page layout.
- Blog Archives, Blog Tools and Blog Notifications are web parts.
- Categories and Posts are both List Views that have been heavily customized through XSL files. In the SharePoint 2007 world, these files are installed at the farm level and aren’t accessible from SharePoint designer or the master page gallery. I haven’t figured out where these files are in SharePoint Online (since you have no access to the farm).
- The links in the blog post list view link to another page called Post.aspx. This is what displays a single post and allows you to add comments. The view of the blog posts is rendered using an XSL file called blog.xsl.
- In addition, there are pages for other views such as All Posts, Archive, By Author, Calendar, and My Posts. Each of these views actually use the same XSL file (“main.xsl”)
How Branding Works in SharePoint Publishing Sites
In order to rebrand any page in SharePoint, you effectively have 3 options available to you:
Our preferred approach is the first option because it avoids introducing custom master pages (which are not recommended within Microsoft SharePoint Online). Using a custom page layout you can inject CSS or JS files as you need both in the header and in the body and you can restructure your layout so that it uses a modern HTML framework.
Challenges with Branding the Blog Site Template
Using the branding approach used for generic publishing pages won’t work with the Blog Site Template.
The blog site template’s default page looks like a regular page, but it’s actually a system page that is not easily accessible for customization. You cannot change the default.aspx page layout = if you go and edit the page the page layout is disabled even if the publishing features are turned on.
You could create a new publishing page within the blog site template and add the list views and the web parts onto the page and make that new page the default page. However, when an end user clicks on a link the user is directed to to Post.aspx and this is also not governed by page layouts either. So our preferred option of using Page Layouts and injecting our own custom branding isn’t available.
Branding Option #1: Applying a New Master Page
You could use a new master page and apply it to your blog site. This is not a recommended approach especially with Office 365 because it means you have now disinherited from any future changes that could come from Microsoft in the standard master page.
More importantly, If you try to apply a master page to your blog site, you quickly figure out that the blog pages aren’t actually publishing pages – they are system view pages. This means that you can change the master page but you’ll have to change the System Master Page, not just the Site Master Page.
This is feasible, but will have the unintended impact of changing the user interface of all your settings pages. Here is an example where I created a minimal master page and added a basic header to the body.
This works but the same layout will be used for pages such as your site settings page:
Option #2: Create Your Own Publishing Page
Here is an example of a custom blog home page.
This page uses a different page layout and I have re-arranged the web parts on the page. The view of blog posts is the summary view of the list which is what is used in the default.aspx page.
The challenge is the existing blog web parts and views still direct the user to other view pages. For example, if you add the blog archive web part it goes to a Date.aspx page to show you a list of blog posts for a particular month (why you would need entirely new ASPX page to do this is beyond me).
As well, you’ll start to notice subtle limitations due to the quality of the HTML in the views – there are a lot of tables, fixed widths and other challenges in the HTML structure that will make branding these views a challenge.
Option #3: Create Your Own User Interface
However, the blog site template has a fair number of function points out of the box that if you need them will take some significant investment to roll your own. Some of the key functions provided by the out of the box template include:
- Displaying comments
- Emailing a link of the post
- Liking and Unliking a post
- Adding new comments to a post
- Filtering by category and by date
Option #4: Use the New Blog Template
Microsoft recently unveiled a new blogging template built into the Office 365 user profile. It provides a more modern user interface, is somewhat responsive and mobile friendly, etc. However, this blog is attached to you as an individual which isn’t always what you want for a corporate blog.
In addition, it provides ZERO support for branding – you cannot even change the fonts or the colors. This template is even more limiting from a corporate messaging perspective than the blog site template.
Is Branding Worth the Trouble?
Many developers and Microsoft themselves either implicitly or explicitly say to not bother with branding and just use the product as is. Microsoft themselves have issued statements like this that push customers to question why branding is worth the trouble.
The blog site template is a very good example of why branding continues to be a challenge and yet why it is a necessity. What corporate communications intranet doesn’t want a blog for the CEO and would they want the out of the box, ten year old, non responsive, non branded template? And yet, the basic approaches even recommended by Microsoft as modern, safe approaches to customizations don’t work for the blog site template because it was built on old paradigms and has never been updated.