Перейти к содержимому

Единственно верная пагинация

Статичным сайтам нужно делить длинную ленту с постами на отдельные стра­ницы — это назы­ва­ется паги­на­цией. Видов паги­нации есть только два: как у всех и правиль­ная. У Триремы правиль­ная.

Я подсмотрел её у https://grumpy.website/, поэтому позволю себе цитату Тонского, одного из авторов сайта, по теме.

«Обычно же как? Посты в блогах идут в обратном хроно­ло­ги­че­ском порядке, а стра­ницы в прямом. Т.е. самый последний пост ты видишь на первой стра­нице, одина­дцатый самый новый на условно второй, а самый старый пост на стра­нице 126, она же последняя (пока).

Про­блема? Ну содер­жание страниц плывет. Написал новый пост? Он попал на первую, а десятый пост уехал на вторую стра­ницу. Т.е. вторая стра­ница пока­зы­вала 11-20 посты (считая с конца), а теперь пока­зы­вает с 10-го по 19-ый. Как-­то, знаете, неком­фортно. Ни ссылку нормально не дать, ни в закладки поло­жить, ни из истории перейти, ни рефреш не сделать. Как книга, в которой посто­янно допи­сы­вают и вкле­и­вают стра­ницы в начало, а потом пере­ну­ме­ро­вы­вают вообще все.»

Созвучная проблема в названии файлов на сайте https://sprott.physics.wisc.edu/FRACTALS.HTM

Решение в том, чтобы самые старые посты держать на стра­нице с номером 1, самые свежие — на глав­ной, а чуть-­чуть завет­рив­шиеся — на N_max. Но возни­кает новая проблема: с такими прави­лами число постов на главной стра­нице будет скакать от единицы до, условно, X. А главная стра­ница с одним постом это позо­рище, а не глав­ная.

Грампи и Трирема держат на главной содер­жимое сразу двух страниц паги­нации — так там никогда не бывает меньше X+1 поста.

В ленте постов Триремы только превью с заго­ловком и кратким описа­нием, поэтому X, число записей на одной стра­нице, равно 25. Я уже было выставил 50, но пере­думал — отма­ты­вать до сотни превью вниз после внезап­ного рефреша врагу не поже­ла­ешь, не то, что чита­телю.

Кайф в том, что мои един­ственно верные пред­по­чтения для вас не должны играть никакой роли — вы всегда можете выста­вить X хоть в 5, хоть в 50, заменив пару чисел в pagination.njk и tag-pages.njk, поку­ме­кать над кодом и (о ужас!) вернуть непра­вильную паги­нацию или разо­браться, как вместо превью выво­дить содер­жимое постов цели­ком. Подсказка: renderContent(post.rawInput)

Весе­ли­тесь!