Croogo and Bolt

Delightfully Light CMS

Looking for lightweight alternatives to established CMS? Croogo and Bolt might be right up your alley.

When it comes to picking a content management system (CMS) for your next blog or website, WordPress seems like an obvious choice. After all, it's a powerful and flexible engine with dozens of nifty plugins and hundreds of high-quality themes. This doesn't mean, though, that other open source CMSs don't deserve some consideration. Take Croogo and Bolt, for example. These lightweight applications offer all the essential features you would expect from a decent CMS wrapped in a user-friendly and slick interface. Add to this a simple installation procedure, low learning curve, and easy maintenance, and you are looking at rather compelling alternatives to WordPress – or other established CMSs for that matter.

Croogo

As a typical web application, Croogo runs on top of the standard stack consisting of Apache (preferably with mod_rewrite enabled), PHP 5.2, and MySQL 4.1. Thanks to a user-friendly web installer, Croogo can be deployed in a matter of minutes. Grab the latest release of the application from the project's website [1], unpack the downloaded archive, rename the resulting directory croogo, and move it to the root directory of your server.

Before you proceed, you have to set up a MySQL database for use with Croogo. You can do this using either a command-line MySQL management tool or a web-based utility like Adminer [2]. Once you've done that, point the browser to http://<IPaddress>/croogo (using the IP address or domain name of your server) to kick in the web installer. If the installer detects problems with the setup, it conveniently lists them, and you need to fix them before you can proceed (Figure 1).

The rest of the installation procedure is rather straightforward. Just provide the required MySQL connection info and create an administrator account, and you're done. After the installer has finished its job, you can log in to Croogo's administration interface by navigating to http://<IPaddress>/croogo/admin/.

Before you start pouring content into Croogo, you should stop by the Settings section to configure the site's settings. In the Site subsection, you can give your blog a name and a tagline, as well as specify your email address and time zone. To make it easier for search engines to index your site, you should provide keywords and a description in the Meta section. Here, you can also specify the ROBOTS meta tag. The default index, follow configuration ensures that search engines will index your entire site, but you can change that by specifying other values (the article on metatags.info [3] provides a good primer on using the ROBOTS meta tag).

To fight comment spam, Croogo relies on the Akismet [4] and reCAPTCHA [5] services (Figure 2), which can be enabled and configured in the Service section. Note that you do need to create accounts with both services and obtain the required key first.

Figure 2: Croogo supports the Akismet and reCAPTCHA services.

If you plan to use Croogo in a multi-user environment, you should also populate the application with users and define their roles and permissions. To do this, switch to the Users section. To add a new user or edit an existing one, jump to the Users subsection, then press the New User button to add a new user. From the Role drop-down list, select the desired role, give the user a name, and provide the user info. Next, hit the Save button to add the user and return to the Users subsection. To assign a password to the created user, click the Edit icon next to the user, press the Reset Password button, and specify a password.

By default, Croogo offers three roles from which to choose: Admin (administrator with full access to the site), Registered (registered and logged-in user), and Public (a guest user). The application also allows you to define other roles, if needed. To create a new role, switch to the Users | Roles subsection, hit New Role, and give the role a name and alias. Under the Parent Role tab, select one of the existing roles to apply its permissions to the role you are about to create.

Croogo features a flexible permissions system that lets you configure privileges for each role. To edit permissions, switch to the Permissions subsection. Here, you can tweak permissions for a specific Croogo module. For example, to modify permissions for the Comments module, click on the Comments item in the list of modules, then click again on the Comments sub-item. You should then see a table of all available actions (Figure 3). To toggle a certain action for the specific role, click on the appropriate icon.

Figure 3: Croogo allows you to specify granular permissions for each role.

Croogo's default site layout features the right sidebar containing several sections, such as Search, Categories, Recent Posts, and so on. These sections are called "blocks" in Croogo, and you can customize them in the Blocks part of the administration interface (Figure 4). Here, you can rearrange the blocks as well as edit and rename them.

The final stop is the Menus section. Menus in Croogo are basically collections of links. The Blogroll menu, for example, contains links to other blogs, whereas the Main Menu holds navigation links. You can manage menus in the Menus subsection. To create a new menu, use the dedicated button in the subsection. All menus appear as separate items in the Menus section, and to edit a specific menu, just click on the appropriate item; then, you can manage the existing links and add new ones.

With all the configuration and customization tasks sorted out, you are ready to populate Croogo with content. All content-related features in Croogo's administration interface are tucked under the Content section. The List subsection displays all existing content items, and Create lets you add new content (Figure 5). Croogo distinguishes between three different types of content: blog posts, pages, and nodes. The latter is used for content that can't be easily categorized as a blog post or page.

Figure 5: Working with content in Croogo's editing interface.

