EllisLab text mark

Mijingo: A Funny Name, But a Serious Way to Learn ExpressionEngine

This post is from a featured guest, Ryan Irelan, who runs Mijingo

Mijingo was founded on ExpressionEngine. It’s the first topic I taught and the CMS that has powered Mijingo.com from the beginning.

Since publishing my first ExpressionEngine video course in 2008, I’ve been floored by how many people have told me that the Mijingo EE course was an important part of their getting started with ExpressionEngine. For some it even helped put them on a path to a different career.

One former student

Continue Reading

Live Online ExpressionEngine Training from Creat-EE

This post is from a featured guest, Jae Barclay, who runs [Creat-ee.com][1]

As someone who’s been involved in both web design & development as well as teaching and training for the past 17 years, running [Creat-ee.com][1] was a natural extension of our business ([www.ejaedesign.com][2]).

When we first started working with EE back in 2007, there were no live online trainings available. I felt there was a need there and thus [Creat-ee.com][1] was born in 2010 with five distinct services.

Continue Reading

Top 10 Things You’ll Miss if You Don’t Attend ExpressionEngine Conference 2014

ExpressionEngine Conference

ExpressionEngine Conference 2014 promises to be an exciting and informative 3 days, where great minds come together to share their knowledge, expertise, tips, and stories. That being said, if you are still on the fence about tapping into the wealth of knowledge at EE Conference 2014, here are 10 things you will miss out on if you do not attend.

10. Get Recognized

Attending the conference gives you the opportunity to submit your best work in the conference contest to be judged on one of the

Continue Reading

SSL Everywhere at EllisLab

EllisLab.com now runs SSL Everywhere1, making your accounts safer and contributing to a more secure internet. There have not been any breaches at EllisLab.com nor any other reason to panic, we just want to do our part to be good netizens. We have three simple steps you can take as well to be internet heroes.

First, we are recommending that you change your password. Why should you bother? Probably one of these applies to you:

  1. Have you ever used your password somewhere else? Heartbleed

Continue Reading

Developer Preview Expanding

The Developer Preview program is expanding today to allow more developers to work directly with Ellislab, with these three basic changes:

  1. ExpressionEngine Reactor is officially closed
  2. The Developer Preview is now open to anyone with a publicly available add-on and an ExpressionEngine license
  3. Security reporters with a valid security report will be admitted to the developer preview

About two and a half years ago, we added ExpressionEngine Reactor as a supplement to our five year old Developer

Continue Reading

ExpressionEngine 2.9.0 Released

ExpressionEngine 2.9.0 has been released and includes new features and bug fixes. Discussion Forum 3.1.16 and Multiple Site Manager 2.1.7 are also available as maintenance releases. Here’s a look at what’s new.

New Conditionals Parser

Template Routes, advanced.

The main story for 2.9.0 is the new conditionals parser. With this new parser, we’ve been able to boost performance, ensure conditionals behave more consistently when written in different ways, and added more power. Here’s a quick summary:

  • Conditionals

Continue Reading

Better Edit Entry Links

{if logged_in_group_id == 1}
<a href="{cp_url}?/cp/content_publish/entry_form?channel_id={channel_id}&entry_id={entry_id}">Edit Me</a>

This little codeblock is probably familiar to anyone who has built an ExpressionEngine site and wanted a quick link on the front end to edit a published entry in the control panel. Simple enough if a little clunky.

When you’re running MSM, however, you may have seen this when clicking an edit link if the last visit to your control panel was in a different Site:

An Error Was Encountered

You are not authorized to access this page

Remembering which site you were using last is a convenience feature that 80% of the time is very helpful, but not in this case since the entry may not exist in that site. Workarounds exist, such as hitting refresh on that error page, or using JavaScript to set the last Site ID cookie before clicking through.

We thought this would be better:

{if logged_in_group_id == 1}
<a href="{cp_edit_entry_url}">Edit Me</a>

Starting in version 2.9.0, the {cp_edit_entry_url} variable will be available to the Channel Entries tag to build these handy links, and it will play nice with MSM to boot, switching you to the correct site to edit that entry.

Continue Reading

New Conditionals Parser in 2.9

In 2.9 we rewrote the conditional parser. It is more performant, more consistent, and has new operators.

{if segment_3 == 'books'}
:channel:entries channel="book_reviews" limit="5"}
:elseif segment_3 == 'games'}
:channel:entries channel="game_reviews" limit="5"}
:channel:entries channel="misc_reviews" limit="5"}

Starting with 2.9 conditionals evaluate when ready. When a conditional statement’s variables are known the statement will be evaluated as either TRUE or FALSE. In the above example, when segment_3 is “games” we will remove the other two channel entries tags from the template. Instead of processing 3 channel entries tags and then deciding which one to show, we now determine which tag to process.


The distinction between “simple” and “advanced” conditionals is gone. Write your conditionals anyway you want. Put the variable first ({if my_snippet == "awesome"}) or put it last ({if "awesome" == my_snippet}). Use as many if:elseif statements as you desire. Use boolean operators. They are now all evaluated when ready.

New Operators

We have added mathematical operators to our conditionals. In addition to the modulus operator (%) you can now add (+), subtract (-), multiply (*), divide (/), and compute exponents (^) on your numbers. We’ve also added a string concatenation operator (.):

{if segment_1."/".segment_2 == "site/index"

We didn’t stop there. We’ve also added three special comparison operators, inspired by CSS attribute selectors: begins with (^=), ends with ($=), and contains (*=). Using a snippet of “Conditionals in ExpressionEngine 2.9 Rock!” named my_snippet these all evaluate to true:

{if my_snippet ^= "Conditionals"}
{if my_snippet 
$= "Rock!"}
{if my_snippet 
*= "ExpressionEngine 2.9"

We also added a regular expression operator (~) so now you can do this:

{if segment_3 "/^P\d+/"}
'm paginated!

And for good measure we added a boolean not operator (!) so this works:

{if ! (segment_3 "/^P\d+/")}
    No pagination here

Or if you prefer:

{if ! (the_droids *= looking_for)

And if you want to ponder a philosophical point:

{if 2B || ! 2B} 

These are some of the major new features of the new conditional parser in ExpressionEngine 2.9. We can’t wait to see what you do with it.

Continue Reading

Kanban Board

Managing a team is hard work made even harder when you work remotely and only know what people are working on when you ask or when they tell you. We’ve used numerous tools that attempt to organize and communicate what each of us is working on: JIRA, Pivotal Tracker, Sprint.ly, Trello, and—currently—GitHub Issues.

Each of these tools has done something different that worked for us at the time with the people we had. I can look back on them and say that while I had frustrations with each and

Continue Reading

CodeIgniter 2.2.0 Released

CodeIgniter 2.2.0 has been released today, and is a security release for the 2.x branch. One of these changes is significant, so please be sure to read the version notes for upgrading from 2.1.4 to 2.2.0 to ensure your environment is ready for the update.

Since most have moved on to the development version of 3.0 from the GitHub repo, these fixes only affect sites powered by the legacy version. Sites running the development version of 3.x are unaffected as they have already been addressed in that version line. We felt that sites who were still running 2.x and potentially impacted by the vulnerability warranted an update so the release available for that version line is secure.

You can download v2.2.0 and find the full changelog here.

Continue Reading