In-depth insights on content, code, and creativity
Approval workflows of various types are required across the web. Whether for legal review, cross-channel media review, or purely editorial review, approval workflows are essential to define and support content publication. Based on our experience with clients in many industries, Mugo Web has developed an eZ Market extension eZ Collaboration Workflow to be a complete workflow solution.
For many media sites, news changes fast, and the timely updating of content is key. Landing pages are the main information funnel, and it is important for editors to be able to update the content shown on landing pages as easily as possible. Where relevant, content should also update itself. The Rasmussen Reports Election 2012 page is one such example, where we've empowered editors to make content and layout changes in a graphical user interface, without having to contact a web developer. In this article, we will show you how various areas of the Election 2012 page are updated using the eZ Flow extension for eZ Publish.
Mugo has a tool that we use internally to help with the main aspects of a developer's life: development, debugging and maintenance. The tool is called "eep", short for "Ease eZ Publish". It's a command line tool which provides many functions and allows for accomplishing tasks quickly by integrating with tools like awk, grep and xargs for powerful one-liners and supports rapid development of powerful bash scripts by leveraging eep as a library of eZ Publish specific operations.
By default, 2 instances of eZ Find can not run at the same IP address because eZ Find and Solr communicate with each other via an IP port. This becomes an issue if you happen to run a staging instance on the same server as a production instance, or on your local dev machine where there are many sites running.
A nice solution makes use of the symlinking trick for managing platform-specific versions of settings files I recently documented.
A common feature need on eZ Publish installations is to have more specific validation on Text Line attributes: if you want to force a field to be in a valid postal code format for example, you have to write a specific datatype for it, or you have to override a template to perform client-side validation only. The Mugo Validated String extension provides a framework around a "Text line (validated)" datatype, where the validation method can be selected via a dropdown list, and developers can quickly create new validation types with a few lines of code. In this post, we explain the extension, as well as how we ported the feature to be used with eZ Survey via the Mugo Survey Addons extension.
Since the beginning of 2012, for one of our clients with a big news website, we recognized a drastic increase in website traffic without an accompanying increase in ad impressions. Under normal conditions, an increase in traffic would be a positive sign; however, in this case it was caused by end user software that turned normal web users into aggressive web crawlers. This essentially created an accidental but consistent distributed DoS (denial of service) attack.
Here, we explain how we identified the cause and mitigated its effects.
Recently, we built a map interface for The 49th Shelf's Read Local: The 100-Mile Book Diet website project using the Google Maps API. The website is an online book community focused on Canadian books. Users can visit the map section to find Canadian books by geographic location, and they can also pin books on the map, selecting locations that are meaningful to the books in some way.
Allowing anybody to participate in the evolution of the Read Local map means that we have to pay particular attention to the "Add a Book" user experience. If the user experience is intuitive and pleasant, people will be much more willing (and able) to pin a book and help make the map more useful and fun. On the other hand, a confusing interface can hamper the accuracy of the pin data (in the case where books are pinned in the wrong location) and turn people off from participating.
Here's a look at two main considerations regarding user interface design and optimization in the "Add a Book" workflow.
In almost every project we have a small number of settings files that have important differences on the production host versus development or staging hosts. This problem is made serious when the settings are in your version control system.
The resolution is trivial: Create a version of each file for each context that needs to be customized, eg site.ini.append.php_PRODUCTION, put this in SVN, and create a symlink with the name that eZ Publish is looking for.
Extensibility in eZ Publish is key, down to its object edit interface. This post explains a couple of the lesser documented edit features that you can extend: using browse mode in a custom datatype, and using a custom edit handler to add an edit action.
If you've ever had a hard time finding content objects of certain classes in your eZ Publish installation, you might write one-off PHP scripts or worse, dive directly into the database. This is often the case on unfamiliar sites (where you get lost in the content tree) and/or sites that have a large number of content objects. Mugo Content Class Manager is a simple but powerful extension that displays content objects grouped by their content class.
A common task in website search engine optimization is to set up Google Webmaster Tools and go through its HTML suggestions. Many of the suggestions center around duplicate content -- pages at different URLs but that have the same HTML title, meta description, body content, and more. This post summarizes a couple of common duplicate content scenarios within an eZ Publish site, and how to solve them.
Many hosting companies will take care of file system and database backups for you. We have a few clients where we have file system backups configured, but database backups have to be handled manually, since the database is "live data". Often we can just configure a cronjob that runs mysqldump so that a database snapshot is stored to a file and thus regularly backed up when the file system backup is run. However, sometimes you have a perfect storm where mysqldump is too heavy for the server (causing severe slowdowns or even crashing some services), even if run in the least intensive way (such as with the --quick flag) and at a low traffic time: partially due to lack of system resources and a large database.