Единственно верная пагинация
Статичным сайтам нужно делить длинную ленту с постами на отдельные страницы — это называется пагинацией. Видов пагинации есть только два: как у всех и правильная. У Триремы правильная.
Я подсмотрел её у https://grumpy.website/, поэтому позволю себе цитату Тонского, одного из авторов сайта, по теме.
«Обычно же как? Посты в блогах идут в обратном хронологическом порядке, а страницы в прямом. Т.е. самый последний пост ты видишь на первой странице, одинадцатый самый новый на условно второй, а самый старый пост на странице 126, она же последняя (пока).
Проблема? Ну содержание страниц плывет. Написал новый пост? Он попал на первую, а десятый пост уехал на вторую страницу. Т.е. вторая страница показывала 11-20 посты (считая с конца), а теперь показывает с 10-го по 19-ый. Как-то, знаете, некомфортно. Ни ссылку нормально не дать, ни в закладки положить, ни из истории перейти, ни рефреш не сделать. Как книга, в которой постоянно дописывают и вклеивают страницы в начало, а потом перенумеровывают вообще все.»

Решение в том, чтобы самые старые посты держать на странице с номером 1, самые свежие — на главной, а чуть-чуть заветрившиеся — на N_max. Но возникает новая проблема: с такими правилами число постов на главной странице будет скакать от единицы до, условно, X. А главная страница с одним постом это позорище, а не главная.
Грампи и Трирема держат на главной содержимое сразу двух страниц пагинации — так там никогда не бывает меньше X+1 поста.
В ленте постов Триремы только превью с заголовком и кратким описанием, поэтому X, число записей на одной странице, равно 25. Я уже было выставил 50, но передумал — отматывать до сотни превью вниз после внезапного рефреша врагу не пожелаешь, не то, что читателю.
Кайф в том, что мои единственно верные предпочтения для вас не должны играть никакой роли — вы всегда можете выставить X хоть в 5, хоть в 50, заменив пару чисел в pagination.njk
и tag-pages.njk
, покумекать над кодом и (о ужас!) вернуть неправильную пагинацию или разобраться, как вместо превью выводить содержимое постов целиком. Подсказка: renderContent(post.rawInput)
Веселитесь!