Mugo Web main content.

In-depth insights on content, code, and creativity

ONIX websites: your bibliographic data and the Mugo ONIX Bridge

In the world of books, book publishing and bookselling, the metadata exchange format “ONIX” is the preeminent method of communicating information about a book. In spite of the fact that ONIX is a rather flawed standard and protocol for exchanging bibliographic information, it is the standard which everyone has settled on. Mugo has been working with ONIX since 2003, first building a freely available ONIX management system as a proof of concept for the Centre for Canadian Studies in Publishing at Simon Fraser University and most recently building a turn-key system for an ONIX website - that is - an ONIX powered website.

LEARN MORE

Why and how to start contributing to an enterprise open source CMS community

Open source communities rely very strongly on the community to advance the software in question. eZ Publish adds the "enterprise" part to "enterprise open source content management system" by not only targeting larger enterprises but by also adding a company vendor -- eZ Systems -- behind the software. This helps spur development forward on a consistent pace. However, there is still immense value in having the implementation partner companies contribute their code and insights. Contributing back might not be a natural thing for the partner companies to do; if you're such a partner company, here's why you should and how to do it.

LEARN MORE

5 essential communication tools for a web development company

As a web development company, we spend a lot of time deep in code, implementing solutions.  However, essential to our success is the proper use of additional administrative and communication tools to keep organized, to run smooth projects, and to interact with clients.  Skype, Dropbox, GitHub, and Google Apps are ubiquitous in the industry and embedded in our daily work.  An additional set of less obvious tools are also just as important to our work.

LEARN MORE

Running contests within a content management system to engage visitors

Rasmussen Reports runs a contest where visitors have to guess what an upcoming public opinion poll result will be.  Participants get points depending on how close they are to the actual result.  A new question is asked every week, making for a fun, recurring way for visitors to interact with site content. Here's how we developed the contest on top of an eZ Publish extension called eZ Survey.

LEARN MORE

eZ Publish websites for publishing companies

Over the years we've worked on many websites in the publishing industry. Each has a unique set of requirements and challenges, but we've been able to refine and re-use a set of tools and best practices. These make up what can be called a "publishing package" built on top of the eZ Publish framework.

LEARN MORE

Using a preview siteaccess as an eZ Publish content staging solution

Using eZ Publish's siteaccess system combined with hidden nodes, you can quickly create a flexible content staging solution.

LEARN MORE

10 ways to improve editors' lives in eZ Publish

Optimizing the editorial experience in a Content Management System is a continuously evolving task. The challenge is to make the CMS an enabling tool to help editors publish content as efficiently as possible. In many organizations, specific requirements at each publishing step can be complex and dynamic. Here are 10 built-in tricks, ways to extend the interfaces, and ready-made custom extensions to unleash the power of eZ Publish content management.

LEARN MORE

Splitting a Subversion repository into multiple repositories

Having multiple projects stored in one Subversion repository is a challenge if you want to move one of the projects to another repository. Also, over time, moves and deletions can bloat the size of your repository with obsolete, unused data. In this article, we will show you how to extract SVN projects to their own repositories, preserving full commit histories.

LEARN MORE

Making custom content scripts more efficient in eZ Publish

For those who write long-running scripts in eZ Publish to perform operations (move, rename, update, and so on) on many content objects, here are a couple of quick tips to speed up the scripts and make them more efficient.

LEARN MORE

Keeping URL clean aliases

I noticed a while ago on a client's website about Canadian books that some of the book nodes would have their url_alias broken and the url /content/view/full/<node_id> would be shown instead of the nice url. Running the updateniceurls.php would not solve the problem so I had a look at it and tried to see what could cause the problem and realized that the two tables ezcontentobject_tree (containing the node information) and ezurlalias_ml (containing the url_alias path parts) had different data for the same node.

LEARN MORE

Fixed positioning of page elements while scrolling

We recently implemented two different designs where the menu remained fixed to the edge of the screen as the user scrolled. One case involved vertical scrolling and the other involved horizontal scrolling. Each had a subtle challenge and both were fun to work on!

LEARN MORE

Site performance optimizations: a look back at Election 2012

4 years ago, in 2008, we first met what is now one of our longest ongoing clients, Rasmussen Reports. There was some stress and urgency to their problem, as their site was crashing leading up to the most important time of the year for them -- the US presidential elections. We managed to stabilize their site and imagined a time in the distant future: a less stressful 2012 election period! The month leading up to November 6, 2012 turned out to be a record-breaking traffic month for a couple of our clients, including Rasmussen Reports. This time around, we had no website hiccups during an election season that saw more than twice as many visits in the peak month and an almost 3-fold spike in pageviews from the previous major election's 1-day peak.

Here are some of the site performance best practices we implemented in advance of the 2012 elections.

LEARN MORE

Trading automatic failover for really good manual failover

