EllisLab text mark

Enabling fast, high-powered search in ExpressionEngine with Elasticsearch

This is a guest post from Matt Weinberg, Co-Founder, and Ben Smith, Technical Lead, of the New York City based interactive digital agency, Vector Media Group. The Vector team has immense experience with ExpressionEngine, including on high profile and high traffic sites. Find out below how they implemented Elasticsearch1 for blazing and powerful site searching in ExpressionEngine for a recent client.

We love ExpressionEngine and are always looking for new and exciting ways to integrate it with

Continue Reading

Save Thousands of Dollars by Paying More for Hosting

We’re going to show how you and your clients can save thousands of dollars a year by paying more for hosting. No typo.

While helping our customers, we log in to many sites. Sometimes, the control panel is slow. To see why it’s taking so long, my first stop used to be Extensions. Now it’s a quick trip to whoishostingthis.com.

Normally, the ExpressionEngine control panel is fast. Zippy even. There aren’t many pages in the control panel that should have an execution time of more than a second.

Continue Reading

Creating a Blog with ExpressionEngine

Ever wonder how other developers handle basic content in ExpressionEngine like a blog? Tad Ward from Blue Fish Design Studios wrote a four-part tutorial last month on creating a blog in ExpressionEngine. Old hat you say? Well, this tutorial is comprehensive, taking you all the way from installation of ExpressionEngine to the finished output on your site. Not only that, their tutorial includes many thoughtful details, like best practice tips to keep your site secure, using file-based templates, and even improving SEO.

How To Create a Blog using ExpressionEngine:

Continue Reading

Tune Up Your Skills with Train-ee ExpressionEngine Training

This post is from a featured guest, Mike Boyink, who runs Train-ee

Some businesses are started after copious amounts of market research, product viability studies, and cost/benefit analysis.

Train-ee was born out of a love for ExpressionEngine and a desire to help others learn it.

In 2006 I was active in the EE forums and someone posted “I just wish there was a series of step by step tutorials on how to use EE”. I figured I could do that. I began a rough once-a-week schedule and a few months

Continue Reading

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

“View All” Pagination, Part 2

A while back, [we showed you a way][1] to display your paginated entries on one page in addition to the paginated pages. It was pretty simple: if the correct segment is set to all, show all of the entries using the same embedded template we use to show one entry.

{if segment_2 == 'all'}
    {embed
='quotations/_entry' limit='30' paginate=''}
{if
:else}
    {embed
='quotations/_entry' limit='1' paginate='bottom'}
{
/if} 

It’s a handy tip and it’s still viable. However, what if you wanted to display those pages slightly differently?

Continue Reading

2.8 User Guide Additions: Advanced Templates

We thought it would be helpful to point out some of the additions and changes to the user guide that came with the release of ExpressionEngine 2.8. Today’s topic: advanced templates.

Relative Dates

Relative date formatting gives even greater control on how you present time-based information. There is a great deal of variety and control at your disposal with the relative date formatting parameters that you may not be aware of. For instance, did you know that the format= and timezone= parameters will take over when your stop= parameter kicks in? Or perhaps you even missed that all of your date variables can now be displayed in any timezone.

Modulus Operator for Conditionals

The modulus operator for conditionals was added in ExpressionEngine 2.7.1 last September, and we blogged about it but whoops! We neglected to add it to the user guide until December.

Multiple search:field= Parameter Clarification

In the example of using multiple search parameters in the Channel Entries tag:

{exp:channel:entries search:style="=ale" search:region="germany|belgium" search:rating="=3|4|5"}

We added the following explanation to help clarify how they will interact:

When using multiple search parameters, all search parameters must be matched in order for an entry to be included. The above example would pull back only those entries where the style is ‘ale’, the region is ‘germany’ or ‘belgium’ and the rating is 3, 4 or 5.

Relationship Namespaced Variables

Did you know that inside a Relationship tag pair that you can namespace and use any variable available to the Channel Entries tag, including switch?

Continue Reading

2.8 User Guide Additions: Developer Interest

We thought it would be helpful to point out some of the additions and changes to the user guide that came with the release of ExpressionEngine 2.8. Today’s topic: advanced items of interest for developers.

System Configuration Overrides

Many of the system and site settings that are stored in the database can be overriden in config files. For power users, this can be handy to modify settings in different contexts. They are now fully documented with the config setting, allowed values, and an explanation of what they are for. This type of configuration is an advanced area of ExpressionEngine that you certainly don’t have to understand or use in order to build a site, but some people like tinkering under the hood and for those people we now have all of these parts documented.

RSS Parser Class

Developers, have you seen how simple it is to create SimplePie objects for working with Atom and RSS feeds? The new RSS Parser class allows you to do that. Say goodbye to Magpie.

Pages Module Warning

As a result of things we have encountered while providing support, we have added a warning against excessive use of the Pages module, to help alert site builders before they head down a long dark path that is difficult to maintain and untangle.

Caching Drivers

ExpressionEngine 2.8 added memory-based caching options, but if you haven’t changed your cache storage settings, you are still using files and disk I/O for caching. Are you up to speed on these new drivers, and what you need to ask your host to enable to take full advantage of them?

If you are an add-on developer, have you updated your add-ons to take advantage of the new Cache Class so that your users are able to benefit fully from utilizing memory-based caching?

Pagination Class

Third-party developers historically were left to their own devices to add pagination to their add-ons, often copying/pasting from first-party modules to do so. This worked okay, but each of our modules had collected slightly different ways of handling pagination, with slightly different featuresets.

So we took our first steps to abstract things out to a useful Pagination library in version 2.4.0. That was refined and improved while it was in use on Channel Entries, Comments, and the Search module. In 2.8.0, we moved all first-party add-ons to the unified Pagination library, and simultaneously released final developer documentation as it is now stabilized and recommended for all developers to use.

Continue Reading

2.8 User Guide Additions: Templates

We thought it would be helpful to point out some of the additions and changes to the user guide that came with the release of ExpressionEngine 2.8. Today’s topic: templates.

Template Layouts

Template Layouts are all new to ExpressionEngine 2.8. Have you read how to use them yet?

Template Routes

Template Routes are also new to ExpressionEngine 2.8. Visit this section of the user guide to see how to add advanced fine-grained control to your ExpressionEngine site’s URL structure. ExpressionEngine’s default URL structure is flexible and powerful, but some clients have very specific URL structures that have special needs. Now you can accommodate them without template tricks or a conditionals dance.

Pagination

Previously the user guide only discussed Channel entry and Comment pagination, but now that pagination has been unified across all first-party modules, it was time to give its documentation some reorganization and refinement.

Path Variable tip

While providing support, we discovered that many users are implementing path variables like this:

<a href="{path='company/employees'}/customer-service/joe">JoeCustomer Service</a

So we thought we would highlight in the user guide that the {path=} variable can accept any number of segments, which makes for more readable templates.

<a href="{path='company/employees/customer-service/joe'}">JoeCustomer Service</a

Simple Conditional clarification

What variables are available in “simple” conditionals? No more guesswork or mistaken assumptions, we’ve documented what’s available at that stage of the parsing engine.

Continue Reading

Fully Removing index.php From URLs

We recently updated our user guide’s article on removing index.php from URLs, and it includes a pretty important change worth noting here.

Continue Reading