ចំពោះ​ការផ្សាយ​និមួយៗ ត្រូវ​គេ​និយមបែងចែក​តាម​ប្រភេទ​និងប្រធានបទ​របស់​វា ដោយ​កំណត់​ថា​ការផ្សាយ​ទាំងនោះ​ត្រូវ​ស្ថិត​នៅ​ក្នុង​ជំពូក​ណា​មួយ​ឬ​ច្រើន មាន​ដូចជា​ការផ្សាយ​ស្ថិត​ក្នុង​ជំពូក​រឿង​ភាគ​ថៃ ​ការផ្សាយ​ស្ថិត​ក្នុង​ជំពួក​រឿង​ភាគ​ខ្មែរ​ជាដើម​។ ជំពូក​និមួយ​ៗ ដែល​ភាសា​អង់គ្លេស​ហៅ​ថា 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  ​ទុក​សំរាប់​ប្រើការនៅ​ពេល​ក្រោយ​ទៀត​៕

 

Netlify: https://khmerweb-static-blog.netlify.app

GitHub: https://github.com/Sokhavuth/static-blog