Disclaimer: I received a free copy of Building Websites with ExpressionEngine 2 for review purposes.
Building Websites with ExpressionEngine 2 describes itself as being written for users who are completely new to ExpressionEngine, and targeted at everyone from web developers to business owners who already have a basic understanding HTML and CSS and want to build a fully featured website.
ExpressionEngine has a fairly steep learning curve, especially if you’re coming from a content management system like WordPress. Distilling such a technical and complex topic as ExpressionEngine is therefore no easy feat. So how does Leonard Murphy do? Lets find out.
Chapter 1 – Introduction to ExpressionEngine
The first chapter begins with the very basics by explaining exactly what a content management system is, and points out that good content management systems allow users with no technical knowledge to update and maintain a site easily. I’ve personally found this to be one of the greatest strengths of ExpressionEngine – when set up correctly, clients should be able to update any content on the site without having to need my help.
The chapter continues by posing some very good arguments for using ExpressionEngine from both a business and technical perspective, something that you might find useful if you ever need to justify the use or cost of ExpressionEngine to a manager or client.
Chapter 2 – Getting Installed
This chapter runs you through installing ExpressionEngine and covers everything that’s already in the documentation, but goes through the steps a bit more slowly and with additional explanations. It also shows you how to hide the name of the system folder from users who you’ll be giving control panel access to, which is a nice little tip.
It continues by showing you get cleaner URLs by removing index.php using the exclude method or by simply renaming it.
Chapter 3 – The ExpressionEngine Tour
This chapter introduces you to the Control Panel and does a good job of explaining some of the first things you’ll see when you log in, before explaining how to add and edit content to the default theme that comes with ExpressionEngine – Agile Records. It continues by explaining how templates and URLs function in ExpressionEngine and guides you through creating and editing your first templates and pulling in dynamic content form a channel.
This is perhaps the most important chapter in the book and new users to ExpressionEngine should go through it carefully as it explains some of the fundamental ways in which ExpressionEngine functions.
This is also the first chapter that contains some Challenges at the end. Challenges ask you to accomplish a few goals based on what you’ve learnt in that chapter, with the help of the documentation. This is a really great way of extending what you’ve learnt and directing readers to the documentation, a good habit to cultivate as some questions that are asked one the forums are usually already addressed in the documentation.
Chapter 4 – Moving a Website to ExpressionEngine
Another lengthy and important chapter in Building Websites with ExpressionEngine 2, this chapter presents a case study where you’ll go through the steps of moving a static website powered by multiple HTML pages to one powered by ExpressionEngine. It does a really good job of covering the custom field and channel creation process as well as setting up templates that do their best to avoid repetition of code. Lots of screenshots along the way will also be of great help to new ExpressionEngine users. The way that Leonard sets up his templates isn’t quite the way I do it, but he rightly points out that every ExpressionEngine user does things slightly differently. He gives a shout out to Mike Boyink’s method of doing things too.
The chapter goes further into its discussion about avoiding code repetition with explanations, comparisons and examples of preload text replacements, user-defined global variables, snippets and embedded templates.
Chapter 5 – Creating a Fully Equipped Channel
This chapter extends much of what was covered in the previous chapter, delving further into creating more flexible, complex templates to accommodate pagination, categories, multiple and single entries. It does this by building out the FAQs section of the case study, but while based on FAQs, you can easily extend the knowledge contained in this chapter to creating things like blog posts, or a a directory listing of companies in different sectors, similar to what I did for the TTMA website.
Together, chapters 4 and 5 equip you with many of the tools that you’ll need to create a full featured website.
Chapter 6 – Members
Chapter 6 gives a quick but thorough explanation of how membership in ExpressionEngine works and the various ways in which you can restrict member privileges. It also examines a few of the conditional statements that relate to membership.
Chapter 7 – Creating a Calendar
This chapter goes through creating a calendar of events for the case study and also introduce relationships. Personally, I would never create the type of calendar that this chapter does. Whenever I need calendar functionality I purchase Solspace’s Calendar module instead which offers a vast amount of functionality and comes with a codepack that caters for almost everything you’d need. While it’s a commercial add-on, it more than makes up for it’s cost in the amount of time is saved if I had to build this kind of functionality myself.
Because of this I decided to skip this chapter. Reading the chapter summary I saw that related entries were mentioned somewhere in there. I think that related entries deserve a chapter to themselves, as it’s one of the trickier things to wrap your head around, and mentioning it in passing in a chapter that’s already quite tedious doesn’t seem very useful.
Chapter 8 – Creating a Photo Gallery
Since ExpressionEngine 2 doesn’t come with a Photo Gallery add-on, this chapter shows you how to build something similar with functionality that comes with ExpressionEngine. I’m not exactly sure how useful this would be to anyone, as the method included here only allows for one photo per entry, but I guess the principles covered can help beginners in other ways. Leonard does mention that Matrix, Image Sizer and Channel Images can help quite a bit in setting up photo gallery much more easily.
Chapter 9 – Beyond the Basics
Chapter 9 moves beyond step by step instructions for setting up a site to examining some of the modules that come with ExpressionEngine. It’s the kind of chapter that you might only reference when you need to work with that kind of functionality, but it’s good to know it’s available.
Chapter 10 – Extending ExpressionEngine
The first part of the final chapter beings by describe how to back up, restoring and upgrade ExpressionEngine. Most of this is already covered in the documentation and ExpressionEngine Wiki, but beginners might find it useful to have all of this information in one place.
The second part of the chapter gives a quick rundown of the most useful (and popular) add-ons and add-on developers in the ExpressionEngine community. This will be particularly useful to beginners as they’ll be able to see some of the ways in which they can extend some of the functionality in ExpressionEngine.
Some quick, useful tips on optimizing ExpressionEngine rounds out the chapter.
The end of the book contains an Appendix that covers installing WAMP, and then the solutions to the Challenges that were at the end of some of the chapters.
In summary, while I thought that relationships in ExpressionEngine weren’t given the attention they deserve, I think this is nonetheless a very useful book to anyone who already understands HTML and CSS and is looking to build larger, more complex sites with ExpressionEngine. Leonard has managed very well to explain some of the complexities of ExpressionEngine with clear, easy to understand writing.