ជាទូទៅ នៅ​លើ​ទំព័រ​ដើម គេ​និយម​​បង្កើត​ផ្ទាំង​ផ្សេងៗ ក្នុងគោលបំណង​តុបតែង​រចនា​បង្ហាញ​នូវ​ការផ្សាយ​ចុង​ក្រោយ ការផ្សាយ​តាម​ជំពូកនិមួយ​ៗ និង​ការផ្សាយ​វិដេអូ​បន្តផ្ទាល់​ជា​ដើម​។ សំរាប់​គេហទំព័រ Astro របស់​យើង យើង​អាច​បង្កើត​ផ្ទាំង​មួយ​បង្ហាញ​ការផ្សាយ​ចុង​ក្រោយ (latest post) ចំនួន​ប្រាំ​។ ការផ្សាយ​ចុង​ក្រោយ​ចំនួន​ពីរ​នឹង​ត្រូវ​បង្ហាញ​រូបភាព​ធំ​ជាង​គេ និង​ការផ្សាយ​ចំនួន​បី​បន្ទាប់​មក​ទៀត​នឹង​បង្ហាញ​រូបភាព​មាន​ទំហំ​ធំ​ល្មម​។ ផ្ទាំង​ការផ្សាយ​ពាណិជ្ជកម្ម នឹង​ត្រូវ​នៅ​ខាង​ក្រោម​ផ្ទាំង​ការផ្សាយចុង​ក្រោយ​។

 

ផ្ទាំង​ការផ្សាយ​ចុង​ក្រោយ​អាចត្រូវ​បង្កើត​ឡើង​នៅ​លើ​ទំព័រ​ដើម​ផ្ទាល់​​ក៏​បាន នៅ​ក្នុង​សមាសភាគ​ណា​មួយ​ក៏​បាន​។ ដើម្បី​អោយ​ងាយ​ស្រួល​ក្នុង​ការសរសេរ​កូដ យើង​ត្រូវ​ជ្រើសរើស​យក​ការបង្កើតផ្ទាំង​នេះ​នៅ​ក្នុង​សមាសភាគ​ដាច់​តែ​ឯង​មួយ​​នៅ​ក្នុង​ថត src/components មុន​​នឹង​ត្រូវ​នាំ​ចូល​សមាសភាគ​​នេះ​ទៅ​ក្នុង​ទំព័រដើម​។

 

<!--src/components/Latest.astro-->
---
import { getCollection, getEntry } from 'astro:content'
const Posts = await getCollection('posts')
Posts.sort((a, b)=>b.data.pudate-a.data.pudate)
const posts = Posts.slice(0, 5)
---
<section class="Latest region">
    <div class="panel">
        {posts.map((post)=>(
            <a href=`/post/${post.slug}`>
                <img src={post.data.thumb} />
                <img class="play-icon" src="/images/play.png" />
                <div class="title">{post.data.title}</div>
            </a>
        ))}
    </div>
    <div class="ad">
        <img src="/images/ad.jpg" />
        <img src="/images/ad.jpg" />
    </div>
</section>

<style>
.Latest .panel{
    display: grid;
    grid-template-columns: repeat(6, auto);
    grid-gap: 10px;
    padding: 10px 0;
}
.Latest .panel a{
    position: relative;
    color: white;
    padding-top: 56.25%;
    overflow: hidden;
}
.Latest .panel img{
    position: absolute;
    width: 100%;
    min-height: 100%;
    top: 0;
    lef: 0;
}
.Latest .panel a:nth-child(1){
    grid-column: 1 / span 3;
}
.Latest .panel a:nth-child(2){
    grid-column: 4 / span 3;
}
.Latest .panel a:nth-child(3){
    grid-column: 1 / span 2;
}
.Latest .panel a:nth-child(4){
    grid-column: 3 / span 2;
}
.Latest .panel a:nth-child(5){
    grid-column: 5 / span 2;
}
.Latest .panel a .play-icon{
    width: auto;
    min-height: auto;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 15%;
}
.Latest .panel a .title{
    position: absolute;
    bottom: 0;
    font: 22px/1.5 Oswald, Bayon;
    padding: 5px 10px;
    text-shadow: 2px 2px 4px #000000;
    background: -webkit-linear-gradient(bottom, black,transparent);
    width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.Latest .panel a:nth-child(n+3) .title{
    font-size: 16px;
}
.Latest .ad{
    display: grid;
    grid-template-columns: auto auto;
    grid-gap: 10px;
}
.Latest .ad img{
    width: 100%;
}
@media only screen and (max-width: 600px){
    .Latest .panel{
        grid-template-columns: 100%;
        padding: 10px;
    }
    .Latest .panel a:nth-child(n){
        grid-column: 1 / span 1;
    }
    .Latest .ad{
        grid-template-columns: 100%;
        padding: 0 10px;
    }
    .Latest .panel a .title{
        font-size: 16px;
    }
}
</style>

 

<!--src/pages/index.astro-->
---
import Base from "../layouts/Base.astro"
import Latest from "../components/Latest.astro"
---

<Base pageTitle="ទំព័រ​ដើម" pageURL="/" >
    <Latest/>
</Base>

 

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

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