I need to loop through the 6 latest entries from 3 different structures. The problem is, the entries are located on different levels. One of the structures has entries on level 3, and the other two has entries on level 1.
1 Answer
If you explicitly need only the entries at level 3, and those at level 1, I think combining two queries works best:
{# Get ids for all entries from the different structures and levels #}
{% set entriesAtLevelThree = craft.entries.section('level-3-section').level(3).limit(6).ids() %}
{% set entriesAtLevelOne = craft.entries.section(['level-1-section-1', 'level-1-section-2']).level(1).limit(6).ids() %}
{# Combine those IDs #}
{% set entryIdsCombined = entriesAtLevelThree | merge(entriesAtLevelOne) %}
{# Get all entries (so, no IDs this time), using your IDs #}
{% set allEntries = craft.entries.id(entryIdsCombined).limit(6).order('postDate DESC') %}
{% for entry in allEntries %}
{# do your thing #}
{% endfor %}
You can, of course, cache this by wrapping it in {% cache %}
tags.
-
1You should add
.limit(6)
to the first queries as well, otherwise theentryIdsCombined
array could be very large.– gromgullCommented Mar 6, 2015 at 9:53 -
1