forked from UKSOURCE/hailearning.edu.vn
feat: implement initial home page with dynamic content, API, and dedicated components.
This commit is contained in:
45
app/page.tsx
45
app/page.tsx
@@ -8,21 +8,42 @@ import FAQSection from './components/home/FAQSection';
|
||||
import Achievements from './components/home/Achievements';
|
||||
import Partners from './components/home/Partners';
|
||||
import BlogPreview from './components/home/BlogPreview';
|
||||
import homeData from './home.json';
|
||||
import localHomeData from './home.json';
|
||||
import { fetchHomeData } from '@/api';
|
||||
import { getCmsImageUrl } from '@/utils/image';
|
||||
|
||||
export default async function Home() {
|
||||
// Fetch home data (blog aggregation is now handled by the backend)
|
||||
const apiHomeData = await fetchHomeData();
|
||||
|
||||
// Use API home data if available, otherwise fallback to local JSON
|
||||
const data = JSON.parse(JSON.stringify(apiHomeData || localHomeData));
|
||||
|
||||
// Process Hero Image URL
|
||||
if (data.hero?.backgroundImage) {
|
||||
data.hero.backgroundImage = getCmsImageUrl(data.hero.backgroundImage);
|
||||
}
|
||||
|
||||
// Process blog images from CMS (thumbnail normalization)
|
||||
if (data.blogPreview?.items) {
|
||||
data.blogPreview.items = data.blogPreview.items.map((item: any) => ({
|
||||
...item,
|
||||
thumbnail: getCmsImageUrl(item.thumbnail) || '/assets/img/home-1/news/01.jpg'
|
||||
}));
|
||||
}
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<>
|
||||
<HeroSection data={homeData.hero} />
|
||||
<WhyChooseUs data={homeData.whyChooseUs} />
|
||||
<VisaSolutions data={homeData.visaSolutions} />
|
||||
<VisaCountries data={homeData.visaCountries} />
|
||||
<Testimonials data={homeData.testimonials} />
|
||||
<VideoGallery data={homeData.videoGallery} />
|
||||
<FAQSection data={homeData.faq} />
|
||||
<Achievements data={homeData.achievements} />
|
||||
<Partners data={homeData.partners} />
|
||||
<BlogPreview data={homeData.blogPreview} />
|
||||
<HeroSection data={data.hero} />
|
||||
<WhyChooseUs data={data.whyChooseUs} />
|
||||
<VisaSolutions data={data.visaSolutions} />
|
||||
<VisaCountries data={data.visaCountries} />
|
||||
<Testimonials data={data.testimonials} />
|
||||
<VideoGallery data={data.videoGallery} />
|
||||
<FAQSection data={data.faq} />
|
||||
<Achievements data={data.achievements} />
|
||||
<Partners data={data.partners} />
|
||||
<BlogPreview data={data.blogPreview} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user