Improve website content and fix navigation issues

Update website meta tags, SEO information, and fix a banner overlay bug to ensure all interactive elements are clickable.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 23852c00-4779-460a-9e0c-d09fee4b6c92
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 60ed045f-57e0-4c65-bc71-4205e0064bbb
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/f209e72a-0939-48fa-84fc-57854de71967/23852c00-4779-460a-9e0c-d09fee4b6c92/aNXfGlM
Replit-Helium-Checkpoint-Created: true
This commit is contained in:
sebastjanartic
2026-03-07 15:46:13 +00:00
parent 6c99a3fd4b
commit b320d8b601
23 changed files with 96 additions and 38 deletions
+24 -7
View File
@@ -31,11 +31,24 @@ function removeMetaTag(selector: string) {
if (el) el.remove();
}
const DEFAULT_TITLE = "Volksmusik & Schlager | Folx Music Television";
const DEFAULT_DESC = "FOLX TV – Ihr Fernsehsender für Volksmusik und Schlager. Musikvideos, Live-Shows, Interviews und aktuelle Nachrichten aus der Welt der volkstümlichen Musik. Jetzt einschalten!";
const DEFAULT_OG_TITLE = "Volksmusik & Schlager | Folx Music Television";
const DEFAULT_OG_DESC = "FOLX TV – Ihr Fernsehsender für Volksmusik und Schlager. Musikvideos, Live-Shows und aktuelle Nachrichten aus der volkstümlichen Musikszene.";
const DEFAULT_TITLE = "Volksmusik & Schlager TV | FOLX Music Television – Nachrichten, Videos & mehr";
const DEFAULT_DESC = "FOLX TV – Ihr Fernsehsender Nr. 1 für Volksmusik und Schlager. Aktuelle Nachrichten, Musikvideos, Künstlerporträts, Live-Shows und Interviews aus der Welt der volkstümlichen Musik. Jetzt einschalten!";
const DEFAULT_OG_TITLE = "Volksmusik & Schlager TV | FOLX Music Television";
const DEFAULT_OG_DESC = "FOLX TV – Ihr Fernsehsender Nr. 1 für Volksmusik und Schlager. Aktuelle Nachrichten, Musikvideos, Künstlerporträts und Live-Shows.";
const DEFAULT_OG_IMAGE = "https://folx.tv/og-image.jpg";
const CANONICAL_BASE = "https://folx.tv";
function setCanonical(href: string) {
let link = document.querySelector('link[rel="canonical"]') as HTMLLinkElement;
if (link) {
link.href = href;
} else {
link = document.createElement("link");
link.rel = "canonical";
link.href = href;
document.head.appendChild(link);
}
}
export function usePageMeta(title: string, description?: string, og?: OgMeta) {
useEffect(() => {
@@ -44,6 +57,12 @@ export function usePageMeta(title: string, description?: string, og?: OgMeta) {
if (description) {
setMetaTag('meta[name="description"]', description);
}
const canonicalPath = og?.ogUrl || `${CANONICAL_BASE}${window.location.pathname}`;
const canonicalUrl = canonicalPath.startsWith("http") ? canonicalPath : `${CANONICAL_BASE}${canonicalPath}`;
setCanonical(canonicalUrl);
setMetaTag('meta[property="og:url"]', canonicalUrl);
if (og) {
if (og.ogTitle) setMetaTag('meta[property="og:title"]', og.ogTitle);
if (og.ogDescription) setMetaTag('meta[property="og:description"]', og.ogDescription);
@@ -53,9 +72,6 @@ export function usePageMeta(title: string, description?: string, og?: OgMeta) {
setMetaTag('meta[name="twitter:image"]', og.ogImage);
}
if (og.ogType) setMetaTag('meta[property="og:type"]', og.ogType);
if (og.ogUrl) {
setMetaTag('meta[property="og:url"]', og.ogUrl);
}
setMetaTag('meta[name="twitter:title"]', og.ogTitle || title + suffix);
setMetaTag('meta[name="twitter:description"]', og.ogDescription || description || DEFAULT_OG_DESC);
@@ -82,6 +98,7 @@ export function usePageMeta(title: string, description?: string, og?: OgMeta) {
setMetaTag('meta[name="twitter:image"]', DEFAULT_OG_IMAGE);
setMetaTag('meta[property="og:type"]', "website");
setMetaTag('meta[property="og:url"]', "https://folx.tv/");
setCanonical("https://folx.tv/");
removeMetaTag('meta[property="article:published_time"]');
removeMetaTag('meta[property="article:modified_time"]');
removeMetaTag('meta[property="article:author"]');