នៅ​លើ​ម៉ឺនុយ​នៃ​កម្មវិធីគេហទំព័រ​របស់​យើង ជំពូក​និមួយៗ​​ត្រូវ​បានភ្ជាប់ទៅ​នឹង​ផ្លូវ​​ណា​មួយ​និង​ទំព័រ​លេខ 1 មុន​រួច​ជា​ស្រេច ឧទាហរណ៍​ជាក់ស្តែង​ដូចជា​ម៉ឺនុយ រឿង​ខ្មែរ ត្រូវ​បាន​ភ្ជាប់​ទៅ​នឹង​ផ្លូវ /Khmer/1 ​ម៉ឺនុយ រឿងថៃ ត្រូវ​បាន​ភ្ជាប់​ទៅ​នឹង​ផ្លូវ /Thai/1 ជា​ដើម​។ ដើម្បី​ប្តូរ​ពណ៌​នៅ​លើ​ម៉ឺនុយ​និមួយ​ៗ នៅ​ពេល​ដែល​ម៉ឺនុយ​ទាំងនោះ​ត្រូវ​បាន​ចុច យើង​ចាំបាច់​ត្រូវ​ផ្តល់​ពណ៌មាន​ដែល​ជា​ប៉ារ៉ាម៉ែត category អោយ​ទៅ​ទំព័រ Base.astro ដែល​នឹង​បញ្ជូន​ព័តមាននេះ​​ជា​បន្តទៅ​ទៀត​អោយ​ទៅ​ទំព័រ Menu.astro ។ តែ​យើង​ក៏​ត្រូវ​សរសេរ​កូដ​បន្ថែម​មួយ​ចំនួនទៀត​នៅ​ក្នុង​ទំព័រ Menu.astro នេះ​ដែរ ដើម្បី​ដូរ​ពណ៌​របស់​ម៉ឺនុយ​នៅ​ពេល​ដែល​មាន​ការចុច​លើ​ម៉ឺនុយ​ណា​មួយ​។

 

<!--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>

 

<!--src/layouts/Menu.astro-->
---
const {pageURL} = Astro.props

let home = ''
let Khmer = ''
let Thai = ''
let Chinese = ''
let Korean = ''
let Documentary = ''

if(pageURL === '/'){
    home = 'active'
}else if(pageURL === 'Khmer'){
    Khmer = 'active'
}else if(pageURL === 'Thai'){
    Thai = 'active'
}else if(pageURL === 'Chinese'){
    Chinese = 'active'
}else if(pageURL === 'Korean'){
    Korean = 'active'
}else if(pageURL === 'Documentary'){
  Documentary = 'active'
}
---
<section class='menu'>
    <nav class="nav">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
        <div class="region">
            <div class="topnav" id="myTopnav">
                <a href="/" class=`home ${home}`>ទំព័រ​ដើម</a>
                <a href="/Khmer/1" class=`Khmer ${Khmer}`>រឿង​ខ្មែរ</a>
                <a href="/Thai/1" class=`Thai ${Thai}`>រឿង​ថៃ</a>
                <a href="/Chinese/1" class=`Chinese ${Chinese}`>រឿង​ចិន</a>
                <a href="/Korean/1" class=`Korean ${Korean}`>រឿង​កូរ៉េ</a>
                <a href="/Documentary/1" class=`Documentaty ${Documentary}`>​ឯកសារ</a>
                <a href="#contect" class="contact">ទំនាក់ទំនង</a>
                <a href="#about" class="about">អំពីយើង​ខ្ញុំ</a>
                <a href="javascript:void(0);" class="icon" onclick="myFunction()">
                    <i class="fa fa-bars"></i>
                </a>
            </div>
        </div>
    </nav>
    <script is:inline>
        function myFunction() {
            var x = document.getElementById("myTopnav");
            if (x.className === "topnav") {
                x.className += " responsive";
            } else {
                x.className = "topnav";
            }
        }
    </script>        
</section>

<style>
nav{
    background-color: rgb(189, 59, 11);
}

.topnav {
    background-color: rgb(189, 59, 11);
    overflow: hidden;
  }
  
  .topnav a {
    float: left;
    display: block;
    color: #f2f2f2;
    text-align: center;
    padding: 9px 16px;
    text-decoration: none;
    font-size: 14px;
    
  }
  
  .topnav a:hover {
    background-color: var(--background-dark);
    color: white;
  }
  
  .topnav a.active {
    background-color: var(--background-dark);
    color: white;
  }
  
  .topnav .icon {
    display: none;
  }

@media screen and (max-width: 600px) {
    .topnav a:not(:first-child) {display: none;}
    .topnav a.icon {
      float: right;
      display: block;
    }
}
  
@media screen and (max-width: 600px) {
  .topnav.responsive {position: relative;}
  .topnav.responsive a.icon {
    position: absolute;
    right: 0;
    top: 0;
  }
  .topnav.responsive a {
    float: none;
    display: block;
    text-align: left;
  }
}
</style>

 

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

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