CMS Development

GWilkinson
Membro

Blog Recent Posts + Featured Post on Top

resolver

Hello,

 

I am trying to display a blog listing where the post tagged "Featured" is always listed first and then the rest of the posts are underneath.

 

what I want to do is something like this:

 

{% set featured_posts = blog_tags('default', 'Featured', 1) %}
{% set recent_posts_limit = 5 %}
{% set excluded_post_id = 0 %}

{% if featured_posts.posts|length %}
  {% set excluded_post_id = featured_posts.posts[0].id %}
  {% set recent_posts = blog_recent_posts('default', recent_posts_limit - 1, exclude_ids=excluded_post_id) %}
{% else %}
  {% set recent_posts = blog_recent_posts('default', recent_posts_limit) %}
{% endif %}

<div class="recent-posts">
  {% if featured_posts.posts|length %}
    {% for post in featured_posts.posts %}
      <div class="featured-post">
        <h3><a href="{{ post.absolute_url }}">{{ post.name }}</a></h3>
        <p>{{ post.post_summary }}</p>
        <span>Posted on {{ post.publish_date|datetimeformat('%Y-%m-%d') }}</span>
      </div>
    {% endfor %}
  {% endif %}

  {% for post in recent_posts.posts %}
    <div class="recent-post">
      <h3><a href="{{ post.absolute_url }}">{{ post.name }}</a></h3>
    </div>
  {% endfor %}

 

But there is no exclude_ids. Ive seen a few examples with two loops but im not sure how to explicitly exclude a tag. I tried topics but am not using a module for this so I dont think that was working for me either.

0 Avaliação positiva
1 Solução aceita
BarryGrennan
Solução
Orientador(a)

Blog Recent Posts + Featured Post on Top

resolver

This should work:

{% set featured_posts = blog_recent_tag_posts("default", "featured", 1) %} {#featured is lowercase here as it's the slug #} {# also note we're using blog_recent_tag_posts to get the posts not blog_tags #}

{% set normal_recent_posts = blog_recent_posts('default', 5) %}

{% set featured_post_id = featured_posts[0].id %}

{# we want to work out if the featured post would show in the normal 5 recent posts, so we create an array of their ids #}
{% set post_array = [] %}
 {% for post in normal_recent_posts %}
      {% do post_array.append(post.id) %}
{% endfor %}

{# if the featured post is in the standard 5 we're going to add an extra post (6 total) so we can hide the featured in the loop #}
{% if post_array is containing featured_post_id %}
{% set displayed_recent_posts = blog_recent_posts('default', 6) %}
{% else %}
{% set displayed_recent_posts = blog_recent_posts('default', 5) %}
{% endif %}

FEATURED POSTS

 {% for post in featured_posts %}
 <div class="recent-post">
      <h3><a href="{{ post.absolute_url }}">{{ post.name }}</a></h3>
    </div>
  {% endfor %}

NORMAL POSTS
  {% for post in displayed_recent_posts %}
{% unless post.id == featured_post_id %}
    <div class="recent-post">
      <h3><a href="{{ post.absolute_url }}">{{ post.name }}</a></h3>
    </div>
{% endunless %}
  {% endfor %}

profile2022aBarry Grennan

Freelance HubSpot CMS Developer

Website | Contact | LinkedIn

 

 

Exibir solução no post original

0 Avaliação positiva
4 Respostas 4
BarryGrennan
Solução
Orientador(a)

Blog Recent Posts + Featured Post on Top

resolver

This should work:

{% set featured_posts = blog_recent_tag_posts("default", "featured", 1) %} {#featured is lowercase here as it's the slug #} {# also note we're using blog_recent_tag_posts to get the posts not blog_tags #}

{% set normal_recent_posts = blog_recent_posts('default', 5) %}

{% set featured_post_id = featured_posts[0].id %}

{# we want to work out if the featured post would show in the normal 5 recent posts, so we create an array of their ids #}
{% set post_array = [] %}
 {% for post in normal_recent_posts %}
      {% do post_array.append(post.id) %}
{% endfor %}

{# if the featured post is in the standard 5 we're going to add an extra post (6 total) so we can hide the featured in the loop #}
{% if post_array is containing featured_post_id %}
{% set displayed_recent_posts = blog_recent_posts('default', 6) %}
{% else %}
{% set displayed_recent_posts = blog_recent_posts('default', 5) %}
{% endif %}

FEATURED POSTS

 {% for post in featured_posts %}
 <div class="recent-post">
      <h3><a href="{{ post.absolute_url }}">{{ post.name }}</a></h3>
    </div>
  {% endfor %}

NORMAL POSTS
  {% for post in displayed_recent_posts %}
{% unless post.id == featured_post_id %}
    <div class="recent-post">
      <h3><a href="{{ post.absolute_url }}">{{ post.name }}</a></h3>
    </div>
{% endunless %}
  {% endfor %}

profile2022aBarry Grennan

Freelance HubSpot CMS Developer

Website | Contact | LinkedIn

 

 

0 Avaliação positiva
GWilkinson
Membro

Blog Recent Posts + Featured Post on Top

resolver

Thank you! Worked perfectly

0 Avaliação positiva
Jaycee_Lewis
Gerente da Comunidade
Gerente da Comunidade

Blog Recent Posts + Featured Post on Top

resolver

Hey, @GWilkinson 👋 I moved this over to our CMS developer community. I'd also like to invite some of our community members to the conversation — @BarryGrennan @JBeatty, do you have any tips you can share with @GWilkinson?

 

Thank you very much for taking a look! — Jaycee


Join us on March 27th at 12 PM for the Digital Essentials Lab, an interactive session designed to redefine your digital strategy!
Engage with expert Jourdan Guyton to gain actionable insights, participate in live Q&A, and learn strategies to boost your business success.
Don't miss this opportunity to connect and grow—reserve your spot today!


Did you know that the Community is available in other languages?
Join regional conversations by changing your language settings !
0 Avaliação positiva
GWilkinson
Membro

Blog Recent Posts + Featured Post on Top

resolver

Thank you!

0 Avaliação positiva