Template Cookbook

Common templating patterns and Bengal-specific features

2 min read 337 words

Practical examples showing how to accomplish common tasks with Bengal's templating system.

Content Queries

Work with pages, sections, and taxonomies.

Example What You'll Learn
List Recent Posts where, sort_by, limitfilters
Group by Category group_byfilter, nested loops
Filter by Multiple Tags Chaining filters,inoperator
Archive Page group_by_year, group_by_monthfilters
Featured Posts section.featured_posts, highlighting content
Template Views EndpointView, SchemaView, TagViewnormalized objects

Page Features

Add features to individual pages.

Example What You'll Learn
Add Table of Contents page.toc, scroll highlighting
Show Reading Time page.reading_timeproperty and filter
Content Freshness age_days, age_months, "new" badges
Author Byline page.author, avatars, social links
Series Navigation prev_in_series, next_in_series
Social Sharing Buttons share_url(), platform share links
Section Statistics post_count, word_count, totals
Blog Comments params.comments, Giscus, Disqus, Utterances

Quick Reference

The Essentials

{# Get pages from a section #}
{% let posts = site.pages |> where('section', 'blog') %}

{# Sort by date, newest first #}
{% let recent = posts |> sort_by('date', reverse=true) %}

{# Limit to 5 #}
{% let latest = recent |> limit(5) %}

{# Or chain it all #}
{% let latest = site.pages
  |> where('section', 'blog')
  |> sort_by('date', reverse=true)
  |> limit(5) %}

Common Filters

Filter Purpose Example
where Filter by field pages |> where('draft', false)
sort_by Sort results pages |> sort_by('title')
limit Take first N pages |> limit(10)
group_by Group by field pages |> group_by('category')
first Get first item pages |> first

Both\|> (Kida pipeline) and \| (Jinja-style) work. Examples use \|>for consistency.

See Template Functions for the complete reference.

In This Section

Archive Page Create year and month archive pages for blog content
Author Byline Display author information with avatar and social links
Blog Comments Configure and integrate comments (Giscus, Disqus, Utterances) on blog posts
Content Freshness Show "new" badges and staleness warnings based on content age
Featured Posts Highlight featured content in sidebars and homepages
Group by Category Organize content into groups using Bengal's group_by filter
List Recent Posts Query and display recent content using Bengal's filters
Series Navigation Add prev/next navigation for multi-part tutorials and series
Show Reading Time Display estimated reading time using Bengal's reading_time filter
Template Views Use normalized View objects for consistent access to endpoints, schemas, and tags
Related Pages