Naturally, Croogo makes it possible to define additional content types. The application also supports so-called taxonomy, or a way to categorize content for better management, and all taxonomy-related tasks in Croogo are done in the Taxonomy subsection. The key element of Croogo's taxonomy is a vocabulary, or a collection of terms. The application comes with two default vocabularies – Categories and Tags – and each of them can contain multiple terms. For example, you can add all the tags you want to the Tags dictionary and specify the desired categories for your blog posts in the Categories vocabulary. Taxonomy can seem a bit confusing at the beginning, but with time it can prove its worth by helping you to keep tabs on the content.

Adding a new blog post or page (or any other content type for that matter) in Croogo is as easy as it gets. In the Content section, choose Create followed by the desired content type. For each blog post or page, you can specify access rights, enable or disable comments, and assign terms like categories and tags. To publish the created article, tick the Published checkbox and then enable the Promoted to front page option, if you want to make the item sticky.

Bolt

At first sight, Bolt [6] looks quite similar to Croogo, but the former differs from the latter in a number of ways. For starters, Bolt supports several database back ends, including SQLite, MySQL, and Postgres. By default, the app uses SQLite, which simplifies the installation procedure. Connect to your server via SSH, switch to the server's root, create the bolt directory, and run the following commands:

That's all there is to it. Now you can just point your browser to http://<IPaddress>/bolt (use the IP address or domain name of your own server) and create a new user account, and you will be dropped automatically into the Dashboard section. The Settings menu in the main toolbar provides access to commands for configuring and managing Bolt. All commands in the menu are organized into the Configuration, Maintenance, File Management, and Translations groups.

The Users command in the Configuration group can be used to add and manage users, whereas the Configuration command lets you modify Bolt's settings by editing the config.yml configuration file (Figure 6). All parameters in the file contain brief descriptions, so you shouldn't have problems configuring them. At the very least, you should change the sitename and payoff (i.e., tagline) parameters.

Figure 6: Configuring Bolt is done by editing options in the config.yml file.

Similar to Croogo, Bolt supports different content types, and the application comes with three default types: Entry, Page, and Kitchensink. Of course, you can define custom content types by choosing the Settings | Contenttypes command. Defining content types in Bolt is done by editing the contenttypes.yml file. Defining content types by hand requires some technical skills, but the Bolt project provides documentation that covers this and other key topics [7].

Bolt comes bundled with several extensions that add some useful features, such as generating RSS feeds, embedding forms, integrating the Disqus commenting system (Figure 7), enabling support for Google Analytics, and so on. Because none of these plugins are activated by default, you need to enable the modules you want. To do this, choose the Configuration command from the Settings menu and specify the enabled_extensions array containing the desired extensions in the config.yml file:

Figure 7: Bolt comes with several handy extensions.

enabled_extensions: [ RSSFeed, GoogleAnalytics ]

Once you've done that, choose Settings | Extensions and use the Edit config button next to each extension to configure its settings. For example, if you enabled Google Analytics, you have to provide your unique webproperty-id key, email address, password, and other required values.

Although tweaking Bolt requires some expertise, you don't need any special skills to publish and manage content. The Dashboard section prominently features three buttons for creating entries, pages, and kitchensink items. A drop-down menu next to each existing entry offers several useful commands that you can use to change the item's status, delete, and duplicate the entry. The latter can be particularly useful for creating content based on previous entries. The editing interface shouldn't cause any head-scratching either: All features here are self-explanatory, and the Info buttons next to several options can come in handy when you are stuck (Figure 8).

Figure 8: Bolt's editing interface offers all the necessary tools for working with content.

Final Word

Both Croogo and Bolt are viable alternatives to established content management systems. These two applications may not enjoy the same popularity and developer support, but they are capable enough to handle most content management scenarios: from a simple single-user blog to a more advanced multiuser publishing platform.

Both applications have advantages and shortcomings. Croogo's focus on ease of use makes it ideal for non-technical users but also puts limits on customization. At the present time, Croogo doesn't have a lot of themes or plugins to choose from, so you are pretty much stuck with the default theme and functionality (unless you have the technical chops to design your own theme and plugins). Bolt, in turn, favors a less user-friendly, but more flexible, text-based configuration. On the plus side, the application is extremely easy to install, and it comes with several useful plugins.

Dmitri Popov

Dmitri Popov has been writing exclusively about Linux and open source software for many years, and his articles have appeared in Danish, British, US, German, Spanish, and Russian magazines and websites. Dmitri is an amateur photographer, and he writes about open source photography tools on his Scribbles and Snaps blog at http://scribblesandsnaps.com.

The PHP-based Drupal framework makes dynamic websites simple. The modular system is extensible using free modules and the appearance is template-driven. In this article, we will be delving into Drupal’s range of functions and discussing installation and basic configuration.