Composr Tutorial: Drinking from the feature pool

Written by Chris Graham (ocProducts)
This tutorial will describe the thought processes required to successfully design a complex and personalised website using Composr, and an overview of what features are available.


The process

The ordinary process of creating a bespoke advanced website (rather than just a basic site of pages) goes along lines as follows:
  • brainstorm, interview and analyse, to determine what requirements there are for the website ('requirements capture')
  • design these features such that a coherent design of the website is constructed ('requirements analysis' / 'design')
  • implement the design ('implementation')
  • add content
Different people and teams operate slightly differently, and different development methodologies (such as 'the waterfall method', or 'extreme programming') dictate the process to be different, but generally, the basic process is similar.

Creating a Composr-based website is similar, but during the design phase it is very important to take into account that the system should be designed to make use of the features Composr already provides. This presents a huge economic reward, but also requires a special mode of thinking. During the phase, instead of thinking:
How can I coherently structure this, and what set of features will I end up needing for it?
you (or a designer working on your behalf) needs to be thinking:
What Composr feature best fits each of my needs?
This may seem an obvious approach but to do it you need to open your mind, setting aside preconceptions that you may have developed about things, so that you can start thinking about them in Composr terms instead. Often you will need to adapt your initial ideas so that they map better to what Composr can provide – not for the worse, but just to make your implementation easier.

An example

A client who wants a web system developing will often have a confused idea for what they want. The client cannot be blamed for this – they are not a trained systems analyst! Composr is therefore similar to any kind of systems engineering product – an experienced system analyst (or generally smart person) will need to refine down the idea prior to implementation.

Follows is an imaginery scenario, a brief provided by a client…

Client said

There should be a set of pages where from each you can download one of our products. The user should get a choice between the version packaged for engineers, and the version packaged for managers. Files should be available in both zipped-pdf and pdf format.

On face value, this looks like it would not fit into Composr's pre-existing features in a clean way (i.e. without just putting a load of attachments on to a page and manually maintaining it). However, with some careful thought, this could be reshaped to fit perfectly with features Composr provides…

Composr-solution analyst said

A download category tree should be provided as follows…
For engineers:
 <each product>
  <pdf download>
  <zipped-pdf download>
For managers:
 <each product>
  <pdf download>
  <zipped-pdf download>

It might not be exactly what was asked for, but it meets requirements and the client would likely be pleased to find that for "no extra cost" their products may have images shown on the download page, comments, and ratings: things that they might never have considered, but now love.

If this example was a bit more complex, and the download system was lacking, then improving the download system would likely still be substantially cheaper than writing a whole new module from-scratch.

Content types

Composr supports a number of "content types", managed mostly through the Content Management (CMS) zone.

Here are the main content types (your meat & potatoes of publishing)…

Label Codename Purpose Categorisation support Related concepts
Comcode pages comcode_pages Standalone web pages. Written in Comcode, which can include arbitrary HTML also. Effectively categorised by zones, in that a page (Comcode or otherwise) exists within a zone. Zones
News news Post news stories and articles, chronologically. Blogs is a specialisation of news (a blog is simply a news category owned by a member). Flat (news categories), multi-categorisation (via primary and secondary news categories). Blogs
Calendar calendar Organise events on a public calendar / private diary. Flat (event types).
Wiki+ wiki Encyclopaedia system, designed for taking public contributions. Like a wiki but a hybrid system that also supports tree-like structuring. Made up of pages, consisting of page text and/or posts. Node structure (Wiki+ pages), looks hierarchical but you may place child pages under multiple parent pages.
Downloads downloads A library of downloadable files. Can be used to provide documents, or any other organised structure of files for visitors to download. Hierarchical (download categories).
Galleries galleries Browsable galleries containing Images and Videos. Hierarchical (galleries).
Polls polls Post polls, often chronologically. Take in the views of your visitors via a simple voting mechanism. None.
Quizzes quiz Have tests, competitions, and surveys, consisting of multiple questions, with a variety of answer inputting methods. Visitors may fill the quizzes in and results get processed. None.
Catalogues catalogues Create custom content types with the fields you want. Various different ways to display them. Catalogues contain categories contain entries. A number of default catalogues are bundled as examples/plumbing, but may be deleted or changed. One of the default catalogues is used for online shopping. A choice of hierarchical or flat (catalogue categories). Shopping cart, Orders
Custom Using custom PHP code you can extend the system with new content types that fully integrate with all standard Composr features. Seriously consider this over inbuilt types or a catalogue if you want to do something custom that is fancy or expansive. Requires an experienced programmer. None.


Additionally, there are support features for content…

Label Codename Purpose Sub concepts
Comcode Composr's markup language for embellishing written content or aggregating features. Can also include HTML. Emoticons, Custom Comcode, Attachments, Blocks
Attachments Attachments let you easily embed files (images, videos, downloads, etc) within certain Comcode-supporting fields via direct upload.
File/Media Library filedump A file manager that lets you organise contributor files independently of any particular content type, building up a library. Maps directly to the uploads/filedump folder.
Members members Registered users. Custom Profile Fields, Usergroups, Usergroup Subscriptions, Welcome e-mails, Points
Authors authors The author of News / Downloads, manageable as an independent record that is not necessarily tied to a Member.
Metadata Content types allow specification of metadata, such as keywords (tags) and descriptions. This gets integrated with third-party web services, such as Facebook Open Graph.
Awards awards Content may be assigned awards, as a mechanism for drawing it out into predefined feature spots, and/or highlighting it within the awards archive, and/or to actually award the submitting member with Points.
Content Translation lang Translate content into multiple languages.
Custom Fields Attach custom fields to any of the main inbuilt content types (both categories and entries).
Feedback Accept ratings/trackbacks/comments by users on your content. Comments are stored on the forum. Rating, Trackbacks, Comments
Validation Determine whether content is live on the site or not.
Permissions Define category access ('view') permissions.
Aggregate content types Allow bulk creation of complex content structures involving multiple other content types.


