diff --git a/client/src/hooks/use-page-meta.ts b/client/src/hooks/use-page-meta.ts index 2e64820..562b653 100644 --- a/client/src/hooks/use-page-meta.ts +++ b/client/src/hooks/use-page-meta.ts @@ -1,6 +1,7 @@ import { useEffect } from "react"; interface OgMeta { + siteName?: string; ogTitle?: string; ogDescription?: string; ogImage?: string; @@ -52,7 +53,7 @@ function setCanonical(href: string) { export function usePageMeta(title: string, description?: string, og?: OgMeta) { useEffect(() => { - const suffix = " | Folx Music Television"; + const suffix = ` | ${og?.siteName || "Folx Music Television"}`; document.title = title + suffix; if (description) { setMetaTag('meta[name="description"]', description); @@ -104,5 +105,5 @@ export function usePageMeta(title: string, description?: string, og?: OgMeta) { removeMetaTag('meta[property="article:author"]'); removeMetaTag('meta[property="article:section"]'); }; - }, [title, description, og?.ogTitle, og?.ogDescription, og?.ogImage, og?.ogType, og?.ogUrl, og?.articlePublishedTime, og?.articleAuthor, og?.articleSection]); + }, [title, description, og?.siteName, og?.ogTitle, og?.ogDescription, og?.ogImage, og?.ogType, og?.ogUrl, og?.articlePublishedTime, og?.articleAuthor, og?.articleSection]); } diff --git a/client/src/pages/category.tsx b/client/src/pages/category.tsx index ff62765..c82fdff 100644 --- a/client/src/pages/category.tsx +++ b/client/src/pages/category.tsx @@ -31,10 +31,20 @@ export default function CategoryPage({ fixedCategory }: { fixedCategory?: string const searchParams = new URLSearchParams(searchString); const currentPage = Math.max(1, parseInt(searchParams.get("page") || "1")); - usePageMeta( - `${category}${currentPage > 1 ? ` – Seite ${currentPage}` : ""} - Volksmusik & Schlager`, - `Aktuelle ${category}-Beiträge und Nachrichten aus der Volksmusik- und Schlagerszene. Neueste Volksmusik-Meldungen bei FOLX TV.` - ); + const isNews = category?.toLowerCase() === "news"; + const heading = isNews ? "Schlager & Volksmusik News" : category; + const pageSuffix = currentPage > 1 ? ` – Seite ${currentPage}` : ""; + const pageTitle = isNews ? `${heading}${pageSuffix}` : `${category}${pageSuffix} - Volksmusik & Schlager`; + const description = isNews + ? "Aktuelle Schlager & Volksmusik News: Nachrichten, Interviews und Neuigkeiten aus der Musikszene bei FOLX TV." + : `Aktuelle ${category}-Beiträge und Nachrichten aus der Volksmusik- und Schlagerszene. Neueste Volksmusik-Meldungen bei FOLX TV.`; + + usePageMeta(pageTitle, description, isNews ? { + siteName: "FOLX TV", + ogTitle: `${pageTitle} | FOLX TV`, + ogDescription: description, + ogType: "website", + } : undefined); const { data, isLoading } = useQuery({ queryKey: ["/api/articles/category", category, { page: currentPage }], @@ -127,8 +137,8 @@ export default function CategoryPage({ fixedCategory }: { fixedCategory?: string
-

- {category} +

+ {heading}

{data && data.total > 0 && ( diff --git a/server/static.ts b/server/static.ts index 4276f98..31f08c0 100644 --- a/server/static.ts +++ b/server/static.ts @@ -402,8 +402,14 @@ export function serveStatic(app: Express) { return; } const catUrl = `${canonicalBase}/category/${encodeURIComponent(cat)}`; - const catTitle = `${cat} – Volksmusik & Schlager | Folx Music Television`; - const catDesc = `Alle Beiträge aus der Rubrik ${cat} bei FOLX TV: aktuelle Meldungen, Interviews und Videos aus Volksmusik und Schlager.`; + const isNews = cat.toLowerCase() === "news"; + const catHeading = isNews ? "Schlager & Volksmusik News" : cat; + const catTitle = isNews + ? `${catHeading} | FOLX TV` + : `${cat} – Volksmusik & Schlager | Folx Music Television`; + const catDesc = isNews + ? "Aktuelle Schlager & Volksmusik News: Nachrichten, Interviews und Neuigkeiten aus der Musikszene bei FOLX TV." + : `Alle Beiträge aus der Rubrik ${cat} bei FOLX TV: aktuelle Meldungen, Interviews und Videos aus Volksmusik und Schlager.`; const firstImg = ogImageUrl(list[0]?.coverImage || "", canonicalBase) || `${canonicalBase}/og-image.jpg`; const itemLd = { "@context": "https://schema.org", @@ -445,7 +451,7 @@ export function serveStatic(app: Express) { } const ssr = [ '
', - `

${escapeHtml(cat)}

`, + `

${escapeHtml(catHeading)}

`, "
    ", ...list.map((a: any) => { const img = ogImageUrl(a.coverImage || "", canonicalBase);