ក្រោយទំព័រស្តាទិកត្រូវបានបង្កើតរួចហើយ យើងអាចស្រង់យកទំព័រទាំងនោះមកបង្ហាញនៅផ្នែកខាងក្រោមនៃទំព័រគ្រប់គ្រងអាស្រ័យទៅតាមចំនួនកំណត់សំរាប់ទំព័រនិមួយៗ។ ការស្រង់យកទិន្នន័យនៃទំព័រស្តាទិកអាចត្រូវធ្វើឡើងតាមវិធីច្រើនរបៀប យើងអាចប្រើរបៀបស្រង់យកទិន្នន័យនៃទំព័រនេះនៅក្នុងឯកសារ index.astro នៅក្នុងថត src/pages/admin/page ។
<!--src/pages/admin/page/index.astro-->
---
import Base from "../../../layouts/admin/Base.astro"
import Page from "../../../layouts/admin/Page.astro"
const { userAuth, prisma, setting } = Astro.locals
if(!userAuth?.userId){ return Astro.redirect('/login') }
import page from "../../../data/page.js"
const total = await page.count({prisma})
const numberPage = Math.ceil(total/setting.adminItems)
const currentPage = Astro.url.searchParams.get('page') || ''
const pagination = {total, numberPage, currentPage}
if(currentPage){
var items = await page.paginate({prisma, currentPage}, setting.adminItems)
}else{
var items = await page.getItems({prisma}, setting.adminItems)
}
const pages = items.map((page)=>{page.date = new Date(page.date).toLocaleDateString('it-IT')
return page })
---
<Base pageTitle="ទំព័រស្តាទិក" pagination={pagination} items={pages} type="page">
<Page/>
</Base>
// src/data/page.js
class Page{
async count(req, query={}){
return await req.prisma.page.count(query)
}
async create(req){
const new_page = {
title: req.body.title,
content: req.body.content,
thumb: req.body.thumb,
date: req.body.datetime,
}
await req.prisma.page.create({ data: new_page })
}
async delete(req){
await req.prisma.page.delete({ where: {id: req.params.id } })
}
async getItems(req, amount){
return await req.prisma.page.findMany({
take: amount,
orderBy: [{ date: "desc" }, { id: "desc" }]
})
}
async paginate(req, amount){
const pages = await req.prisma.page.findMany({
orderBy: [{ date: "desc" }, { id: "desc" }],
skip: amount * (parseInt(req.currentPage) - 1),
take: amount
})
return pages
}
}
export default new Page()
Netlify: https://khmerweb-dynamic-blog.netlify.app/admin/page