Seo, poprawki treści

This commit is contained in:
dm
2025-11-21 06:30:16 +01:00
parent 5b4d8f0654
commit dafe9deaa6
3 changed files with 109 additions and 24 deletions

View File

@@ -1,16 +1,17 @@
title: "FUZ Internet i telewizja w Twojej okolicy" site:
description: "Lokalny operator internetu i telewizji. Nowoczesny światłowód i radio, realny serwis i szybkie wsparcie." name: "FUZ Internet światłowodowy i radiowy w Wyszkowie"
canonical: "/" description: "Stabilny i szybki internet"
image: "/og/fuz-home.png"
keywords:
- internet
- światłowód
- telewizja
- lokalny operator
schema:
"@context": "https://schema.org"
"@type": "Organization"
name: "FUZ"
url: "https://www.fuz.pl" url: "https://www.fuz.pl"
sameAs: lang: "pl"
- "https://www.facebook.com"
company:
name: "FUZ Adam Rojek"
phone: "+48 (29) 643 80 55"
email: "biuro@fuz.pl"
street: "ul. Świętojańska 46"
city: "Wyszków"
postal: "07-200"
country: "PL"
lat: 52.597385
lon: 21.456797
logo: "/images/logo-fuz.webp"

View File

@@ -0,0 +1,22 @@
sections:
- title: "Internet Światłowodowy"
image: "/images/section-fiber.jpg"
dimmed: true
button:
text: "Zobacz ofertę →"
url: "/internet-swiatlowod/"
content: |
Z naszym światłowodem zyskujesz nie tylko internet, ale przewagę — najwyższą jakość połączenia, która nigdy nie zwalnia.
Odkryj komfort technologii stworzonej do pracy, rozrywki i życia bez ograniczeń.
- title: "Internet Radiowy"
image: "/images/section-radiowy.jpg"
dimmed: true
button:
text: "Zobacz ofertę →"
url: "/internet-radiowy/"
content: |
Nowoczesna technologia radiowa gwarantuje stabilny internet o wysokiej wydajności tam, gdzie inne łącza nie mają szans.
To szybki start w świat cyfrowej pracy i rozrywki — bez konieczności instalacji kabli.

View File

@@ -1,42 +1,104 @@
--- ---
import yaml from "js-yaml";
import fs from "fs";
const { seo } = Astro.props; const { seo } = Astro.props;
// Load global SEO config
const globalSeo = yaml.load(
fs.readFileSync("./src/content/seo/home.yaml", "utf8")
);
const { site, company } = globalSeo;
const { const {
title = "FUZ", title = site.name,
description = "Lokalny operator internetu i telewizji.", description = site.description,
canonical = "/", url = "/",
image = "/og/default.png", image = site.logo,
keywords = [], keywords = [],
schema = {} schema = {}
} = seo ?? {}; } = seo ?? {};
---
const canonical = site.url + url;
/* PREPARE JSON-LD AS SAFE STRINGS */
const schemaWebsite = JSON.stringify({
"@context": "https://schema.org",
"@type": "WebSite",
"url": site.url,
"name": site.name,
"potentialAction": {
"@type": "SearchAction",
"target": site.url + "/wyszukiwarka?query={search_term_string}",
"query-input": "required name=search_term_string"
}
});
const schemaLocalBusiness = JSON.stringify({
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": company.name,
"image": site.url + company.logo,
"telephone": company.phone,
"email": company.email,
"address": {
"@type": "PostalAddress",
"streetAddress": company.street,
"addressLocality": company.city,
"postalCode": company.postal,
"addressCountry": company.country
},
"geo": {
"@type": "GeoCoordinates",
"latitude": company.lat,
"longitude": company.lon
},
"url": site.url
});
/* Extra schema if passed from page */
const schemaExtra = Object.keys(schema).length > 0
? JSON.stringify(schema)
: null;
---
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>{title}</title> <title>{title}</title>
<meta name="description" content={description} /> <meta name="description" content={description} />
{keywords.length > 0 && ( {keywords.length > 0 && (
<meta name="keywords" content={keywords.join(", ")} /> <meta name="keywords" content={keywords.join(", ")} />
)} )}
<link rel="canonical" href={canonical} /> <link rel="canonical" href={canonical} />
<!-- OG -->
<meta property="og:type" content="website" /> <meta property="og:type" content="website" />
<meta property="og:title" content={title} /> <meta property="og:title" content={title} />
<meta property="og:description" content={description} /> <meta property="og:description" content={description} />
<meta property="og:url" content={canonical} />
<meta property="og:site_name" content={site.name} />
<meta property="og:image" content={image} /> <meta property="og:image" content={image} />
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content={title} /> <meta name="twitter:title" content={title} />
<meta name="twitter:description" content={description} /> <meta name="twitter:description" content={description} />
<meta name="twitter:image" content={image} /> <meta name="twitter:image" content={image} />
{Object.keys(schema).length > 0 && ( <!-- JSON-LD (Website) -->
<script type="application/ld+json"> <script type="application/ld+json">{schemaWebsite}</script>
{JSON.stringify(schema)}
</script> <!-- JSON-LD (LocalBusiness) -->
<script type="application/ld+json">{schemaLocalBusiness}</script>
<!-- Optional per-page schema -->
{schemaExtra && (
<script type="application/ld+json">{schemaExtra}</script>
)} )}
<slot /> <slot />