A couple of months ago we made the decision to stop using mysql-mmm on one of our client sites. We had been burned by a couple of incidents where automatic failover had caused more problems than we had imagined it would solve. Data ended up being written to the wrong server a few times, causing a bit of a nightmare to merge the forked database after the fact. Although we had other concerns about mysql-mmm, a major factor in our decision was our assessment that in our specific case of assigning MySQL master-slave IP addresses, human-triggered manual failover was essentially as good as automatic failover, and carried much less unexpected risks.

LEARN MORE

eZ Publish vs Drupal, and the eZ community in the US and Canada

On Thursday, October 25 at 9am PT / 12pm ET, the eZ Publish Americas community will be hosting two presentations: an introduction to eZ Publish 5 and Symfony; and a comparison between eZ Publish and Drupal. This is the second episode of a regular presentation series, and one of several initiatives of the community.

LEARN MORE

Re-indexing specific pages and subtrees in eZ Publish

There a few cases when you want to trigger a re-index parts of your site; for example, you might make an existing attribute searchable or you might change some index boosting settings. However, default eZ Publish indexing tools only allow you to re-index the entire site. This is not particularly efficient if you have a very large site and/or if you're just trying to test a small change in your development environment. Here are a couple of tools that you can use to re-index specific parts of a site.

LEARN MORE

Adding cross-reference data to object relations

The object relations datatype is one of the most powerful datatypes in eZ Publish. In some cases, it is useful to associate data not to either of the objects involved in the relation, but to the relation itself. For example, you might want to mark a person as an author on one book, a contributor on another book, and an editor on another book, all while maintaining only one record for that author. Mugo has created an extension to add cross-reference data to object relations.

LEARN MORE

Weather widgets and API with Weather Underground

Many weather sites offer embeddable widgets to display weather forecasts on your website. However, if you want to customize the look of the widget, your options are usually quite limited. Weather Underground far surpasses the rest of the options by providing a JSON-based API so that you can use their data to build and style your own widgets.

LEARN MORE

Getting started with eZ Publish 5 and Symfony

Recently, eZ Systems announced that the next major version of eZ Publish will use the Symfony framework. Having heard good things about Symfony as a modern, robust web framework, I am pretty excited at the announcement, and have already dived in to the new eZ Publish 5 code.

LEARN MORE

How to create image aliases in eZ Publish using PHP

Image aliases are used in eZ Publish to define image sizes and other image variations. As an example, this allows for the editor to upload an image once and have it automatically formatted for a thumbnail display, a full size display, and more. By default, image alias files are automatically created whenever they are displayed in a template. However, you might have other use cases whereby you need to generate image alias files outside of the default scenario (for example, for an external site or feed).

LEARN MORE

Using Varnish to speed up eZ Publish websites

Varnish Cache is a powerful website caching system that dramatically increases your site's performance. It does so by sitting in front of your Apache, PHP, content management system, and database stack in order to cache your web pages and serve repeat requests. This saves the back-end stack from consuming unnecessary resources to generate the same pages over and over again. Mugo Web has implemented Varnish in front of eZ Publish for several client websites. Although every client has different needs, we've come up with an outline of tips and considerations that are common across most implementations.

LEARN MORE

Applying borders to eZ Publish images using ImageMagick

One of our clients recently needed to apply a custom frame / border to all images in a certain section of an eZ Publish site. One way to do this is to edit each image in Photoshop or GIMP, but this can be a time-intensive, manual process. Another is to use CSS, but this again takes time and is also more limited. A flexible and automated way to do this is to configure ImageMagick filters in an eZ Publish image alias. The required style would then be applied to all relevant images.

LEARN MORE

Twitter tip: Prompting users to follow you after they Tweet

There are many variations to social media strategies to suit particular client sites and goals. Some implementation details, on the other hand, are universally applicable. One such detail is a Twitter feature whereby a user is prompted to follow your Twitter account whenever they share your content.

LEARN MORE

Google Sitemaps for big sites: splitting the sitemap into multiple files

Sitemaps are an important element of search engine optimization (SEO), in order to provide search engines an accurate outline of what content exists on your site. One of our client sites recently outgrew Google's sitemap URL limit. Instead of removing content from the sitemap, we implemented a simple solution of using a sitemap index to reference multiple sitemap files.

LEARN MORE

eep case study: Author name resolution in The 49th Shelf

The problem:

One of our favourite projects, The 49th Shelf, aggregates a lot of data from a diversity of sources. Naturally, there is a range of quality; but even more than that: different sources often refer to the same physical object in different ways. Specifically, a person who writes several books can be referred to in a variety of ways:

  • John Reynolds
  • John L. Reynolds
  • John Lawrence Reynolds

There are some heuristics to resolve most of these cases, but there are always seem to be some that defy the code and require a manual fix.

This process has to be performed on the production site, so we want to minimize the amount of time that the data is inconsistent and we don't want to run untested code.

LEARN MORE