All entries filed under “Development Tools”
In a two part series at Metaq, Terris Kremer wrote up how to sort and order data with ExpressionEngine and Ajax. Terris takes a regular ol’ table of EE entries and makes them sortable.
The first step to making something work with Ajax is to make sure it works without Ajax. If a user doesn’t have JavaScript enabled I want to be sure they can still sort entries. Those users will just have to load the entire page.
Let’s start with a basic template that has a header, footer and content section.
He includes plenty of code snippets and explanations so you can adapt the code to your situation. The first article just gets the basics working…no Ajax implementation yet. In the second article Terris tackles making the entries sortable without requiring a page load.
If this type of functionality is new to you or you need it on an upcoming project, both articles are a good reference.
Wil Linssen put together a list of all ExpressionEngine 1 & 2 cookies organized by those that are essential and non-essential. Will helpfully also included a description of the cookies function.
This document outlines all of the cookies use by ExpressionEngine 1.x. With the EU cookie law coming into force on May 26th, it’s important to know what cookies are set, which are ‘essential’ and why they are there. Hopefully this will help advise your decision process when altering your site to adhere.
Over on the ExpressionEngine blog, software developer Kevin Cupp wrote about what Varnish is and how to install and configure it.
The idea of caching is familiar: why waste resources regenerating the same content from scratch on each page view? But Varnish takes it a bit further by stepping in before the request even makes it to ExpressionEngine or Apache (or your favorite HTTP server). Even better, it can intercept a request before it hits the disk!
It’s a nicely done, in-depth article for people who are running their own servers and have the capability to install software–or for people like me who just want to learn more about how Varnish works.
If you don’t run your own server (like me) and need Varnish, you should look to see if your host has it available. As an example, I run on the great EngineHosting and Varnish is an add-on to their managed service.
I don’t know when this was created, but via Twitter I found out about a EE search comparison chart on the Solspace Super Search product page.
The feature comparison puts side-by-side the built-in ExpressionEngine search, Low Search, and Solspace Super Search.

