After evaluating the various CMS systems (Drupal, Joomla, DotNetNuke, Orchard as well as WordPress and MediaWiki), I chose Drupal. Install was very fast (thanks to the web platform installer). Unfortunately, the version in the platform installer is from January, and although the update works well manually, there is an error when trying to update the sql database.
I spent the next 10 hours creating a Drupal site mock. Drupal is in version 7, new, but stable and apparently a significant improvement over version 6 in terms of the underlying build. Unfortunately, without backward compatability, the large number of themes and modules for 6 are unavailable to me.
I chose Danland from about 10 choices. I like the built in slideshow on the main page as well as the drop down menus. However, I’m not a designer and my page looks very home grown. Still, I am using this as a mock and so the overall built-in-my-garage look is ok.
To get my ideas together, I used the main menu with sub-menus to put together a future site map. I created several pages to set-up how the content would look. The process was relatively fast for basic creation. Drupal developers have included several links on each admin page to get to editable content, menus… After a few hours, navigation was fairly easy.
Adding content is simple, but there is no built in wysiwyg editor (unlike version 6) and installing a custom one seemed arduous. I decided just to code the html myself, which I’d prefer anyway. However, the whole reason for using a CMS is to allow multiple authors without expectation of html knowledge, so this will need a solution in the future. The wordpress editor is fantastic by comparison (but then again, I am only entering plain text here anyway).
I created a new content type which included an image at the top and called this Book. Unfortunately, the sql server script in php kept failing when trying to upload a file on these pages. I did not continue to use the image module. Instead, I used the img html tag inside the content pane. Setting relative src URL was actually very tricky and I never got this to work. I had to call a full URL on my server. Also, to use the img tag, I had to set the content type to Full Html.
I was impressed with expandability. The Danland theme (and I expect other themes) has included ways to sub-customize the overall site by including your own css and js. However, frequently I want to customize one page (or in Drupal, a node) or try out an idea without changing an entire site’s css. For this I would typically use a css style section at the top of the html page or include a js file just for that page. I wanted to create a simple image map in css, but could not figure out how to do this without access to a header section (and in a cms site that is not readily available).
This is when I discovered that there is another content type in Drupal, that is off by default: PHP. Caveat: I know nothing of php (asp.net is more home turf – at least from a coding, c# perspective). By enabling the php module, suddenly, PHP appeared as a content type. Then I could use the “<php” tag inside the content area, which in turn allows for the inclusion of css and js files, OR inlining the actual css or js code. Fantastic – basically I could work inside of the content area, and now had full access to a header section. If I knew PHP, I could of course code additional PHP here as well.
Overall, for about 15-20 hours of work (~40% of that time in choosing a CMS), I was pleased with the result. However, generating a working, stable, professional, easily maintained site would require some knowledgable help: a Drupal designer and a Drupal admin person.
Although CMS seems to be a standard practice, I still prefer complete control of a site. My fpnotebook site is generated from a raw database with a home grown WPF/c# program I wrote – the output is html. For a more dynamic site, I really like asp.net MVC (especially with Razor functionality). For either of these, many generic css solutions are already available, and there is no significant over-head, increased load times, pieces to break…