EllisLab text mark

“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'}
='quotations/_entry' limit='30' paginate=''}
='quotations/_entry' limit='1' paginate='bottom'}

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.


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

Keeping the Copyright Date Current

Here’s a simple one: How do you set up a site’s copyright notice so that it’s always up to date? With a dynamic publishing system like ExpressionEngine, it would be silly to manually update that copyright date at the start of every new year.

Continue Reading

Preview Entries with Live Look

Before publishing content, many authors and editors like to double-check that it looks the way they expect it to look on the front-end. Live Look lets you do just that, and it’s pretty easy to set up.

Continue Reading

jQuery Gotchas with Channel Forms

Several first-party fieldtypes (Grid, Relationships, Rich Text Editor, Date, and File) rely on jQuery to function as intended when used in front-end Channel Forms.

Channel Form automatically inserts the JavaScript necessary to function, as well as a call to jQuery. However, this will result in a conflict if your HTML template is already calling for jQuery, causing Channel Form to stop working as expected.

Fortunately, the parameter include_jquery can help save the day.

Continue Reading

Putting the “Secure” in Secure Mode Forms

The Secure Mode setting in ExpressionEngine serves a very important function and is often misunderstood. Secure Mode ensures that all forms processed by ExpressionEngine came from the visitor who was given the form and not some other source that may be trying to do very bad things. If the call is not coming from the visitor it was generated for, ExpressionEngine will reject it.

At its most basic level, this feature helps prevent spam bots from bombing your site with automated data as they try to add unwelcome viagra ads to your innocent comments section. However, the really important duty of Secure Mode is stopping cross-site request forgery attacks which include not only common spammers but also malicious external attacks.

Continue Reading

Paginating Grid Rows

For the past two months, I have been working on a site for my daughter that will help her work through her emotions. I am loosely calling it an “app” that is built using ExpressionEngine. The basic idea of the app is to present my daughter with a series of questions that help her determine how she feels, and then present some healthy ways to cope with the emotion she chose. Before Grid, I was showing all of the healthy coping suggestions on one page and she would chose from the long list. With Grid, I am able to put several answers into just one entry, and with pagination in Grid, I can present one coping suggestion at a time which makes for a much better experience.

Continue Reading