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

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

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

Я подсмотрел её у 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)

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