Я сделал простую нумерацию страниц с предыдущими, последними первыми первыми кнопками и массивом всех страниц.
routes.js
// View users
router.get("/show/:page", function (req, res, next) {
var perPage = 3
var page = req.params.page || 1
User
.find({})
.skip((perPage * page) - perPage)
.limit(perPage)
.exec(function (err, users) {
User.countDocuments().exec(function (err, count) {
if (err) return next(err)
res.render('../modules/users/views/userList', {
layout: "cmsLayout",
users: users,
current: page,
pages: Math.ceil(count / perPage),
helpers,
pagesArr: Array.from(Array(((Math.ceil(count / perPage)))).keys()).map(i => 1 + i)
})
})
})
});
Рули
<!-- PAGINATION -->
<ul class="paginator">
{{#gt current 1}}
<li class="paginator-item">
<script></script>
<a href="{{minus current 1}}" class="paginator-itemLink">Prev</a>
</li>
{{else}}
<li class="paginator-item">
<a href="" class="paginator-itemLink">Prev</a>
</li>
{{/gt}}
<li class="paginator-item">
<a href="1" class="paginator-itemLink">1</a>
</li>
<li class="paginator-item">
<a href="" class="paginator-itemLink">...</a>
</li>
{{#each pagesArr}}
<li class="paginator-item">
<a href="{{this}}" class="paginator-itemLink">{{this}}</a>
</li>
{{/each}}
<li class="paginator-item">
<a href="" class="paginator-itemLink">...</a>
</li>
<li class="paginator-item">
<a href="{{pages}}" class="paginator-itemLink">{{pages}}</a>
</li>
{{#gt pages current}}
<li class="paginator-item">
<a href="{{add current 1}}" class="paginator-itemLink">Next</a>
</li>
{{else}}
<li class="paginator-item">
<a href="" class="paginator-itemLink">Next</a>
</li>
{{/gt}}
Вывод выглядит так
[предыдущая] [1] ... [1] [2] [3] [4] [5] [6] [7] ... [7] [следующая]
Ното, что я хочу сделать, это показать только 4 страницы, в то время как после активного номера есть только одна страница, и я не знаю как.
Примерно так
[prev] [1] ...[3] [4] [5] [6] ... [7] [следующий] // 5 активен
Спасибо за любые советы или решения.