CMS Development

MattOnce
Contributor

Blog listing page doesn't show full post count when excluding certain tags

SOLVE

I am trying to hide some published posts with a tag of "Coming soon". I have followed the method used here to exclude posts with a certain tag: https://www.stephanieogaygarcia.com/hubspot-website-development/set-featured-posts-on-the-hubspot-bl...

Those posts do not appear, as expected. But the first page only lists 2 posts before listing the pagination, even though the "posts per page" setting is set to 15.  Page 2 onwards displays fine.

 

How can I fix this issue? Is it counting all posts (even excluded ones) as part of the total number of posts per page?

Listing page template code:

{% extends "../layouts/base.html" %}

{% if theme.blog.listing_page.use_sticky_nav %}
{% require_js %}
<script>
var element = document.getElementById("hhs-main-nav");
element.classList.add("hhs-alt-nav");
</script>
{% end_require_js %}
{% endif %}


{% block body %}
{% if blog_author %}
<div class="blog-header-standard" style="{% if theme.blog.listing_page.header.bg_type == 'image' %}background-image: url('{{ theme.blog.listing_page.header.bg_img.src }}');{% endif %}">
<div class="container-slim">
<div class="blog-header__inner row">
<div class="col-md-3">
{% if blog_author.avatar %}
<div class="blog-header__author-avatar" style="background-image: url('{{ blog_author.avatar }}');"></div>
{% endif %}
</div>
<div class="col-md-9">
<h1 class="blog-header__title">{{ blog_author.display_name }}</h1>
<p class="blog-header__subtitle">{{ blog_author.bio }}</p>
{% if blog_author.has_social_profiles %}
<div class="blog-header__author-social-links">
{% if blog_author.website %}
<a href="{{ blog_author.website }}" target="_blank">
{% icon name="link" style="SOLID" width="10" %}
</a>
{% endif %}
{% if blog_author.facebook %}
<a href="{{ blog_author.facebook }}" target="_blank">
{% icon name="facebook-f" style="SOLID" width="10" %}
</a>
{% endif %}
{% if blog_author.linkedin %}
<a href="{{ blog_author.linkedin }}" target="_blank">
{% icon name="linkedin-in" style="SOLID" width="10" %}
</a>
{% endif %}
{% if blog_author.twitter %}
<a href="{{ blog_author.twitter }}" target="_blank">
{% icon name="twitter" style="SOLID" width="10" %}
</a>
{% endif %}
</div>
{% endif %}
</div>
</div>
</div>
<div class="blog-header-overlay"></div>
</div>
{% else %}

{% if tag %}
<div class="blog-header post-header container oh-breadcrumb-container">
<div class="row justify-content-center">
<div class="col-lg-12"> <!-- // Was "col-lg-6"-->

<!-- New Blog breadcrumbs -->
<nav class="nav-breadcrumbs" aria-label="Blog breadcrumbs">
<ol class="oh-breadcrumbs">
<li><a class="" href="{{ group.absolute_url }}">Blog</a></li>
<li class="blog-post__tags">
<a class="blog-post__tag-link" href="#">{{ page_meta.html_title|split(' | ')|last }}</a>
</li>
</ol>
</nav>
<!-- End Blog breadcrumbs -->
</div>
</div>
</div>

{% endif %}

<div class="blog-header-standard" style="{% if theme.blog.listing_page.header.bg_type == 'image' %}background-image: url('{{ theme.blog.listing_page.header.bg_img.src }}');{% endif %}">
<div class="container">
<div class="blog-header__inner row">
<div class="col-md-8">
<h1 class="blog-header__title">{{ group.public_title }}</h1>
<h4 class="blog-header__subtitle">{{ group.description }}</h4>
</div>
<div class="col-md-4">
<div class="blog-header__form">
{% module "blog_subscribe_form" path="@hubspot/blog_subscribe", title="" %}
</div>
</div>
</div>
</div>
<div class="blog-header-overlay"></div>
</div>
{% endif %}

