3

I need to display different information depending on the section the entry comes under when I'm displaying all entries within a loop.

Use case - I have a feed which will pull in all entries such as 'Projects' and 'Events' both are sections set up as channels.

I need to display different information relating to each Entry on the front end as they have different fields.

So I need to check if the entry belongs to 'projects' or 'events' within the loop. I can't seem to achieve it.

Current code:

{% for entry in craft.entries.authorId(authorIds).orderBy('dateCreated desc') %}
                        
      {% if entry in craft.entries.section('projects') %}

      Do something
    
      {% elseif entry in craft.entries.section('events') %}

      Do something different

      {% endif %}

{% endfor %}

This displays nothing? Any help? Thanks

1 Answer 1

6

Check against entry.section.handle:

{% for entry in craft.entries.authorId(authorIds).orderBy('dateCreated desc').all() %}
                        
      {% if entry.section.handle == 'projects' %}

         Do something
    
      {% elseif entry.section.handle == 'events' %}

         Do something different

      {% endif %}

{% endfor %}
3
  • Thanks James. That works! I had tried something similar to no avail.... {% if entry.section.name == 'projects' %}
    – Tom Byrom
    Commented Jun 26, 2020 at 12:33
  • 2
    If you're ever in doubt about what variables are available to you, a handy trick is to dump out the key names in your template like this: <pre>{{ dump(entry.section|keys) }}</pre> Commented Jun 26, 2020 at 12:57
  • Good to know, appreciate that
    – Tom Byrom
    Commented Jun 27, 2020 at 17:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.