Archive for December, 2008

Apple takes banner ads to the next level

Friday, December 12th, 2008
Yahoo apple ad

Yahoo apple ad

I can’t say I’m thrilled about the idea of banner ads taking an increasing level of control over website structure itself to suit the needs of the advertiser, but the new Apple ad on Yahoo! Games is definitely cool. When the ad starts playing, the Yahoo! header is actually incorporated into the animation. I personally haven’t seen this done before, and I’m hesitant to say it’s something I’d like to see more of, but I thought it was worth mentioning since it certainly raises the bar in terms of what advertisers can do with the web.

Initial Thoughts on the Magento E-Commerce Platform

Thursday, December 4th, 2008

This past week, we have been working to integrate Magento as a shopping cart and complete E-commerce solution for two of our clients. This is our foray into the world of Magento, after having used CS-Cart for E-commerce deployments in the past.

Magento Demo Store

I chose to go with Magento this time around for several reasons. First, after browsing the documentation, a little bit of the code, and the administrative backend, it was immediately apparent that the software architecture of Magento is superb. It’s written on PHP and built on an MVC framework, and here at Context we always strive to work with as much Model View Controller code as possible. However, proper software design alone isn’t enough to push me toward a given product. To maintain our time frames and ensure that our clients receive a deliverable that can offer ROI as quickly as possible, any third party products we implement also need to have good documentation and an easy to use administrative interface, especially since we’re going to be training clients on how to use the system once the site is ready for deployment. Finally, one of the projects called for very specific custom layout design, and I felt that Magento had the most robust templating system of its competitors.  Since all of my initial criteria were met, I decided it was time to move forward.

The installation itself is as easy as it can be, though you need to make sure that your PHP and mySQL versions are somewhat recent (PHP 5.2+ and mySQL 4.20+). We were able to get Magento up and running on both our local Windows XP environments and our staging server, which is currently running FreeBSD 6 without any headache.

Magento Admin Panel

Magento Admin Panel

As I mentioned above, Magento has a very robust templating system. However, this templating system is what’s probably going to cause the biggest learning curve for your development team. I won’t go into too much detail, but in order to provide extreme levels of customization without hacking up the code with if/else blocks or switch statements, Magento uses xml based layout definitions (or “blocks”) that apply dynamic data (e.g. products, categories, etc) to “skeleton” PHP templates that mainly consist of placeholders for the blocks. It will be a little confusing at first, but it’s worth getting over the learning curve since the extensibility is almost limitless.

Magento also offers a nice built-in CMS, though we chose to deploy Magento to a subdirectory beneath our already content-managed sites, one being written in ExpressionEngine, the other being a custom Fuse-based CMS we built ourselves. We integrated each one differently in order to product the same result. For the Fuse-based CMS, we were able to include the Fuse bootstrap and templating engine in Magento’s PHP-based template files, giving us full access to Fuse functionality from within Magento. ExpressionEngine didn’t play as well with Magento directly due to naming conflicts and such, so we chose to use jQuery to load content from individual ExpressionEngine files (e.g. the header and footer) via AJAX. Each is working well so far.

At this point, we’re about a week into these Magento projects, and things are going well. Acquainting ourselves with the template system definitely caused some head scratching and foul language at first, but I think we have a good handle on it at this point. I know Steve, one of our developers, is having an image uploading issue in his local environment that he hasn’t pinned down, but image uploading is working fine on the development server. I’m looking forward to the launch and hoping that Magento delivers as well as I expect it to.

Which CMS is Best?

Monday, December 1st, 2008

It was once the case that a staple of any web developer’s job was to provide ongoing content updates for their clients. However, in a “web 2.0″ world of ever expanding, dynamic content, this model has become obsolete and often unsustainable. Developers’ time is best spent developing, not performing data entry and copy editing tasks.

Enter the content management system, or CMS. The increasing popularity of scripting languages such as PHP, ASP, and ColdFusion made it easy for even novice developers to deliver database-driven sites, and we saw the birth of an infinite number of custom content editing solutions, from simple and quick to robust and involved. Custom CMS development is still a very common (and sometimes appropriate) approach to dynamic content, but several excellent solutions have emerged that can prevent you from having to re-invent the wheel every time you need to deliver a CMS solution to a client. I will discuss 4 popular CMS products in this post, all of which are either free or very reasonably priced. There are, of course, a number of expensive commercial solutions that target niche enterprise markets, but I’m going to use this post to discuss systems that can be implemented on a budget while still providing the features and functionality to build a robust site. Hopefully this article will help you in choosing a content management system that will best suit your project.

Expression Engine

http://www.expressionengine.com

Cost: $249.95
Pros: inuitive back-end interface for easy content editing
Cons: templating system is a bit more development intensive than some others

When I talk about ExpressionEngine, I always first disclaim that I am not affiliated with its development or parent company, Ellislab, in any way. The reason for this disclaimer is that my description of EE can sometimes sound like a sales pitch – I just happen to personally like it and find it to be quite intuitive. With that being said, let’s continue:

ExpressionEngine has become my CMS of choice for sites that have a newspaper or magazine feel. It seems to lend itself to these sorts of projects extremely well, especially since the back-end interface is extremely intuitive and is therefore easy to teach to a diverse staff of writers, editors, or other content-creating personnel. It, of course, has the staples of a good CMS – pages (called weblogs), categories, user management, and customizable templates. From a development standpoint, the templates are configured very much like views in a model-view-controller architecture, where you have separate templates for each page that contain specialized markup tags. These markup tags are used to pull content from the database, and your surrounding HTML and CSS provide the look and feel. Personally, I like this approach, but it can be a little bit more development-intensive than some of its counterparts (e.g. Drupal, where everything is organized into blocks). The documentation and support for EE is also excellent, so the learning curve for their custom template system is very easily overcome.

