When Written: Feb 2012
There are lots of different ways of building web sites these days. When I first started out you wrote HTML files directly to a local web server and if it all looked and worked fine you uploaded these files to the live web server. Later scripting languages appeared and made this need for a staging server all the more necessary to test your code. Links between pages and menus were, and still often are, hand coded with the ever present danger of a broken link. If the client wanted a change to their web site they would inform you of the changes: if you were lucky these changes were given to you in electronic form but more often it was in the form of a phone call, and you would implement them as soon as you could. As web sites became a more important part of a business’s overall strategy the need for the client to update it themselves became more desirable, it also meant that web houses could support a larger number of clients as they were not busy making small changes to web pages. But giving an inexperienced user a copy of something like Dreamweaver was a recipe for disaster.Broken links, huge graphics, random fonts were just the start of the mess that was often made and that was just what the professionals managed to achieve! Much better would be a controlled method of entering content, with menus being automatically handled, images resized according to previous settings and only a limited number of HTML tags available.
Enter the Content Management System ( CMS ). CMSs are a combination of a database containing the content and the page settings with active web pages generating the visible web pages. Most of the popular CMSs have been built by the Open Source Community using PHP with MySQL and many commercial web houses have built their own versions based on these. Whilst some may see this way of building web sites as being a ‘sausage machine’ where you turn the handle and out comes yet another unremarkable web site, which in some cases can be true, but it doesn’t have to be. But for a site with a lot of changing content like the PcPro web site it is the best solution, it would be impossible for a group of people to maintain such sites without the help of a CMS backend. For a small business who just wants a ‘place holder’ business card type of site then it is a bit of an overkill, and in fact in this case what is probably wanted is a web site which has a larger design element to it so that it stands out from its competitors and building these in the more traditional way is a better solution it also means that implementing new effects and technology is much easier as you don’t need to worry about the effect of such changes on the other modules of the CMS. Almost all the big ISPs offer a ‘build your own’ web site package and these use a customised version of a CMS to allow the user to do this. They also offer hosting of various CMS which can be installed with a single click so the route to getting started is an easy one but like most things with technology this is where the fun starts.
Whilst most of my work is building custom web based applications using Microsoft technologies, a while ago my company had to quote for a content management system for a new client and it was also decided that this should become the new standard within our company for all such sites and so a lot of thought and testing was put into the task of deciding which one to choose. It was decided that the main criteria would be performance, flexibility and ease of use for the end users when updating the site themselves. We spent some time looking at the .NET solutions available and whilst Umbraco (http://umbraco.com ) has its charms, there were issues between versions and the modules and the support via the forums seemed limited. The other big player in the admittedly small arena of .NET Content Management Solution is Kentico (http://www.kentico.com ) , which is amazingly flexible but there were two major issues we felt made it unsuitable. One was that it was incredibly complex in its structure and seemed to be moving towards the large enterprise document management scene, and we felt that the more complexity with a web application and its associated database structure the more of a performance issue there could be. The second major issue was its cost, the basic licence being $1999. Whilst it is true that there is a free version for partners to develop web sites with, it was felt that with any client it would not be long before they asked for a feature that was in the next version up and so we would have to charge them at least this amount for what might seem to them a small feature. In this current economic climate anything that puts you at a disadvantage when bidding for a job is probably not the way to go.
Talking to our existing clients, they were also wary of using a CMS that they hadn’t heard of and so we decided to take a long hard look at the likes of Joomla, Drupal, and of course Word Press. Joomla we had built sites with in the past, but discovered that clients found it confusing to use. Word Press I find great for Blog type of sites and whilst of course you can get it to do amazing things, what we wanted was more a basic framework where we could add functionality dependant on our client’s needs. Performance is also an issue and reading through the many forums and blogs it seemed that Drupal (https://drupal.org ) was highly thought of in this area. I understand that our readers will have other, very justified views on this and you can argue the point for ever, much as you can spin the question of the best car to buy over many evenings at the pub. It often in the end depends on a ‘gut feeling’, if you yourself like a particular product then it is going to be much easier to sell it to your clients. I felt that Drupal’s administration front end was clear and concise, also it didn’t log you out every few minutes like some which was a bonus!
Drupal CMS – a steep learning curve perhaps but worth it
The major criticism of Drupal is the very steep learning curve because of it being a basic framework to which you have to add modules before it does anything By default it even doesn’t have a WYSIWIG editor for entering content to start with and things like this can put off the casual viewer. It does however mean that you can choose your favourite editor and install that, although in my experience they all have their strong and weak points.
So the time came to set up and test out an install of Drupal. Before you even start thinking about going live with a CMS it critical to have a local copy of it so that you can test out modules and settings before making them live on the web site. Rather than going through the whole process of configuring web servers, databases and server scripting languages it makes sense to use one of the pre-rolled configurations. If you are running a Windows desktop then normally one of the easiest way of doing this is to use the normally excellent Microsoft Web Installer or via the free Microsoft WebMatrix. I say ‘normally’ as this time I could not get the Drupal package to work correctly on two machines, one of which was a fairly clean Windows installation. The other reason with giving up on this way of configuring Drupal is that I have found that whilst with packages like Drupal, Word Press and Joomla you can run these under Windows with IIS and MSSQL or Linux with Apache and MySQL the level of support running these under Microsoft technologies is considerably weaker than running on Linux. If like us you decide that the best route is to go the Linux route, your hosting will also be cheaper. To use Linux this way you don’t need to grow a beard and wear sandals but as you will later need to do some ‘HTML hair dressing’ a pony tail might be a useful fashion accessory ! When you come to hosting your Drupal site, most web houses will use the hosting provided by an ISP rather than configuring their own server and so the Operating System is not really an issue, but it makes sense to use the same OS on your development box as your live server in case of any strange compatibility issues. The easiest way to get a local Linux box up and running on your Windows desktop is to use a virtual machine that is pre-configured for your purpose.
Bitnami stacks are pre-roll virtual machines to make life easy
I found the free Bitnami range (http://bitnami.org/stacks ) particularly useful for this, as it will run in the free VMWare player (http://www.vmware.com/products/player ). This will provide you with a complete Linux machine preconfigured with MySQL and Drupal for you to get cracking. You will need to do some basic editing of a few text files to get FTP access running after which you can access and edit any other files via an FTP client like Filezilla (http://filezilla-project.org ) and Notepad++ (http://notepad-plus-plus.org ) . You will need to Notepad++ or similar rather than the Windows supplied version of Notepad as this will not handle the end of line breaks in UNIX style text files correctly. With this pre-rolled Drupal configuration there is a version of Drupal with the core modules pre-installed so it will at least do something, but you will very quickly find yourself wanting to install more modules to add extra functionality. The current version of Drupal is seven and the installation process of modules has been made extremely easy. Via a web page you point to a previously downloaded module archive file (http://drupal.org/project/modules ) Once the module has installed you can then enable it via the web interface and configure it as well, no command line stuff or wrestling with Unix’s vi text editor. Version seven has a different database schema to previous versions and so it is important to make sure you download the correct version of any module you use. The online help I found to be excellent with most of my questions answered on the official Drupal site with little need to delve through endless lesser forums. It would, however, be wrong to say that the process was without its frustrations. My first site took about two weeks to get it to a level that we were happy with, but the next site which had an ecommerce element took just two days to get it to a stage good enough to show the client!
Like many CMS the content is structured into content types, these are things like ‘articles’ ‘stories’ ‘blogs’ and ‘books’ plus any you wish to add. This decides what can be entered by the client and the basic format of how it will be displayed. Where it will be displayed on the site is decided by ‘Blocks’. Normally your content will be displayed in the ‘content’ area but you can have multiple versions of this which display the content in different formats on different areas. A ‘page’ is known as a ‘node’ and its look is decided by the Blocks and the Content Types. The final look of the site is decided by the template. Menus are generated automatically but can be customised of course. For your client to edit the content they need to login to the site but one pet hate I have is to have a login form on a publically visible page. If you are not allowing the public to login, why have a visible page to tempt them? Much better is to have a specific URL you can give to your client, and this is easy to achieve in Drupal.
When developing a non-CMS based web site it is usual to work on the design first and then add the content afterwards. However, with a CMS it is often better to add the content and get familiar with the structure of the data that you will need to work with and then add the design later. But before showing it to the client it is a good idea to have a reasonable looking design because otherwise all the feedback you will get back is on the failings of the design and how the colours are wrong etc. Getting clients to understand this is often an issue, but coming up with a design and the following tweaks can be extremely time consuming.
Artiseer, and good way to get started with a design
One useful route is to use the rather excellent Artiseer program (http://www.artisteer.com ) . The neat feature with this is not only its vast amount of designs but that the effect of any changes are shown immediately in its preview, so you can literally sit with a client and show them what the site will look like with curved boxes, graduated fills or any other of the hundreds of ‘tweaks’ that you can apply. Obviously there is no substitute for a well-crafted style sheet by a gifted designer, but not all projects have that sort of budget. Artiseer is a chargeable product although you can try it out for free but to build Drupal templates with it you will need to pay for the ‘standard’ version at $ 129.95 rather than the ‘home’ version at $49.95. But should you go this route, then to create your Drupal template all you need to do is click the export button and an archive file with all the necessary PHP and CSS files as well as the graphics to implement your design is created. You can also add changes to the style sheet yourself from within the options screen of the export button so that any further tweaks can be made. Once you have this template file then applying it is a similar process to that of installing a module, and you can easily switch between installed templates.
Drupal’s admin interface is simple and clean
Obviously one of the great assets of a CMS is that you can allow the client to update their own site, but this does mean that you no longer have a local copy that is up to date. This means that backing up the live server is even more important than with a site where you maintain the content on a development server and upload it to the live one. Again Drupal makes this easy with a module. The module that should be on your list of must haves is the ‘Backup and Migrate’. With this you can backup both the database and any custom files to either a folder on the server or via FTP to anther box altogether. Need an ecommerce solution with full order tracking and multiple payment providers? Then Ubercart (http://www.ubercart.org ) is a pretty good choice although it does lack proper stock control, an omission that is being worked upon. An alternative solution might be the newly developed Drupal Commerce module (http://www.drupalcommerce.org ) which offers this but it currently has issues in that strangely, entering products has to be done in two places apparently because of the extremely flexible framework that it brings to an ecommerce solution, something that will get fixed I’m sure.
Picture galleries are a breeze since all that is required is for the images to be uploaded into a folder and Drupal automatically resizes them into a cache folder for display, which means you can leave such things to an inexperienced user to do in the safe knowledge that the site will not be brought to its knees trying to display enormous images. The number of supported modules is staggering, the key word here being supported as that is one of the arguments I have heard said against some of the CMSs, the last thing you need is a module that breaks something and that can’t be removed. Of course should such a thing happen, it would have been noticed on your development system first wouldn’t it? You did set one up didn’t you, like I suggested? And of course you have those backups which you have tested beforehand haven’t you ? Whilst I would be foolish to suggest that Drupal is the answer to all the problems of building web sites it is far from that, it certainly brings with it a pile of its own issues but once you get your head around the concepts of Drupal it really is quite easy to use the latest version has laid a lot of the previous horrors to rest.
Article by: Mark Newton
Published in: Mark Newton