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 |
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.