Я использую HTML-шаблоны в Go для рендеринга виджета нумерации страниц.Я пытаюсь следовать примеру, как это сделать здесь: https://www.solodev.com/blog/web-design/adding-pagination-to-your-website.stml
Это мой код до сих пор:
// Item size like call 2 item from database
var pagesize = 2
var PaginationSize int = 6
Pagination := make([]int, PaginationSize)
for i := 0; i < PaginationSize; i++ {
if RequestPageNumber <= page {
Pagination[i] = i + 1
} else {
Pagination[i] = RequestPageNumber + i
}
// Make it active
if i == 0 {
Info.Pagination += template.HTML(fmt.Sprintf(`<li class="page-item active"><a class="page-link" href=?id=%v>%v</a></li>`,RequestPageNumber + i ,RequestPageNumber + i))
} else {
Info.Pagination += template.HTML(fmt.Sprintf(`<li class="page-item"><a class="page-link" href=?id=%v>%v</a></li>`,RequestPageNumber + i ,RequestPageNumber + i))
}
}
Я хотел бы улучшить это, сделав нумерацию страницОбновление списка только тогда, когда активная страница становится кратной PaginationSize
.Например, когда отображаемая нумерация страниц показывает
(1), 2, 3, 4, 5, 6
Если пользователь нажимает на 2, я хотел бы видеть
1, (2), 3, 4, 5, 6
Но мой текущий код отображает
(2), 3, 4, 5, 6, 7
После того, как страница перешла после 6, список страниц должен выглядеть следующим образом:
7, 8, 9, 10, 11, 12 ,13 ,14
Данные, заключенные в это представление разбиения на страницы, могут находиться в базе данных, поэтому я также буду признателен за советы о том, как это сделать.работать с базой данных, если возможно.
Спасибо.