Very handy if you’re researching which search module is the best one for your site.
“We’ve always modeled content.”
That was the first thing I said to myself after reading the A List Apart article Content Modelling: A Master Skill by Rachel Lovinger.
Rachel details the idea and work behind breaking website content and pages into different data buckets (in our case this would be Channel Custom Fields and Channels). Content modelling is important because we need make sure the people managing the website have the control they need over the content. Does that sidebar paragraph about the site need to be edited on occasion? Make sure you store it in a way that the website team can update it.
As people who develop with and on ExpressionEngine, content modelling seems obvious to us. This is what we’ve always done. It is an important part of being a competent web developer. It is not something that we should just leave to someone else to do.
To demonstrate this, read through this article by Justin Reynolds on content modelling with ExpressionEngine.
If you’re going to model content effectively you need a content management system that makes it as painless as possible to organise information into well defined data containers. I thought I’d take a moment to outline why I think ExpressionEngine by EllisLabs (sic) does this so well. It’s the primary reason I use it as my standard content management solution for larger websites. The system was designed from the ground up with flexible content modelling in mind: it makes it very straightforward to define ‘channels’ of infomation built of any type of data that can be displayed on a website: single lines of text, body copy, images, multimedia files, PDFs and other downloadable files, dates, categories - and so on. I’ll stress from the outset that I’m sure there are other systems that also handle content modelling well - it’s just that I like the way ExpressionEngine does it.
Whether it was a homegrown hack or one we found somewhere to work around a limitation or bug in ExpressionEngine, we’ve all done it at some point. The thing with hacking the EE core files is this: if you hack it, you own it.
You own the responsibility for letting those that come after you know about the hack. If it’s your site or one you will always maintain (unlikely), then you own the responsibility to always re-patch the core files with your hack when upgrading to a newer version of ExpressionEngine.
Rob Sanchez had a good response and technique for making upgrading site with hacks a little easier (this is only applicable to people who use Git or other version control system):
If you hack the core EE files, where do you document those changes so developers that come after you can know about them?
Over at Meta Q front-end developer Terris Kremer wrote up a tutorial on using the Stash add-on to create entry previews.
Wait, what’s Stash?
Stash allows you to stash text and snippets of code for reuse throughout your templates. Variables can be set dynamically from the $_GET or $_POST superglobals and can optionally be cached in the database for persistence across pages.
Stash variables that you create are available to templates embedded below the level at which you are using the tag, or later in the parse order of the current template.
The premise of the tutorial is that existing methods for creating entry previews are too complicated.
There are a few add-ons and methods out there that let site admins preview their ExpressionEngine entries and they all stink.
I disagree with the premise (the solution with Stash ended up being more complicated) but the tutorial is a great demonstration of what you can do with the Stash add-on by Mark Croxton.
Github maintains a list of .gitignore file templates for different frameworks, CMSes, languages and applications. Wes Baker added his own for ExpressionEngine.
.DS_Store
# Images
images/avatars/
images/captchas/
images/smileys/
images/member_photos/
images/signature_attachments/
images/pm_attachments/
# Caches
sized/
thumbs/
_thumbs/
*/expressionengine/cache/*`
There’s also a template for CodeIgniter.
EngineHosting quietly relaunched their sign-up process that includes a brand new design, new plan options and the ability to purchase third party products during the sign-up process. There a two big pieces of news in this new store:
SSH Access
On Virtual Server Cluster plans (not the low cost shared hosting plans) you now have SSH access to the server access to a separate SSH server in the 4 virtual server cluster (EngineHosting got in touch and asked that I clarify how the SSH access works –Ryan). For those of us that have been wanting that for a while, this is very welcome news. The plans that include SSH access start at only $45 per month, so it’s within range of almost every project. All of the common stuff you can do at the command line is available, like MySQL, SSH tunneling and cronjob creation. You can also access your web files and get read only access to your log files (great for tailing log files to monitor for errors).
You can review all of their plans on the hosting sign-up page. The cheaper shared plans are at the bottom.
Buy Third Party Add-ons
As part of the sign-up process you can now purchase third party add-ons. Available right now are:
- Select Pixel & Tonic add-ons
- Select Solspace add-ons
- BrilliantRetail E-commerce
Purchasing ExpressionEngine during sign-up isn’t available anymore (I don’t know if it’ll return) but if you put your EE installation up on the server, EngineHosting will install the add-ons for you. The fact that you can purchase all of those add-ons while grabbing your hosting is a nice convenience.
Other Options
While purchasing any of the virtual cluster plans, you can also add Varnish (web app accelerator/caching), Memcached (“high-performance, distributed memory object caching system”), CDN services (Conent Delivery Network), and Private IP/SSL.
EngineHosting and EllisLab
While I’m on the topic of EngineHosting. Last Friday EllisLab posted a blog entry about how they were “severing ties” with Gippy’s Internet Solutions (the company behind EngineHosting). What does this mean?
The only practical change for the Community is that ExpressionEngine is now available exclusively through ExpressionEngine.com. If you previously purchased your ExpressionEngine license through Gippy’s, it will of course remain valid.
[…]
Gippy’s has always been an excellent hosting provider and upstanding contributor to the Community and we have every reason to believe that will continue far into the future.
The rest of the blog post seemed like a lot of insider baseball that is hardly relevant to the EE community at this time.
EE Insider is hosted on EngineHosting and I’m looking forward to moving to one of the new virtual cluster plans to take advantage of the SSH access and other goodies. This is a nice step forward for the community’s hosting provider!
For the last couple of weeks I’ve had access to a new Adobe Labs project called Shadow. I describe it as a set of tools (apps, really) that make it easy to set up a real-time mobile test bed. Line up your devices and then update your code on your computer and every device in your test bed automatically updates, too.
Shadow is available for OS X, Windows, iOS and Android. You need to run Google Chrome (and a special extension) to get everything to work together.
Shadow is free at Adobe Labs and available now.
Earlier this month Dan Cederholm released Pears, an open source WordPress theme that makes it easy to create a custom “markup & style pattern library.”
Nathan Doyle (“natetron”) created Pears for EE, which is an ExpressionEngine theme based on Dan’s WordPress Pears theme.
When I saw Dan’s theme I was hoping that someone would port it over to EE. Thanks for doing that, Nate!
If you’re not sure what Pears is all about, read through Dan’s site description to learn all about it and how you can get up and running with your own pattern library.
Here are the results of the poll I put up earlier this month. The idea behind the poll was to find out how many people are publishing with third party tools and how many just stick with the Control Panel.
The response rate was lower than what I had hoped for but the data still gives a glimpse at how people are publishing content to their ExpressionEngine sites.
The Results
I suspected that the majority publish their sites via the EE Control Panel and not with third party publishing tools like MarsEdit, Ecto, Textmate or even iExpression. My suspicions were proven true with the results.

As you can see, some do use external tools to publish content but their lack of support for mimicking the Control Panel publishing interface is surely whey they’re not more widely adopted. Additionally, with the introduction of customized publish layouts (no matter how fragile they still might be, 2 years later), developers and users of ExpressionEngine can now tailor their publish forms to be exactly what they need to them to be and therefore the entire Control Panel experience becomes more useful. This, perhaps, diminishes the need for another editor.

The biggest reason, of course, is that the web browser is cross platform. I can post content to my site from any computer or device with a web browser. Ultimately, this is the most flexible solution (and the most realistic if you’re building sites for clients).
However, the EE Control Panel still fails miserably on mobile devices (maybe one day EllisLab will create a responsive theme by default; until then, check out this one by Ben Croker) If you really need to post to your site from your iPhone, you should also check out iExpression, a native iOS app that lets you publish content to EE. For what it’s worth, the Control Panel works okay on the iPad if you just need to jump in for a quick tweak or edit. Anything beyond that will probably result in furstration.
Operating System
I asked for the primary operating system just to use it as a data point to measure the other results (like the use of MarsEdit, an OS X only application). Surprisingly, the usage of OS X among the respondants was almost 80% while the use of MarsEdit (any use at all in the past) was only 5%. That means even Mac users, despite such a great app like MarsEdit, are still favoring the Control Panel. That was surprising to me.

Why only the Control Panel?
The last question I asked in the survey was why the respondent preferred the Control Panel over other methods of publishing. I got a lot of responses that said they didn’t know about other offerings. Some felt that the Control Panel was the “easiest way” and “good enough.”
It’s readily available once EE is installed, and doesn’t require any extra configuration/development. It’s also the most “guaranteed to work” way to post content.
The ability of external editors to support fieldtypes also came up, like this one:
Full fieldtype support. No external editor supports fieldtypes like Matrix, Assets, Playa, etc.
and this one:
Why not? It’s a good overall experience with all the custom fieldtypes, publish page configurations, entry revisioning, etc. Keeping to just the Control Panel means I can jump on any system anywhere to post/edit content. Hooking up external sources is just another cost/hassle to install & keep up with as both platforms evolve.
This response addressed another tool I use but didn’t mention in the poll:
I actually use the control panel, but use QuickCursor to send any long content bits to my editor-of-choice, in this case MacVim. The reason I use the control panel is that in my experiences with other methods, it wasn’t always easy to get all the custom bits working properly when you go beyond just a simple blog. And now that I’m using the Structure plugin, I don’t think an external editor would be of much use to me at all.
I love QuickCursor and use it whenever I have to write something of length (like a message in Basecamp) in the web browser.
With publish layouts and Zoo Admin, I can quickly make a user-friendly workflow that’s easy to maintain.
I’ve used Zoo Admin and it is indeed a nice way to customize the CP for those who will be maintaining the site.
That was only a sampling of all of the responses but the general trend was that either people didn’t know about external editors or those that did thought it was just too much of hassle (or tradeoff ) to set one up. A few people even suggested I further cover external editors and how to use them. That sounds like a great idea, so look for something in the near future.
Thanks to everyone who participated in the survey!
On Twitter, Andy Harris asked about existing capabilities to seed sample data into EE:
I replied that I thought there was an add-on out there (apparently there’s not) and Greg Ferrell mentioned that he usually just creates a shell script to make that happen.
It would certainly be nice to have native functionality or an add-on that allows you to seed data into EE (I like the Ruby on Rails seed data functionality) from a file and also reset the entries based on the data in that file. This could be done with the Channel Entries API and I know some people have coded one-off solutions with the API to migrate data.
My suggestion to Andy was to use an XML file and the DataGrab add-on from brandnewbox:
He had the same idea. So, for now, DataGrab seems like the best option. Have you solved this another way? Let us know in the comments.
Last week I asked you how you post content to ExpressionEngine sites with a short survey. The survey is still open and I’m going to leave it open for a little while longer.
If you haven’t already, can you take a minute to share your workflow for posting content? It’s free, fun and people will think you’re awesome.
(I’m posting this with the TextMate Blogging Bundle.)
The other day I came across this older thread in the EE forums about maintenance packages for clients (EE updates, etc) and how different companies and freelancers approach this problem. That, it turns out, wasn’t the most interesting part of the thread for me. Instead, it was this paragraph from Kurt Deutscher about how he documents the add-ons and configurations for client sites so it’s easy to know what’s installed.
We store a little .txt file called aaUpdateNotes.txt in every hosting account where we work with an EE site. We list all of that site’s add-ons and who last updated the site and sometimes what version of an add-on was used (not typically though). Before we run an update on a site, we open this file and keep it open during the update incase we find something that needs to be added to, or removed from, the file for the next update. With well over 100 EE installs we maintain, that little .txt file keeps us sane when doing updates.
At a glance, Kurt knows all of the add-ons installed and perhaps any potential issues that may arise during an upgrade. It also makes it easy for people new to the site to get up to speed on the configuration. Nice idea.
Erik Reagan chimed in with a link to an add-on they’re working on called Dev Docs that allows you to have documentation within the site Control Panel. From the add-on description:
Dev Docs was born from a desire to have project-specific, developer-based documentation available within a site’s Control Panel.
At Focus Lab we have a file in each project’s repository root that is meant only for developers. This file is in Textile formatting and is meant to be the primary source of information to get “up to speed” on the project.
Erik wrote a great article for EE Insider on creating documentation for ExpressionEngine that should help you get started doing documentation for your projects.
Time to get documenting!