The most annoying issue with Joomla!, despite the admirable efforts of many people involved with the project, is its tendancy to output crappy HTML. Even still, at least one of the default themes uses tables for layout, and last time I checked the RSS feeds that it spat out wouldn’t validate.
But the biggest problem is not with the core. A little bit of hacking can get around that. The bigger problem is the poorly coded extensions (plugins, components, modules). Running a website off an open-source CMS means you almost invariably are going to need to rely on 3rd party extensions, and there’s nothing inherently wrong with that.
What’s wrong is the shoddy state of Joomla’s extension landscape. Credit to the extension authors is of course due more than blame, as they’re working (generally) for free, out of goodwill. But having to re-work over the HTML generated by pretty much each and every extension–whether it’s removing tables used for layout, getting rid of deprecated elements and attributes, or just fixing plain old errors–gets tedious quickly. People should know better than to just throw
<style> tags into the middle of a document. I shouldn’t be seeing
<td align="center"> anywere.
Congrats to the SilverStripe folks for setting a new record for amount of traffic served by a SilverStripe-powered website.
I imagine they’ve fixed the issue now though, so if you’re a developer and looking for alternatives to Joomla!/Drupal, check out SilverStripe.
At work, we’re planning a website redesign. Okay, less of a redesign and more of a realignment. Our current site has been around since 2004 and though it is still serving us fairly well (four years isn’t a bad lifespan for a website of this kind), we’re beginning to outgrow it, as our research agenda is both shifting and adopting a more prominent role, and as our organizational structure is also in transition.
At the same time, there are the more common complaints that tend to prompt talk of redesign: getting sick of the stock photos, moving from a bunch of Dreamweaver-edited static XHTML pages to a CMS, leveraging some better metadata systems and content linking logic for a lot of older but still very relevant content, adding e-commerce capability, etc.
So, as part of the process towards creating some consultant RFPs and/or strategy documents, we’ve been doing some exploration into the world of content management systems. Though I think we’ve had the inkling from the start that we were going to go with Drupal, it’s been worthwhile looking into some other options and seeing what people have to say about CMSs in general. Particularly interesting has been looking back at articles on CMSs from three, four and even five years ago and seeing what’s stayed the same and what’s changed.
Continue reading “Content Management Systems – a look back in time”
In the first two “wordpress as CMS” posts, I discussed the benefits of WordPress as compared with other free, open source CMSs and how to take advantage of recent WordPress improvements when using it as a CMS. In this installation, I’ll go into detail regarding a few plugins that are a “must” if you want to use WordPress as a CMS.
But first a word about plugin security. Unfortunately, WordPress plugins have a bit of a reputation for being insecure, due largely though not exclusively to the lack of proper sanitation of user input. Neglecting to check whether a user has entered malicious code into an input field into a form, for example, or tacked it onto the end of a query string can leave your server vulnerable to SQL injection and similar attacks. With that in mind, it’s prudent to check around for any security issues with a plugin before you install. If you have the PHP skills, you perhaps check the plugin yourself for any code that might leave your system open to being compromised.
But that aside, there are many secure and well-tested WordPress plugins, as well as many (perhaps most?) that do not introduce any user-interaction features beyond the WordPress core and thus aren’t even really candidates for opening up additional security holes. The following is a list of just a few.
Continue reading “Using WordPress as a CMS – Part 3”
A principle of good software design is to balance the demand for new features with the necessity to maintain a high level of usability, and one sign of good software is that the interface remains uncluttered and intuitive as new functionality is added. For an example of how to do this the wrong way, look no further than Microsoft Word, which with each new release becomes more bloated and crammed with features that most people not only will never use but could never find out about even if they wanted to use them.
For examples of how to do this the right way, you could point to the web apps done by 37signals (e.g. Backpack), or to WordPress. Over the years, WordPress has continued to grow and to integrate new features, but has done a fairly good job of not allowing them to clutter core functionality. Following good usability principles like progressive disclosure means newbie users can jump right in and do what they want, while you don’t alienate advanced users by babying them with an impoverished interface.
A quick Google search for the terms “wordpress cms” reveals a plethora results, and the WordPress developers are aware that many people are using WordPress for much more than out of the box blogging. With that in mind, they continue to roll out functionality that makes it easier to use the platform as a content management system that can accomplish most of what you would want from your CMS.
Some of these features that you will find useful if not crucial to using WordPress as a CMS include:
- the option to set a static or fixed homepage
Prior to WordPress 2.1, you had to either hack around and create and upload a new homepage, or use a WordPress plugin to accomplish the same thing in a slightly more graceful way. Now, setting up a static homepage is as simple as going to the Settings > Reading panel and making the choice there. For more information, see Creating a Static Front Page
- custom fields
custom fields allow you to associate information with a post that goes beyond the parameters given to you by WordPress. Suppose, for instance, that you’re creating a WordPress site in which certain products for sale will be entered into the database as posts. Well, you’re going to want to store a bunch of particular information that will be associated with each product/post, including cost, availability, shipping, sizes, and so on.
Using custom fields, you would type in a new key (say, “availability”) and then under the value, you would enter either “available” or “sold”. Then, when editing say, single.php (the wordpress template for single posts) you would access the data like so, from within the Loop:
<?php echo get_post_meta($post->ID, 'availability', true); ?>If you wanted to make this data available outside of the Loop (e.g., in your sidebar), you would just type
<?php global $availability; $availability = get_post_meta($post->ID, 'availability', true); ?>And then in sidebar.php, you would include
<?php global $availability; echo $availability; ?>
- page order
Wordpress has only recently added the ability to define the order of your page manually, rather than using the options WordPress provides for wp_list_pages(), which are to sort by alphabetical order, or to sort by id. Though the functionality is new (and still a bit “janky” according to WordPress), it’s nice to know you won’t have to rely on third party plugins for such standard CMS features
In the next installment, I’ll discuss a couple more essential pieces for using WordPress as a CMS, including page templates, and also go further into third party plugins.
For those searching for a free, feature-rich and easily-extensible Content Management System (CMS), WordPress is not to be overlooked. Not only is there a growing “literature” of blog posts and tutorials on how to use WordPress as a CMS, but the core developers seem to recognize WordPress’s suitability for this role and are continually providing further enhancements that make it easier to use WordPress in this way. And if there is some CMS-like functionality you need from WordPress but can’t get it with a plain ol’ vanilla install, there is a wealth of well-coded and reliable plugins among which you are likely to find a solution.
One powerful reason to make wordpress your CMS of choice is its ease of use. While Joomla!, Drupal and the like are all excellent CMSs, none of them prioritize simplicity to the same degree that WordPress does. This isn’t as much of a criticism as it sounds like–there is an inevitable trade-off between the available features and power of a piece of software and its out-of-the-box, so-easy-your-dog-could-do-it usability. WordPress is a platform for the unwashed blogging masses, while Joomla! and Drupal are fully-fledged CMSs that compare favourably with any enterprise-level solution you’d pay thousands of dollars for. Each understands its user-base and its niche and guides software development accordingly.
But in addition to being suitable for the masses, WordPress is a great choice if you’re doing a website for a client who either is a) not as comfortable with new technology; or b) has little time and is someone for whom the need to learn how to navigate a complicated CMS admin panel will be a significant barrier to actually using it. You can easily teach someone the WordPress “basics and then some” in an hour, which means satisfaction both for the client and for you (imagine all the support email questions you *won’t* be getting!).
That’s it for the first part of this mini-series. In the next post, I’ll dig in to some more technical issues and look at how recent advancements in the WordPress platform are increasingly making it a viable CMS solution.