Improve article sharing by fixing social media meta tags
Update server-side logic to correctly generate and inject Open Graph and other meta tags into article pages, ensuring proper display when shared on social media platforms. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 1f7e7e89-a520-4970-9645-37daadc466dc Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 0a4811bf-53e2-4a6e-a40f-fe121e0e4c0d Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/f209e72a-0939-48fa-84fc-57854de71967/1f7e7e89-a520-4970-9645-37daadc466dc/NJvOVoB Replit-Helium-Checkpoint-Created: true
This commit is contained in:
parent
0f6cb7256d
commit
fdbf431d36
File diff suppressed because it is too large
Load Diff
@ -44,23 +44,28 @@ export function serveStatic(app: Express) {
|
||||
|
||||
let template = await fs.promises.readFile(indexPath, "utf-8");
|
||||
|
||||
const finalImage = imageUrl || `${baseUrl}/og-image.jpg`;
|
||||
const ogTags = [
|
||||
`<meta property="og:title" content="${escapeHtml(article.title)}" />`,
|
||||
`<meta property="og:description" content="${escapeHtml(article.excerpt)}" />`,
|
||||
`<meta property="og:type" content="article" />`,
|
||||
`<meta property="og:url" content="${escapeHtml(articleUrl)}" />`,
|
||||
`<meta property="og:image" content="${escapeHtml(imageUrl || `${baseUrl}/og-image.jpg`)}" />`,
|
||||
`<meta property="og:image" content="${escapeHtml(finalImage)}" />`,
|
||||
`<meta property="og:image:width" content="1200" />`,
|
||||
`<meta property="og:image:height" content="630" />`,
|
||||
`<meta property="og:site_name" content="Folx Music Television" />`,
|
||||
`<meta name="twitter:card" content="summary_large_image" />`,
|
||||
`<meta name="twitter:title" content="${escapeHtml(article.title)}" />`,
|
||||
`<meta name="twitter:description" content="${escapeHtml(article.excerpt)}" />`,
|
||||
`<meta name="twitter:image" content="${escapeHtml(imageUrl || `${baseUrl}/og-image.jpg`)}" />`,
|
||||
`<meta name="twitter:image" content="${escapeHtml(finalImage)}" />`,
|
||||
`<meta name="description" content="${escapeHtml(article.excerpt)}" />`,
|
||||
`<title>${escapeHtml(article.title)} - Volksmusik & Schlager | Folx Music Television</title>`,
|
||||
].filter(Boolean).join("\n ");
|
||||
`<title>${escapeHtml(article.title)} - Folx Music Television</title>`,
|
||||
].join("\n ");
|
||||
|
||||
template = template.replace(/<meta property="og:[^"]*"[^>]*\/>\s*/g, "");
|
||||
template = template.replace(/<title>.*?<\/title>/, ogTags);
|
||||
template = template.replace(/<meta property="og:[^>]*>\s*/g, "");
|
||||
template = template.replace(/<meta name="description"[^>]*>\s*/g, "");
|
||||
template = template.replace(/<meta name="twitter:[^>]*>\s*/g, "");
|
||||
template = template.replace(/<title>[^<]*<\/title>/, ogTags);
|
||||
|
||||
res.status(200).set({ "Content-Type": "text/html" }).end(template);
|
||||
return;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user