first commit
This commit is contained in:
77
src/app/(Web)/post/[slug]/page.js
Normal file
77
src/app/(Web)/post/[slug]/page.js
Normal file
@@ -0,0 +1,77 @@
|
||||
import { getPostBySlug } from "@/services/posts";
|
||||
import { getOrigin } from "@/models/helper";
|
||||
import { notFound } from "next/navigation";
|
||||
import { description as defaultDescription } from "@/config/default";
|
||||
import React from "react";
|
||||
import Script from "next/script";
|
||||
import RichContent from "@/components/web/RichContent/rich.content";
|
||||
import { getGeneralSettings } from "@/models/settings";
|
||||
|
||||
// generate metadata
|
||||
export async function generateMetadata({ params }) {
|
||||
const param = await params;
|
||||
const slug = param.slug;
|
||||
const post = await getPostBySlug(slug);
|
||||
|
||||
let description = await getGeneralSettings();
|
||||
|
||||
if (!description) description = defaultDescription;
|
||||
|
||||
return {
|
||||
title: post.metadata.title + " - " + description.title,
|
||||
description: post.metadata.description,
|
||||
openGraph: {
|
||||
title: post.metadata.title,
|
||||
description: post.metadata.description,
|
||||
images: post.metadata.imagedata.url,
|
||||
type: "article",
|
||||
tags: post.tags.map((tag) => tag.name),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
const PostContent = async ({ params }) => {
|
||||
const param = await params;
|
||||
const slug = param.slug;
|
||||
const post = await getPostBySlug(slug);
|
||||
const origin = await getOrigin();
|
||||
|
||||
if (!post) return notFound();
|
||||
|
||||
return (
|
||||
<>
|
||||
{/* JSON-LD */}
|
||||
<Script
|
||||
id="jsonld"
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: JSON.stringify(
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
headline: post.metadata.title,
|
||||
alternativeHeadline: post.title,
|
||||
image: post.metadata.imagedata.url,
|
||||
author: "Arena Wisata",
|
||||
keywords: post.tags.map((tag) => tag.name),
|
||||
url: origin,
|
||||
datePublihed: post.createdAt,
|
||||
dateCreated: post.createdAt,
|
||||
dateModified: post.modifiedAt,
|
||||
},
|
||||
null,
|
||||
2
|
||||
),
|
||||
}}
|
||||
/>
|
||||
|
||||
{/* Post Component */}
|
||||
<>
|
||||
{post.title}
|
||||
<RichContent html={post.content} />
|
||||
</>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default PostContent;
|
||||
Reference in New Issue
Block a user