ចំពោះការផ្សាយនិមួយៗ ត្រូវគេនិយមបែងចែកតាមប្រភេទនិងប្រធានបទរបស់វា ដោយកំណត់ថាការផ្សាយទាំងនោះត្រូវស្ថិតនៅក្នុងជំពូកណាមួយឬច្រើន មានដូចជាការផ្សាយស្ថិតក្នុងជំពូករឿងភាគថៃ ការផ្សាយស្ថិតក្នុងជំពួករឿងភាគខ្មែរជាដើម។ ជំពូកនិមួយៗ ដែលភាសាអង់គ្លេសហៅថា category អាចត្រូវកំណត់ឡើងក្រោមហេតុផលផ្សេងៗ ហើយយើងអាចបង្កើតជំពូកមានចំនួនប៉ុន្មានក៏បានដែរ គឺអាស្រ័យទៅតាមសេចក្តីត្រូវការរបស់យើង។
ទាក់ទងនឹងបញ្ហានេះ កញ្ចប់ Astro ផ្តល់លទ្ធភាពអោយយើងអាចជ្រើសរើសយកបណ្តាការផ្សាយទាំងឡាយស្ថិតនៅក្នុងជំពូកណាមួយ តាមរយៈក្បួន getStaticPaths( ) សំរាប់ផ្លូវណាមួយ។ ដោយការផ្សាយស្ថិតនៅក្នុងជំពូកណាមួយនោះអាចមានចំនួនច្រើន ដូចនេះយើងចាំបាច់ត្រូវបែងចែកការផ្សាយទាំងនោះជាទំព័រដែលមានលេខរៀងចាប់ពី ១ ឡើងទៅ។ សរុបមក នៅពេលដែលយើងស្រង់យកទិន្នន័យនៃការផ្សាយទៅតាមជំពូកណាមួយ ប្រការនេះទាមទារអោយយើងកំណត់ពីប៉ារ៉ាម៉ែតនៃជំពូកនៃការផ្សាយដែលត្រូវជ្រើសរើសយកផង និងប៉ារ៉ាម៉ែតនៃលេខទំព័រសំរាប់ការផ្សាយទាំងនោះផង។
<!--src/pages/[category]/[page].astro-->
---
import Base from '../../layouts/Base.astro'
import { getCollection } from 'astro:content'
export async function getStaticPaths({ paginate }) {
const posts = await getCollection('posts')
posts.sort((a, b)=>b.data.pudate - a.data.pudate)
const categories = [...new Set(posts.map((post) => post.data.categories).flat())]
return categories.flatMap((category) => {
const filteredPosts = posts.filter((post) => post.data.categories.includes(category))
return paginate(filteredPosts, {
params: {category},
pageSize: 24
})
})
}
const {page} = Astro.props
const {category} = Astro.params
---
<Base pageTitle="ទំព័រជំពូក" pageURL={category} >
<p>{category}</p>
</Base>
នៅក្នុងកូដខាងលើនេះ ការស្រង់យកទិន្នន័យនៃការផ្សាយទៅតាមជំពូកផ្សេងៗ ត្រូវធ្វើឡើងនៅក្នុងឯកសារ [page].astro នៅក្នុងថត src/pages/[category] ។ ជាលទ្ធផល category និង page គឺជាប៉ារ៉ាម៉ែតចំនួនពីរត្រូវផ្តល់អោយទៅកម្មវិធី Astro ។ ប៉ារ៉ាម៉ែត category ជាឈ្មោះរបស់ជំពូកនៃការផ្សាយដែលត្រូវជ្រើសរើសយក ចំណែកឯប៉ារ៉ាម៉ែត page ជាលេខនៃទំព័ររាយនាមការផ្សាយ។ នៅលើ browser បើមានការសរសេរថា /Khmer/1 ពាក្យ “Khmer” នឹងជាជំពូកនៃការផ្សាយត្រូវជ្រើសរើសយក ហើយលេខ 1 នឹងជាលេខទំព័ររាយនាមការផ្សាយនៅក្នុងជំពូកនោះ។ ជាលទ្ធផល យើងអាចស្រង់យកទិន្នន័យ page, និង category ទុកសំរាប់ប្រើការនៅពេលក្រោយទៀត៕