Honourable mentions…

Label Codename Purpose Categorisation support Sub concepts
Forums forums Informal discussions between users. Forums are hierarchical and divided by grouping. Topics are in a sense a category for posts because they group them together. Forum groupings, Topics, Posts, Multi-moderations, Post Templates, Forum polls
Chatrooms chat Live chats between users. You can have multiple chatrooms.
Newsletters newsletter Send bulk e-mails to users. You can have multiple newsletters.
Menus menus Define your site navigation. You can have multiple menus.
Themes themes Overall site design is handled via Themes. You can have multiple themes. CSS, Templates, Theme Images
Banners banners Deliver advertisements (there is support for different kinds of advert code and media). You can have multiple banner types, to maintain separate spots/rotations of banners.
Usergroups groups Members are placed within usergroups, to help manage permissions, rank, and for general identity labelling. You can have multiple usergroups and organise them into rank ladders. Members may be in multiple usergroups (one primary, multiple secondary). Clubs
Contact forms staff_messaging Various blocks exist that let you place contact forms on your website. The messaging system provides a way for staff to coordinate to respond to enquiries. N/A
Support tickets tickets Support tickets are a step up from contact forms, allowing an ongoing conversation with members. There are multiple support ticket types.
Addons addons Most of the features of Composr are logically divided into addons, but everything installed is perfectly integrated. Addons shipped with Composr are called bundled addons, and some are core (i.e. can't be removed). Other addons (some official, some third-party) are non-bundled addons.
Zones zones Zones are subdirectories of your site, grouping pages together. N/A
Pages Your site consists of pages. There are different kinds of pages, including Comcode Pages (see above), and modules (for accessing the primary interfaces to the inbuilt content types). We don't call the deeper URLs for viewing individual content items "pages" (except for Comcode Pages), we call these screens. Effectively categorised by zones, in that a page exists within a zone.
Staff checklist The Admin Zone dashboard contains a checklist so that tasks may be centrally declared to the website staff. There is support for manual adding of tasks. Similarly, there are blocks on the dashboard for staff link sharing and competitor tracking. N/A


Performing common tasks in Composr

Placing articles

There are two ways to make an article:
  1. Add it as a news article, and allow users to access it via the news system (or provide a link to it yourself, on your menus for example)
  2. Add it as a new page

News articles are best used if you do not consider your article to be a long-term part of your website itself, but merely a long-term resource which is archived. You are in the driving seat, however, and you can add as many new pages as you wish, without having to have each linked to from your menu if you do not wish them to be.

You can create a new page and add it to your menus really easily by heading along to Content Management > Pages (Comcode Pages).

To add as a news article, head along to Content Management > News. Once added, it will appear in any news blocks you have (there is one on your front page, by default) and in the news archive. As mentioned, there is nothing stopping you adding a link to anything within Composr to your menus – you can just visit the resource, grab the URL that your browser displays for it, and edit one of your menus with the caption of your choice.

Making databases

There are a number of different features in Composr which can be used for database storage, manipulation and retrieval:
  • Catalogues allow you to define the fields for records, and then have these records and the manipulation and display thereof to be included as a first-class aspect of your website. Catalogues support hierarchical structuring of data.
  • Wiki+ is a wiki-like hierarchical database; it is much more powerful than a wiki however, as while it can behave as a free-form and open-access database navigated by embedded hyperlinks, it can also behave as a highly moderated and formal structured database.
  • The forum can actually be used very effectively as a database, if a formal structure and presentation is less important than an ability to rapidly manipulate free-form data in a comfortable and informal environment.
  • Comcode pages (static documents) may also be used, with each 'record' being created by creating a new page; consistent structure may be created using 'Custom Comcode tags'.
  • By integrating an existing system.

If you would like to create a formal catalogue, head over to Content Management > Catalogues.

If you'd like to add to Wiki+, you can choose it from your menus of your main website and begin to edit the tree structure to create new pages, and then edit them and post within them, as required. You should read the Wiki+ tutorial for more information.

If you desire integration of an existing system into your website and are not a developer yourself, professional developers are available for such work.

Adding images

There are four distinct ways for adding images in Composr:
  1. Images that are a part of the visual design of the website are 'theme images'. Extensive information on themeing is provided in a number of Composr tutorials.
  2. Images that are presented as a part of some other type of content, such as a press release (a news article), or a forum post, are done using attachments. A user-friendly interface for choosing attachments is provided on the actual add screens for these types of content.
  3. Images that are presented in galleries.
  4. Images that are uploaded manually and referenced in Comcode using the img tag

If you are wishing to add an image to a gallery, head over to Content Management > Galleries. The gallery system supports a tree structure of galleries, or you may simply add things to the root of the tree making them show right-away when the user visits the 'Galleries' link (which is on one of your website menus by default).

Adding files

There are two distinct ways of making downloadable files (as opposed to online articles) available to users in Composr:
  1. You may add the file as an attachment to some other content, such as a press release (news article). This is performed on the 'add' screen for any content that supports them.
  2. By adding it to the download system.

To add to the download system, head over to Content Management > Downloads. The download system supports a tree structure of download categories, or you may simply add things to the root of the tree, making them show right-away when the user visits the 'Downloads' link (which is on one of your website menus by default).

See also


Feedback

Please rate this tutorial:

Have a suggestion? Report an issue on the tracker.