admin

I'm a Full-stack developer

Tag

Part 5: Creating a Tag List Page on Ghost CMS
Published date: 17/06/2023

In this article, I will show you how to create a Tag list page using the Casper theme.


Create a file in the theme folder



  • Create a custom-tags.hbs file with the following content
{{!< default}}
{{!-- The tags above means: insert everything in this file
into the {body} tag of the default.hbs template --}}

{{#post}}
{{!-- Everything inside the #post block pulls data from the post --}}

<main id="site-main" class="site-main outer">
    <div class="inner article posts tags">
        <h1 class="article-title">{{title}}</h1>

        <div class="tags-title-description">
            {{content}}
        </div>
        
       <div class="post-feed">
            {{#get 'tags' limit='all' include='count.posts' order='count.posts desc'}}
                {{#foreach tags}}
                        
                    {{> "tag-card"}}
                    
                {{/foreach}}
            {{/get}}
        </div>
    </div>
</main>

{{/post}}




  • Create file partials/tag-card.hbs
{{!-- This is a partial file used to generate a tag "card"
which templates loop over to generate a list of tags. --}}

<article class="post-card tag-card">

    {{#if feature_image}}
    <a class="post-card-image-link" href="{{url}}">
        {{!-- This is a responsive image, it loads different sizes depending on device
        https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
        <img class="post-card-image"
            {{!-- srcset="{{img_url feature_image size="s"}} 300w,
                    {{img_url feature_image size="m"}} 600w,
                    {{img_url feature_image size="l"}} 1000w,
                    {{img_url feature_image size="xl"}} 2000w" --}}
            sizes="(max-width: 1000px) 400px, 800px"
            src="{{img_url feature_image size="m"}}"
            alt="{{#if feature_image_alt}}{{feature_image_alt}}{{else}}{{title}}{{/if}}"
            loading="lazy"
        />
    </a>
    {{/if}}

    <a class="tag tag-card-content" href="{{url}}">
        <div class="post-card-content">
            <header class="post-card-header">
                <div class="tag-card-content-post-count">{{ count.posts }} POST</div>
                <h2 class="post-card-title tag-card-content-title">{{name}}</h2>
            </header>
        </div>{{!--/.post-card-content--}}
    </a>

</article>


Create static page tags



  • URL should be tags
  • Select the new theme created in the above step
  • Publish page


Achievement


I wish you make the tag list page as desired!!!

Recommend

TypeScript Design Pattern - Proxy
admin11/08/2023

TypeScript Design Pattern - Proxy
Provide a surrogate or placeholder for another object to control access to it.
How to secure your API gateway
admin17/04/2024

How to secure your API gateway
In this blog, I will cover the 6 methods that technology leaders need to incorporate to secure and protect APIs.
Flutter push notification
admin14/06/2023

Flutter push notification
Welcome everyone, in this article, we will implement flutter push notification through APNs (Apple Push Notification Service) and FCM (Firebase Cloud Message), and manage messages sent using AWS SNS (Amazon Simple Notification Service).
Newest

How to secure your API gateway
admin17/04/2024

How to secure your API gateway
In this blog, I will cover the 6 methods that technology leaders need to incorporate to secure and protect APIs.
Writing a Data Transformation Pipeline Using Go
admin20/03/2024

Writing a Data Transformation Pipeline Using Go
In this article, I will show how to implement data processing using the Go programing language with a simple tutorial.
TypeScript Design Pattern - Prototype
admin07/08/2023

TypeScript Design Pattern - Prototype
The prototype pattern is one of the Creational pattern groups. The responsibility is to create a new object through clone the existing object instead of using the new key. The new object is the same as the original object, and we can change its property does not impact the original object.