Grouptree is a partner focused company supporting design agencies and web development firms in the delivery of fully featured easy to manage web sites.
home > Partners > Partner guides > HTML development guide

Guide to developing HTML for the Grouptree CMS

Overview

Although the Grouptree CMS is designed to be very flexible there are some methods of developing HTML for websites that will ensure implementation, content management and future maintenance goes as smoothly as possible.

Intended audience

HTML developers that are cutting HTML for sites. Implementers that are integrating the HTML into the CMS. 

Prerequisites

A good understanding of HTML and CSS.

Overall methodology

The Grouptree CMS is optimised for use with DIV and CSS based layouts. Navigation content and layout should be controlled by the CSS. When CSS is disabled the page should display in a logical order for accessibility applications such as text readers. This methodology also ensures that changes are easier to implement and affect the site globally.

Ideally classes should not be applied to the HTML dynamically using javascript 'on document ready' however use of DHTML for interactive elements is acceptable.

Dynamic content considerations

The HTML that is designed may look great with a fixed amount of content. Don't forget that the users of the CMS will be adding varying amounts of content into your templates. Templates should be tested with small and large amounts of content. Titles and navigation should be tested with long and short strings.

This is particularly important in:

  • Any navigation element or list
  • Limited width or height content boxes or content areas
  • Grids or lists
  • Titles
  • Breadcrumbs or paths

 

A good example, that we encounter often, of content size considerations are email addresses. Email addresses are a single string and therefore do not wrap. It is common practice to put email addresses in contact detail boxes on a page. Often the sample templates have an example email such as bob@grouptree.com which is a relatively short email address. On many occasions we find the real life email addresses do not fit into the design and changes have to be made.

Navigation

Navigation scenarios and paths need to be carefully considered and tested with extremely long page titles in order to see any wrapping issues that may occur.

Typically navigation areas should be executed using unordered lists and in the case of hierarchical navigation nested unordered lists. Visual differences in selected or highlighted items in the navigation should be performed by classes or a unique ID on the selected elements. Rollovers should also be achieved using classes or Ids rather than DHTML.

Paragraphs and Headings

  • Avoid applying widths to paragraphs and headings
  • Dont collapse paragraphs - either leave them as default or set your own. Do net set them to 0.

Paths to resources

Assets such as images, documents, scripts and css should be relative and proceeded with the '/' which denotes the root of the site, for example <img src="/images/myimage.gif" />". Ideally you should not use ../../ to move up directories to assets. This includes references from other files such as XML and Flash applications.

Styling editable areas

Styling the editable areas of a site is a sensitive issue. In an ideal implementation the user should not have to consider which classes to apply to an element. They should be able to achieve what they need using Header tags (<h1>,<h2> and so on) tags and paras (<p>). This also enforces consistency throughout the site.

Example 1 - (DO NOT DO THIS)
The below example, while valid is not the best way of implementing user editable content.
 CSS

p.intro { font-size: 14px; }
p.bodycopy { font-size: 12px; }

HTML

[editable area starts]
<p class="intro">Intro content...</p>
<p class="bodycopy">Body copy content...</p>
[editable area ends]

 

 

Example 2 - (USING DIVS)
We therefore recommend you employ CSS inheritance
 CSS

div.intro p { font-size: 14px; }
div.bodycopy p { font-size: 12px; }

HTML

<div class="intro">
[editable area starts]
<p>Intro content...</p>
[editable area ends]
</div>

<div class="bodycopy">
[editable area starts]
<p>Body copy content...</p>
[editable area ends]
</div>

 

Example 3 - (USING Headers)
formating using headers and paras correctly in one edit area is more flexible for the CMS editor
 CSS

div.mainContent h1  { font-size: 16px; }
div.mainContent h2 { font-size: 14px; }
div.mainContent p { font-size: 12px; }

HTML

<div class="mainContent">
[editable area starts]
<h1 class="intro">Header...</h1>
<h2>Intro copy...</h2>
<p>Body copy...</p>
[editable area ends]
</div>

 

Other details

  • Avoid using classes or ID's on the body tag; target the outer most wrapper instead.
  • Avoid widths on inline elements, instead use block elements to constrain inline elements. This improves the editing experience.
  • Avoid using classes or ID's within the content areas (editable by user)
  • Please validate all HTML to the Transitional XHTML Standard.

 

SIFR

If SIFR is to be used please use it sparingly. It affects page load time and often causes pages to jump around as they load. Ensure that the HTML will work well without the SIFR and try to make sure the HTML uses the same amount of vertical and/or horizontal page as the rendered SIFR, this will prevent the page jumping around like crazy as it loads, which at best is ugly and at worst ruins usability of the site.