LibrarySites.Banner

CREATE CONTENT DURING DEVELOPMENT? NO THANK YOU, I USE BRANCHES!

I have joined Sitecore on March 2014 after working for 10 years at a Sitecore’s partner, where my experience on developing comes from. I’ve spent almost all last year training partners or customers all around the word and one of the first things I teach during training is that a developer should not create content during developments, basically this is a content manager’s job. 

Customers often ask for help from developers to create content, sometimes because of the challenging deadlines, but creation of content is not an activity related to the development. To create content on development environments and then deploy to all environments (Test, QA and production) has some negative implications:
  • It has strong impacts on the deployment process (to deploy content one must consider not only changes of the developers but also the content manager changes)
  • Sometimes changes are made directly in the content rather than in the default values (standard value, token, insert option, workflow, default layout and component)

For this reason during the training I always remember that “creating content is not part of the development process”! I recall the training experience in Cluj, Romenia with Techromix (where I’ve shared all the Sitecore recommended practices to the excellent group of developers.

You can read the full press release about the training here and my main advice below: 

  • Template: create templates for basic pages (including metadata functionality, navigation), Folders, Content and use inheritance!
  • Standard Value: create default values (text, Images …) and use token
  • Layout: minimize the number of Layout (usually 1 per device) and use placeholder and components defined as standard value. Below an example of a basic layout in MVC:

<!DOCTYPE html>
<html>
@Html.Partial("~/Views/Rendering/Base/Head/Head.cshtml")
<body>
    @Html.Partial("~/Views/Rendering/Base/BasePage/Header.cshtml")
    @Html.Sitecore().Placeholder("main")
    @Html.Partial("~/Views/Rendering/Base/BasePage/Footer.cshtml")
    @Html.Partial("~/Views/Rendering/Base/Head/Script.cshtml")
</body>
</html>
  • Insert Option: define the insert option only for content that the content manager can create
  • Branch: create a branch with the default structure of your site

In my opinion the use of the branch is essential to be sure you have the right approach with Sitecore! The branch is the default structure of your website and contains an example of how tokens, placeholder, components, datasource and layout are used. If everything has been "designed" properly your website will be created in just one click! (you can download a good example of implementation here, it is a Base Sitecore MVC project on Sitecore 8!). If you have followed this simple recommended practice, content manager and designers are ready to create content or change the layout of the pages on their own and marketers can define marketing strategy on the components, without asking help from developers. This is the reason your customers choose Sitecore, right?

  • Hi, My question is not related to this topic, but i need to create a nested menu in sitecore 8.0,  i don't want to use the site structure because i can have external url and the content manager can move menus around , is there a datatype/ data field type that works like the archetype in umbraco    our.umbraco.org/.../    Basicly a dataype that allows you to define nested fields and the user can create nested items of this on a template . Thanks