Customize Your Managing News

Blog

Estimated
7 min read

In Eric’s announcement last month, he emphasized that Managing News is both a product and a platform. In this post, I’ll explain what this means in concrete terms and how Managing News can be highly customized or used to build something other than a news aggregator. This post assumes some Drupal site building experience and at times some Drupal coding experience. But even if you’re new to Drupal, it will give you a useful glimpse of what’s possible with Managing News.

Modular architecture

The package that you can download at ManagingNews.com is the fourth iteration of Managing News. This time we paid special attention to keeping it simple and modular. Managing News consists of Drupal core plus about 20 contrib modules, four custom modules, five Features, and a design that is split into a base theme (Tao) with the actual theme on top of it (Jake).

Features

We have written extensively about Features in the past. If you are new to the concept, the quick explanation is that features are special modules that contain configurations for other modules. Use cases of Features are typically higher-level than those of modules. One example would be an “Event section” feature, consisting of configuration for the Calendar and the Date module. Features can be turned on and off just like any other module, and they have full access to the Drupal API.

You can see all the features in Managing News by going to the Admin section (link on the top left when you’re logged in) and clicking on “Features”:

fb316ba60117  0Dv81KTUWaT5LDheg

We can see five features on this page: MN Core is the base feature. Most importantly, it contains the configuration for aggregation functionality. MN Search provides the search page and the configuration for saving searches and highlighting them on the front page. MN Channels offers a way of collecting single news items into custom lists that can be printed or distributed via RSS. MN About is a very simple about section that basically contains a book node and a menu item. Finally MN World contains the configuration for geo tagging map displays.

These features contain mostly configuration and modifications to default behaviors — the actual functionality they expose live in the underlying modules. Take, for instance, MN World. Geo tagging is done by the Extractor module, map displays are rendered by the OpenLayers module, and the maps themselves come from MapBox.

Every feature can be turned on and off by using the checkbox. For instance, let’s say I decide that my installation does not need About pages or Channels. All I need to do is check off “MN About” and “MN Channels” and save, and then all functionality pertaining to these Features will be disabled. Note how the menu items disappear:

fb316ba60117  06D4nAKl3fFr8 Y8E

The nice thing about features is that they cleanly capture the functionality of a logical portion of a Drupal application. If you’re thinking about adding functionality to Managing News, I encourage you to do this on the features level.

Customizing the look

Out of the box, Managing News’ Jake theme allows for customization of the background image, the logo, and the base colors of the theme (Drupal core’s color module at work), and of course the site title can be changed just like on any other Drupal site. Here is a look at the Theme settings in the admin section of a Managing News site with custom colors and name:

fb316ba60117  0iwxzKI9hJ teZ3l

So you care more about your block than the World?

The default map settings in Managing News assume that the data in Managing News is of global scope:

fb316ba60117  0M38R bDBTkxLcu X

The geo term extractor looks for countries and major cities, and the maps used in Managing News are world maps. But you can change this. Just go to “Import locations” in the Admin section to import your own location file:

fb316ba60117  0ZXifi8pUmlzPJlw

If you would like to change the actual map being used in Managing News, check out Using MapBox tiles in Managing News on MapBox.com. This will be a good resource for you even if the maps that you’ll use won’t come from MapBox.

Store additional data

In some cases, you may find the need to store additional data with every aggregated item. Managing News uses the Feeds and Data modules to aggregate and store feed content. These modules allow for a flexible mapping and allocation of storage space for feed elements. Here is a screenshot showing how one would add the author field to the set of aggregated fields:

fb316ba60117  09IVMLJsb3rtDHwpc

Once the author field is added, it can be displayed using the Views module:

fb316ba60117  0c1OfguoHRZMvBtAY

After adding the author field to jake/templates/mn-feeditem.tpl.php, this is how it displays on the front page:

fb316ba60117  0t6M8v9jTsRzGA6f8

Performance

We configured the aggregator in Managing News to be easy-going, rather than fast-going and eating up your server resources. Depending on the number and activity of the feeds being aggregated, this configuration may turn out to not be aggressive enough. You can tweak the number of feeds imported per cron run by increasing feedsschedulenum to more than the default number of five:

`// In your settings.php file.
// The number of feeds to be aggregated per cron run.
$conf['feeds_schedule_num'] = 10;`

If you do that, keep an eye on on admin/reports/dblog to make sure that Feeds Scheduler does not exceed the PHP max execution time nor the time between scheduled cron runs:

fb316ba60117  01iJ ClO2hyf6iRi9

For cases with many feeds and very active feeds, or when it is critical to have the system as current as possible, we have back ported the excellent Drupal Queue work that chx and others have contributed to Drupal 7. Drupal Queue essentially allows for parallel feed importing. Take a look at Drupal Queue’s README.txt for instructions on how to set it up.

Examples

At Development Seed, we use Managing News as both a product and a platform. We deploy a series of out-of-the-box Managing News instances via Aegir. Here is a screenshot of one that we have turned on for the Knight Foundation, who partly sponsored the development of Managing News. It is a good example of “Managing News as a product:”

fb316ba60117  074MyphmPAwXMkmvr

During the past couple of weeks, our team has been working with the National Democratic Institute on a project to visualize results from the recent Afghan election. We used Managing News as the base for a site that shows voting results in Afghanistan down to the ballot level. This site is a good example for “Managing News as a platform”. Here is a screenshot of the site that is yet to be launched:

fb316ba60117  0o5f3uaacTNK2l92b

From a technical standpoint, the most interesting aspect of this site is that it doesn’t aggregate news at all. The data is imported from CSV format once, and the main mode of viewing data is via maps and tables. Still, Managing News proved to be a worthwhile starting point for this build, as core configurations of Managing News could be reused. On both the Knight instance of Managing News and the Afghanistan election website, Feeds, Data, OpenLayers, Tao and Search play together in a similar way.

Modularity makes it possible

Taking a very modular approach with Drupal modules, themes, and Features results in a Managing News application that makes sense both as a product and as a platform. Further, keeping Managing News specific configurations and UI separate in Features and themes allows us to focus the underlying modules on their general use cases. This has the double advantage that these modules have a potentially larger contributor base while, at the same time, they are more flexible for ever-changing use cases.

This post is based on Managing News version 1.0 beta 6

What we're doing.

Latest