getPaginate: function() {
let pages = []
// 最大ページ数から1引いた半分の数値をstartとendにセットする
let start = parseInt(this.page) - (parseInt(this.pageMax - 1)/2);
let end = parseInt(this.page) + (parseInt(this.pageMax - 1)/2);
// startが1未満だった時はstartを1にしてendを最大ページ数にする
if (start <= 0) {
end = this.pageMax
start = 1
}
// endがpageTotal以上だった時はendをpageTotalにして
// startを合計ページから最大ページ数-1個分戻った値にする
if(this.pageTotal <= end){
end = this.pageTotal
start = parseInt(this.pageTotal) - parseInt(this.pageMax - 1)
}
// ループしてpagesにページ番号を挿入する
for(let i =start; i<=end; i++){
pages.push(i)
}
return pages
},
表示ページ数(this.pageMax)、現在のページ(this.page)、合計ページ数(this.pageTotal)の3つの値で判定します。現在のページを真ん中にするためには、this.pageMaxは3以上の奇数である必要があります。厳密にはGoogleのページャーとは違いますが、ぽいやつが作りたい方はどうぞ。JAVASCRIPTで書いてますが、PHPやRubyでも同じロジックでいけると思います。