feat(meta): let articles meta override default

This commit is contained in:
minhtrannhat 2025-02-25 17:47:38 -05:00
parent 20547513b6
commit 12b48ac6fc
Signed by: minhtrannhat
GPG Key ID: E13CFA85C53F8062
5 changed files with 44 additions and 9 deletions

View File

@ -3,18 +3,11 @@ import { FileRoutes } from "@solidjs/start/router";
import { Suspense } from "solid-js"; import { Suspense } from "solid-js";
import "./app.css"; import "./app.css";
import { Layout } from "./components/Layout"; import { Layout } from "./components/Layout";
import { MetaProvider, Title, Meta } from "@solidjs/meta"; import { MetaProvider } from "@solidjs/meta";
export default function App() { export default function App() {
return ( return (
<MetaProvider> <MetaProvider>
<Title>minhtran_dev</Title>
<Meta property="og:title" content="minhtran_dev" />
<Meta property="og:description" content="just trying my best :)" />
<Meta property="og:image" content="/og.png" />
<Meta property="og:image:alt" content="minhtran_dev site" />
<Meta property="og:image:width" content="1200" />
<Meta property="og:image:height" content="630" />
<Router <Router
root={(props) => { root={(props) => {
return ( return (

View File

@ -1,14 +1,25 @@
import { For } from "solid-js"; import { For } from "solid-js";
import Experience from "../components/Experience"; import Experience from "../components/Experience";
import { Title, Meta } from "@solidjs/meta";
const links = [ const links = [
"https://github.com/minhtrannhat", "https://github.com/minhtrannhat",
"https://linkedin.com/in/minh-tran-nhat", "https://linkedin.com/in/minh-tran-nhat",
"https://git.minhtrannhat.com/explore/repos", "https://git.minhtrannhat.com/explore/repos",
]; ];
const Homepage = () => { const Homepage = () => {
return ( return (
<div> <div>
<Title>minhtran_dev</Title>
<Meta property="og:title" content="minhtran_dev" />
<Meta property="og:description" content="just trying my best :)" />
<Meta property="og:image" content="/og.png" />
<Meta property="og:image:alt" content="minhtran_dev site" />
<Meta property="og:image:width" content="1200" />
<Meta property="og:image:height" content="630" />
<section class="mx-4 flex flex-col sm:flex-row gap-2v sm:gap-3h"> <section class="mx-4 flex flex-col sm:flex-row gap-2v sm:gap-3h">
<div class="font-medium"> <div class="font-medium">
<div class="text-nord-1 flex items-end mb-1v gap-1h"> <div class="text-nord-1 flex items-end mb-1v gap-1h">

View File

@ -1,11 +1,20 @@
import { posts } from "~/data/posts"; import { posts } from "~/data/posts";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { Title, Meta } from "@solidjs/meta";
import { For } from "solid-js"; import { For } from "solid-js";
const Articles = () => { const Articles = () => {
return ( return (
<div> <div>
<Title>minhtran_dev - Articles</Title>
<Meta property="og:title" content="minhtran_dev Articles" />
<Meta property="og:description" content="My articles" />
<Meta property="og:image" content="/og.png" />
<Meta property="og:image:alt" content="minhtran_dev site" />
<Meta property="og:image:width" content="1200" />
<Meta property="og:image:height" content="630" />
<ol class="flex flex-col gap-1v list-square ml-2h"> <ol class="flex flex-col gap-1v list-square ml-2h">
<For each={Object.values(posts)}> <For each={Object.values(posts)}>
{(post) => ( {(post) => (

View File

@ -27,6 +27,17 @@ const Blog = (props: RouteSectionProps<unknown>) => {
<Meta name="og:title" content={meta().title} /> <Meta name="og:title" content={meta().title} />
<Meta name="description" content={meta().description} /> <Meta name="description" content={meta().description} />
<Meta name="og:description" content={meta().description} /> <Meta name="og:description" content={meta().description} />
<Meta property="og:type" content="article" />
<Meta
property="og:url"
content={`https://minhtranhat.com/blog/${meta()?.slug}`}
/>
<Meta property="og:image" content="/og.png" />
<Meta property="og:image:alt" content="minhtran_dev site" />
<Meta property="og:image:width" content="1200" />
<Meta property="og:image:height" content="630" />
<Show when={meta().featuredImage}> <Show when={meta().featuredImage}>
<PostImage <PostImage
@ -35,6 +46,7 @@ const Blog = (props: RouteSectionProps<unknown>) => {
alt={meta().featuredImageDesc || ""} alt={meta().featuredImageDesc || ""}
/> />
</Show> </Show>
<h1 class="text-2v leading-2 font-bold mb-1v">{meta().title}</h1> <h1 class="text-2v leading-2 font-bold mb-1v">{meta().title}</h1>
<div class="flex items-center gap-4h mb-2v text-sm leading-1"> <div class="flex items-center gap-4h mb-2v text-sm leading-1">

View File

@ -1,5 +1,6 @@
import { For } from "solid-js"; import { For } from "solid-js";
import { tags } from "~/data/tags"; import { tags } from "~/data/tags";
import { Title, Meta } from "@solidjs/meta";
/* /*
* Code from andii.dev * Code from andii.dev
@ -7,6 +8,15 @@ import { tags } from "~/data/tags";
const Tags = () => { const Tags = () => {
return ( return (
<div> <div>
<Title>minhtran_dev - Article Tags</Title>
<Meta property="og:title" content="minhtran_dev Article Tags" />
<Meta property="og:description" content="Tags for my articles" />
<Meta property="og:image" content="/og.png" />
<Meta property="og:image:alt" content="minhtran_dev site" />
<Meta property="og:image:width" content="1200" />
<Meta property="og:image:height" content="630" />
<h1 class="text-xl text-nord-1 font-bold mt-1v mb-1v">All tags:</h1> <h1 class="text-xl text-nord-1 font-bold mt-1v mb-1v">All tags:</h1>
<ol class="flex flex-col gap-1v list-square ml-2h"> <ol class="flex flex-col gap-1v list-square ml-2h">
<For each={Object.values(tags)}> <For each={Object.values(tags)}>