ExpressionEngine is a content management system that is designed to manage websites. This chapter will briefly review what ExpressionEngine is and what it can do for you.
For a small website, using HTML files is perfectly feasible. To update the website, you simply update the files. It's easy if you know what you are doing.
In many cases, the person who created the website is not the one who makes updates to the site. With the content and the HTML code for the website intermingled in the same file, it is difficult to update the content without understanding the code. The harder it is to update, the less the site is updated.
A good content management system takes this problem and neatly solves it. It makes it easier to update the website without any knowledge of HTML. The person who creates the website does not have to be the person who updates it. And because it is easier to update, the site changes more frequently, visitors come back more frequently, and the site becomes popular.
A content management system also turns your website from a one-way flow of information (you write the content, the visitors read it) to a more conversational website. Not only are visitors reading the content you wrote, but they can add their own comments into the mix. Your site becomes dynamic, changing even when you aren't doing anything.
To illustrate the difference between a static and a dynamic website, consider a newspaper website. If the site had the same articles every day, you would stop visiting. Why would you read an article you've already read? To keep visitors coming back, it pays to keep the content of your website dynamic. If there is always something new to read, there is more incentive for your visitors to keep coming back.
For a small website, using HTML files is perfectly feasible. To update the website, you simply update the files. It's easy if you know what you are doing.
In many cases, the person who created the website is not the one who makes updates to the site. With the content and the HTML code for the website intermingled in the same file, it is difficult to update the content without understanding the code. The harder it is to update, the less the site is updated.
A good content management system takes this problem and neatly solves it. It makes it easier to update the website without any knowledge of HTML. The person who creates the website does not have to be the person who updates it. And because it is easier to update, the site changes more frequently, visitors come back more frequently, and the site becomes popular.
A content management system also turns your website from a one-way flow of information (you write the content, the visitors read it) to a more conversational website. Not only are visitors reading the content you wrote, but they can add their own comments into the mix. Your site becomes dynamic, changing even when you aren't doing anything.
To illustrate the difference between a static and a dynamic website, consider a newspaper website. If the site had the same articles every day, you would stop visiting. Why would you read an article you've already read? To keep visitors coming back, it pays to keep the content of your website dynamic. If there is always something new to read, there is more incentive for your visitors to keep coming back.
ExpressionEngine makes it easy to separate out the HTML code from the content of your website. Once the design of your website is built, you can add new content to the website simply by filling in a web form. It's easy enough that anyone can learn to do it.
Your HTML code exists in templates. However, instead of having paragraphs of content inside these templates like you would in most HTML files, your content is stored elsewhere (in a database) and retrieved dynamically.
With ExpressionEngine, it is possible to have no HTML tags in the content and no content in the templates—a true separation of content and code.
Although ExpressionEngine makes it easy for the HTML-illiterate to update a website, that alone would not be worth the $99.95+ price tag.
ExpressionEngine not only allows us to separate out the code, but makes it easy to implement very advanced features, which are more often associated with large social-networking websites, like Facebook or MySpace. Visitors can leave comments, or join your site as fully-fledged members. You can set up RSS feeds, a photo gallery, a mailing list, a calendar, a wiki, or a discussion forum, and you can sell items through PayPal.
ExpressionEngine also comes packed with industry-leading features to keep your website secure and spam-free amid all the activity. You can force people to register as members before they can submit comments to your site; you can personally review every member application before approving; or you can allow non-members to submit data if they type in a captcha correctly. (A captcha is an image of letters that a person must correctly type in order to submit data; it ensures that it is not an automated spambot that is submitting the comment or member application.)
Further, you can prevent people from submitting the same comment twice, restrict how much data a person can request from your website in a certain timeframe (to prevent denial of service attacks), blacklist certain words so that they cannot be used in comments, and blacklist URLs or IP addresses of spammers that you don't want accessing your site.
ExpressionEngine is not open-source. So why would you choose to pay for ExpressionEngine when you could use a free, open-source alternative?
It depends on your goals. ExpressionEngine is not open-source, but the code is certainly available if you want to look at how it works. While the core code is controlled centrally by EllisLab, the community can and does contribute their own set of modules, plug-ins, and other add-ons.
ExpressionEngine is not free, but is very reasonably priced for the features (especially for a non-profit or non-commercial license). The fee, in part, goes to support future development as well as software support via the forums. The response times in the support forums are very good, and for a business, it's reassuring to know that there is paid support staff—you are not just relying on a random member of the community to answer your question (though often, if a member of the community can answer your question first, they will).
ExpressionEngine is not for everyone. If you have never developed a website before and are less than familiar with HTML, you will find it more difficult to master ExpressionEngine There are very few pre-built templates for ExpressionEngine, and those that do exist will still require knowledge of HTML in order to customize.
To get the most out of ExpressionEngine, a background in developing websites is a huge advantage. If you know some HTML and CSS, ExpressionEngine is an extremely flexible tool allowing you to integrate ExpressionEngine tags into your own HTML/CSS designs. The end result is a site that looks entirely like something you have created, but has all the features of ExpressionEngine built right in. For this reason, ExpressionEngine is very popular with website designers who already work with HTML and CSS and want to continue to do so.
If any of the following sound familiar, this book is for you:
You've used HTML to build websites before, and you are comfortable editing HTML by hand.
You have at least a basic idea of what CSS is and how it relates to HTML. CSS is a large, complex subject, and though this book tries to explain the CSS it uses, this is not an introductory guide to CSS.
You have never used ExpressionEngine or another content management system before. This book is a tutorial book, designed for new users of ExpressionEngine, and will walk you through step-by-step for everything you need to do.
You want to build an interactive, feature-packed website. This book is geared towards using ExpressionEngine on a website (not as a blogging tool).
You want to get started using ExpressionEngine as fast as possible, and you don't have time for lots of reading. This book takes a very hands-on approach, and will get you using ExpressionEngine as fast as possible.
This book is not intended for use in the following situations. Although it may have some uses in the following situations, it is not written with these goals in mind:
You have never developed a HTML web page before, but you want your own blog. (A blogging service might be more appropriate.)
You want to create a full-featured blog, including trackbacks, RSS feeds, server pinging, emoticons, and moblogs. While ExpressionEngine supports such features, this book focuses more on creating a website rather than a traditional blog.
You want to see advanced CSS and HTML, with AJAX and all sorts of other fancy technology. The HTML and CSS in this book is designed to be as simple as possible without being plain.
You have extensive experience in ExpressionEngine, but want to learn advanced tips and tricks. This book is intended as an introduction for new users to ExpressionEngine. That said, experienced users may find new ideas, especially in the later chapters of this book.
You want a definitive guide to ExpressionEngine. As a printed book, it is almost a given that ExpressionEngine will have changed since this book was written. This book is meant more as a springboard into your own exploration of what ExpressionEngine can do, and does not attempt to cover every available feature.
Learning ExpressionEngine is a hands-on activity. In the forums on the ExpressionEngine website, you will see lots of references to the lightbulb moment. This is the moment when it dawns on you just how ExpressionEngine works, opening up your imagination to all the possibilities that ExpressionEngine has to offer.
The fastest (and the only) way to your lightbulb moment is by using ExpressionEngine. Working through these tutorials on your own installation, particularly the first few chapters, will give you a practical understanding of the terminology ExpressionEngine uses, and will help to bring you to your own lightbulb moment.
Each chapter has step-by-step instructions, not a mouse-click is missed. This makes it very easy to follow along and understand everything that we're doing and why we're doing it.
However, as a result, each chapter is not comprehensive—it does not tell you all the possibilities that could be. There are always multiple ways to the same solution, and often the best way will vary depending on the individual site. One template and template group structure might work great for a website that sells toast, but not so well on a political analysis website.
The aim of each chapter is to equip you with the basic training you need to venture out into the documentation or the forums, and feel confident asking for help and experimenting with different ideas.
Throughout this book, we use the example of building a website that sells toast online. The website is fairly basic; it is a small business which sells sliced bread that has been browned by exposure to dry heat. Although a ridiculous premise, it serves the purpose of demonstrating the various features of ExpressionEngine.
While reading this book, you may want further information on a particular feature. Some of the most important resources will be:
http://www.expressionengine.com/docs/—the ExpressionEngine documentation is very comprehensive, and it should be your first port of call when you want to learn more about a feature or tag.
http://expressionengine.com/forums—if you have a question or need support on any aspect of ExpressionEngine, this is the place to visit. Staffed by paid support representatives of EllisLab, as well as thousands of active members of the ExpressionEngine community, the support provided in these forums is phenomenal.
Note
To get the best results from the ExpressionEngine forums, always search the forums first in case your question has already been answered. When posting a question, include as much detail as possible regarding what you are trying to achieve—include your template code and/or a link to your website if possible.
http://expressionengine.com/showcase/—the ExpressionEngine showcase shows you the huge variety of sites that have been built using ExpressionEngine, and is a great place to get inspired.
http://expressionengine.com/wiki/Special:Categories—the ExpressionEngine wiki allows ExpressionEngine users to swap tips and tricks outside of the forums.
http://www.boyink.com/splaat/weblog/category/building-an-expressionengine-site/—Michael Boyink has produced a very comprehensive set of online tutorials for building a business website in ExpressionEngine (also available in a printed book) as well as building a church website.
http://www.solspace.com/—SolSpace is one of the biggest third-party developers of ExpressionEngine modules and plug-ins.
Last but not the least, you can download the code and images required to follow along in this book from http://www.packtpub.com/files/code/3797_Code.zip and http://www.packtpub.com/files/code/3797_Graphics.zip respectively, and you can view working examples of the code used in this book at http://www.leonardmurphy.com/book/.
Let's get started!