You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/command_line.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -205,6 +205,16 @@ Stats generation is **disabled by default**. Pass this flag to opt in.
205
205
blogmore build posts/ --with-stats
206
206
```
207
207
208
+
#### `--with-calendar`
209
+
210
+
Generate a calendar view of all posts. When set, BlogMore generates a `calendar.html` page (path configurable via the `calendar_path` configuration option) displaying the full history of the blog as a reverse-chronological year calendar. Days with posts link to the daily archive, months link to the monthly archive, and years link to the yearly archive. A **Calendar** link is added to the navigation bar automatically.
211
+
212
+
Calendar generation is **disabled by default**. Pass this flag to opt in.
213
+
214
+
```bash
215
+
blogmore build posts/ --with-calendar
216
+
```
217
+
208
218
#### `--with-read-time`
209
219
210
220
Show estimated reading time on each post. When enabled, BlogMore calculates the approximate time to read each post (based on 200 words per minute) and displays it next to the post date on all post listings and individual post pages.
Copy file name to clipboardExpand all lines: docs/configuration.md
+60Lines changed: 60 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -318,6 +318,30 @@ Generate a blog statistics page. When `true`, BlogMore generates a `/stats.html`
318
318
with_stats: true
319
319
```
320
320
321
+
#### `with_calendar`
322
+
323
+
Generate a calendar view of all posts. When `true`, BlogMore generates a `calendar.html` page (path configurable via [`calendar_path`](#calendar_path)) showing a full year-by-year calendar of the blog's history, from the date of the latest post back to the date of the first post. Days with posts link to the daily archive, months link to the monthly archive, and years link to the yearly archive. A **Calendar** link is automatically added to the navigation bar after **Stats** and before **RSS**.
324
+
325
+
**Type:** Boolean
326
+
**Default:** `false`
327
+
328
+
```yaml
329
+
with_calendar: true
330
+
```
331
+
332
+
#### `forward_calendar`
333
+
334
+
Control the ordering of the calendar generated by [`with_calendar`](#with_calendar). When `false` (the default), the calendar is displayed in reverse chronological order — newest year at the top, newest month first within each year, and day numbers counting down from right to left within each row. When `true`, the calendar runs in natural chronological order — oldest year at the top, oldest month first within each year, and day numbers increasing left to right (Monday first), like a traditional wall calendar.
335
+
336
+
This is a **configuration file only** option — it cannot be set on the command line. Only meaningful when [`with_calendar`](#with_calendar) is `true`.
337
+
338
+
**Type:** Boolean
339
+
**Default:** `false`
340
+
341
+
```yaml
342
+
forward_calendar: true
343
+
```
344
+
321
345
#### `with_read_time`
322
346
323
347
Show estimated reading time on each post. When enabled, BlogMore calculates the approximate time to read each post (based on the configured words-per-minute rate) and displays it next to the post date on all post listings and individual post pages.
@@ -691,6 +715,42 @@ clean_urls: true
691
715
692
716
This makes the stats page accessible at `/stats/` rather than `/stats/index.html`.
693
717
718
+
#### `calendar_path`
719
+
720
+
Path (relative to the output directory) where the calendar page is generated. This is a **configuration file only** option — it cannot be set on the command line. Only used when [`with_calendar`](#with_calendar) is `true`.
721
+
722
+
**Type:** String
723
+
**Default:** `calendar.html`
724
+
725
+
```yaml
726
+
calendar_path: "calendar.html"
727
+
```
728
+
729
+
##### How it works
730
+
731
+
The path is joined onto the `output` directory. Any intermediate subdirectories are created automatically.
732
+
733
+
The path is always treated as relative to the output directory root — a leading `/` is stripped automatically. So both `calendar/index.html` and `/calendar/index.html` produce the same output location.
734
+
735
+
When `clean_urls` is enabled and the path ends in `index.html`, the `index.html` portion is omitted in any URL reference to the calendar page (navigation links, canonical URL, etc.), so the page is accessible at the clean trailing-slash URL.
736
+
737
+
##### Examples
738
+
739
+
Default — calendar page at the site root:
740
+
741
+
```yaml
742
+
calendar_path: "calendar.html"
743
+
```
744
+
745
+
Calendar page in its own subdirectory with clean URLs:
746
+
747
+
```yaml
748
+
calendar_path: "calendar/index.html"
749
+
clean_urls: true
750
+
```
751
+
752
+
This makes the calendar page accessible at `/calendar/` rather than `/calendar/index.html`.
753
+
694
754
#### `page_1_path`
695
755
696
756
Output path template for the **first page** of any paginated listing (main index, year/month/day archives, tag pages, and category pages). This is a **configuration file only** option — it cannot be set on the command line.
Copy file name to clipboardExpand all lines: docs/index.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,6 +30,7 @@ BlogMore focuses on simplicity and efficiency in creating blog-focused websites.
30
30
-**XML sitemap** - Optional `sitemap.xml` generation for search engine indexing (enable with `--with-sitemap`)
31
31
-**Flexible URL scheme for posts** - Fully configurable post output paths and URLs via the `post_path` option; choose date-based paths, per-post directories, category-based layouts, and more
32
32
-**Blog statistics page** — Optional stats page with histograms, word counts, reading times, lifespan, top linked domains, and more
33
+
-**Calendar view** — Optional full-history year calendar view of all posts, with links to day, month, and year archives (enable with `--with-calendar`)
0 commit comments