One EE feature that I absolutely love is the ability to assign custom fields on a per-content type  basis, which means that the editor for a media entry can look very different from the editor for a news item, since they will very likely have different fields. Again, this gives a very intuitive feel to the administrative interface, which is a necessity if multiple people of varying computer skill will be editing content.

Overall, I would recommend EE for use in content-managed sites of a low to medium complexity and, as mentioned above, it works especially well for magazine or news sites.

WordPress

http://www.wordpress.com

Cost: Free
Pros: Free, easy install
Cons: Typically functions more as a blogging tool than a CMS

Let’s face it, WordPress is a staple of the blogging community at this point. It’s free, it’s simple to install and use, and it’s customizable. In fact, it’s so customizable that it has long since blurred the line between blogging tool and full-blown content management system.

The blog you’re reading right now is a Wordpress blog, and you can see that I’ve fully integrated  it with the Fuse PHP MVC Framework that drives the rest of our site. WordPress uses straight PHP as its templating engine, so it’s easy to start customizing right away, even with only an intermediate knowledge of PHP. Personally, I’m more a fan of tag-based templating engines like the one in EE, but can definitely appreciate arguments for the more direct approach of using the scripting language itself (e.g. PHP) as the templating engine.

WordPress has a slick and easy interface, though the custom field options do leave a lot to be desired when compared to ExpressionEngine’s implementation. However, it’s not unlikely that a plugin or extension can take care of that issue, either now or sometime in the future. All of the CMS products discussed in this entry have a modular, scalable architecture, and especially in the case of WP, Drupal, and Joomla, there is a seemingly never ending supply of add-ons that can help adapt the solution to your specific needs.

As a blogging tool, WordPress is top notch. Personally, I would probably pass it over in favor of one of the other solutions discussed here when looking for a fully functional CMS platform, but many complex Wordpress-based sites have emerged, proving that WordPress is extensible enough to hold its own as a CMS solution.

Drupal

http://www.drupal.org

Cost: Free
Pros: Extremely versatile and extensible
Cons: A little trickier to configure than other systems discussed

Out of the box, the default Drupal install doesn’t look too impressive. However, in this case, looks are very deceiving. The extensibility of Drupal is seemingly limitless, and the API is well documented. This combination ensures that you can customize the system to suit your specific needs. The beauty part? It’s likely that you won’t even have to build your own extensions, because so many free modules are widely available and easy to install.

It’s important to note that everything in Drupal is done via a module, even functionality that you might expect to be part of the base install. This is why, as I mentioned above, the default install appears to be a bit lackluster. However, modules are extremely easy to find and install, and many of them are included (although disabled) by default. I recommend starting with at least these modules: Blog, PHP Filter (allows you to write PHP in your blocks), and Taxonomy (categoriztion of content).

For CMS-driven sites that will require an increasingly complex integration, Drupal is the way to go. Its extensibility and huge development community make it the winner when dealing with projects that fall outside the standard boundaries of a normal content-managed site. As an example, we had a client approach us about an Intranet CMS for their company, but they also stipulated that the solution needed to authenticate against their existing Windows Active Directory. Additionally, they had other, separate web-based applications already in place and wanted those applications and the CMS to use a single sign on system. The solution we came up with was an implementation of Drupal and CAS. While the other CMS solutions discussed here support LDAP (Active Directory) authentication, Drupal is the only one with an existing CAS module.

Joomla!

http://www.joomla.org

Cost: Free
Pros: well supported, extensible, clean interface
Cons: lacks granular user permissions

I have to admit that Joomla is the system discussed in this post that I personally have the least amount of experience with. Although I tested it as a candidate for one of our projects, it ended up losing to Drupal because of its lack of granular user permissions. Like Drupal, Joomla is open source, well documented, and has a vast array of available extensions. Joomla’s templating system is block-based and configurable through XML and PHP, not unlike the E-Commerce solution Magento, which I will be discussing in another post. This style of template building is very extensible, but will be a bit of a learning experience for most designers.

The Joomla administrative section is very slick, and I personally prefer its terminology over even ExpressionEngine’s – Joomla refers to “sections” and “pages” rather than “weblogs” and “templates”. Dropdown menus and intuitive navigation icons provide a very pleasant user experience, and the feel overall is very non-threatening, but still very robust.

As I mentioned above, I was forced to use Drupal over Joomla on one project because Joomla’s user permissions aren’t granular – there are preset groups that all users have to be fit into. Now, most of the time, this will not be a problem, especially if only a small handful of people will be editing content. However, in a large organization, finely grained control over user permissions is essential. I understand that Joomla 1.6 has made granular permissions a priority, and a stable 1.6 is very much on the horizon.

Conclusion

Hopefully I’ve given a concise but useful overview of some of the more popular CMS products on the market. My mantra is always that you should use the best tool for your specific job, and each of these systems deserves consideration depending on the needs of the CMS project. I didn’t get into detail on specific features because you can get complete feature comparisons at the fantastic site CMS Matrix.

Please feel free to comment with any questions. Thanks!