<div class="blog-content-body">
<div class="container">
<div class="row">
<div class="blog-index">
{% if tag %}
<div class="blog-index__tag-header">
<h5 class="blog-index__tag-subtitle">Posts about</h5>
<h3 class="blog-index__tag-heading">{{ page_meta.html_title|split(' | ')|last }}</h3>
</div>
{% endif %}
{% for content in contents %}
{% for topic in content.topic_list %}
{% if topic.name != 'Coming Soon' %}
{# Add the markup for the rest of your posts here #}
<div class="blog-index__post blog-index__post--small">
<div class="hhs-blog-card-inner">
<a class="blog-index__post-image blog-index__post-image--small"
{% if content.featured_image %}
style="background-image: url('{{ content.featured_image }}')";
{% endif %}
href="{{ content.absolute_url }}"></a>
<div class="blog-index__post-content blog-index__post-content--small">
<h2><a href="{{ content.absolute_url }}">{{ content.name }}</a></h2>
<p>{{ content.meta_description }}</p>
</div>
</div>
</div>
{% endif %}
{% endfor %}
{% endfor %}
</div>
{% if contents.total_page_count > 1 %}
<div class="blog-pagination">
{% set page_list = [-2, -1, 0, 1, 2] %}
{% if contents.total_page_count - current_page_num == 1 %}{% set offset = -1 %}
{% elif contents.total_page_count - current_page_num == 0 %}{% set offset = -2 %}
{% elif current_page_num == 2 %}{% set offset = 1 %}
{% elif current_page_num == 1 %}{% set offset = 2 %}
{% else %}{% set offset = 0 %}{% endif %}

<a class="blog-pagination__link blog-pagination__prev-link {{ "blog-pagination__prev-link--disabled" if !last_page_num }}" href="{{ blog_page_link(last_page_num) }}">
{% icon name="chevron-left" style="SOLID", width="13", no_wrapper=True %}
Prev
</a>
{% for page in page_list %}
{% set this_page = current_page_num + page + offset %}
{% if this_page > 0 and this_page <= contents.total_page_count %}
<a class="blog-pagination__link blog-pagination__number-link {{ "blog-pagination__link--active" if this_page == current_page_num }}" href="{{ blog_page_link(this_page) }}">{{ this_page }}</a>
{% endif %}
{% endfor %}
<a class="blog-pagination__link blog-pagination__next-link {{ "blog-pagination__next-link--disabled" if !next_page_num }}" href="{{ blog_page_link(current_page_num + 1) }}">
Next
{% icon name="chevron-right" style="SOLID", width="13", no_wrapper=True %}
</a>
</div>
{% endif %}
</div>
</div>
</div>
{% endblock body %}

 

0 Upvotes
1 Accepted solution
mangelet
Solution
Top Contributor | Platinum Partner
Top Contributor | Platinum Partner

Blog listing page doesn't show full post count when excluding certain tags

SOLVE

@MattOnce Consider doing a custom pagination calculation exlcuding the tag "Coming soon" too. 

 

You see contents.total_page_count is calculating the total page count with all blog posts including those tagged "Coming soon".

Martin Angeletti
HubSpot Consultant | Technical and Operational Specialist

Did my post help answer your question? Help the community: mark this as a solution.

View solution in original post

0 Upvotes
2 Replies 2
mangelet
Solution
Top Contributor | Platinum Partner
Top Contributor | Platinum Partner

Blog listing page doesn't show full post count when excluding certain tags

SOLVE

@MattOnce Consider doing a custom pagination calculation exlcuding the tag "Coming soon" too. 

 

You see contents.total_page_count is calculating the total page count with all blog posts including those tagged "Coming soon".

Martin Angeletti
HubSpot Consultant | Technical and Operational Specialist

Did my post help answer your question? Help the community: mark this as a solution.

0 Upvotes
MattOnce
Contributor

Blog listing page doesn't show full post count when excluding certain tags

SOLVE

Thank you, @mangelet , that sounds like exactly what I should do. Can you advice what code I might use to create a new page_count variable that excludes "Coming Soon"?

I assume I would need to set a variable that increments based on an if topic != "coming soon" statement, then divide it by the number of posts per page (15)?

 

Thanks again

0 Upvotes