Jonathan Longnecker - From Design To Dynamic: Rapid Development with ExpressionEngine
- Categories:
- ExpressionEngine
- Tags:
- development, expressionengine, fieldframe, jonathan longnecker, structure
- Published:
- 12:30pm on Monday 26th October, 2009
Jonathan Longnecker is a developer with fortyseven media. He discussed the tips and tricks they use to quickly build new ExpressionEngine sites.
Slides and code examples from the talk are on Jonathan’s site.
Introduction
- The problem is that EE developers are too awesome. Add-on development has exploded, and functionality and usefulness is really amazing. Structure is a great example of this.
- We typically use 15+ addons for every site, with the same kind of templates and global variables
- The solution is to set up a sandbox site where the core and all add-ons are kept up-to-date. Add some default templates and global variables, a weblog for content, and some sweet tricks and you have the ability to rapidly build out new sites
- We will be adding new things to it as we find great add-ons
Add-Ons
- LG Addon Updater
- LG htaccess Generator: Generates your .htaccess file, removes index.php and much, much more
- LG Add Sitename: Enables Control Panel admin page title replacements, client logo
- LG TinyMCE: Not convinced it’s the best choice, and it’s not good with pasted text. Turn off source formatting, spans and brs, take out the image upload, add blockquote
- SL Developer Info: Lists all weblogs, templates, and other useful developer shortcuts. Give it it’s own custom tab in your nav bar
- ImgSizer: Resizes and crops intelligently and creates thumbnails; make sure you create a “sized” directory in your images folder
- Solspace’s Freeform
- FieldFrame: Changes the way you can put together certain types of content
- nGen File Field
- Structure: Radically changes the way you handle content pages and navigation. Scared of using it initially as I thought it would lock me into certain way of developing templates, but it really has potential to speed up certain parts of your site; secondary static pages are a lot faster to set up
Tips and tricks
- In your Template Preferences, turn on save template revisions (I use five) for added protection from mistakes, and always save templates as files
- Create a “content” weblog with custom fields - meta keywords, meta description, a body (TinyMCE field type), and images (an FF Matrix). A sweet trick invented by AJ Penninga is to set up your images as a FF Matrix with a File field, title, radio group of sizes, radio group for crop height (optional), and dropdown for alignment. Then to insert the image add
{image_1},{image_2}, etc. in the body content. Your content template then uses LG_Replace to loop through the matrix images and replace those tags with the images inside the{images}tag - Create a client member group with access to file uploads, Structure and weblogs
- Create global variables: I use html_head (containing doctype, static meta tags, favicon link, etc.), html_closing, jquery, javascript, rss (just your RSS links), and stylesheets
- Create templates in site and _global groups: footer, header, nav (containing Structure’s
nav_maintag), sidebar (using Structure’snav_subtag) and content (using Structure’stitle_trailtag to build theelement) - Keep the
tag inside each template so you can add a dynamic CSS id or class to it - Replace the default homepage with a list of what’s been installed and configured on the sandbox site
- Moving servers is now faster than installing a new site, as the sandbox site is ready to go - just copy the database and files over and amend the config.php settings
Jonathan ended with a live demonstration of creating a new site from scratch, using Structure to create pages and place them in the site IA really quickly, generate automatic navigation, and use Structure’s Listings feature to attach weblog entries to a page (a la a design portfolio). Structure makes it impressively easy to re-order navigation items.

I'd love to hear what you think - please use the form below to leave your comments. Some HTML is permitted:
b,i,em,del,ins,strong,pre,code,blockquote,abbr. URLs or email addresses will be automatically converted into links.