feat: initial Hugo blog for internetforkids.ong

Child safety marketing blog with:
- First article: Global Child Protection Laws 2026 (EN/DE)
- Interactive world map (17 countries, TopoJSON)
- SEO: JSON-LD, OpenGraph, hreflang, canonical URLs
- AI search: robots.txt, llms.txt, FAQ sections
- VPN CTA shortcode, about pages, tag taxonomy
- Rybbit analytics partial (site ID TBD)
- Dockerfile + nginx.conf for deployment

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Christian Gick
2026-04-02 06:58:49 +03:00
commit bdd2da36d5
24 changed files with 971 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
{{ if .IsTranslated }}
<nav class="language-switcher" aria-label="Language">
{{ range .Translations }}
<a href="{{ .Permalink }}" lang="{{ .Language.Lang }}" hreflang="{{ .Language.Lang }}">
{{ .Language.LanguageName }}
</a>
{{ end }}
</nav>
{{ end }}

View File

@@ -0,0 +1,3 @@
{{ with site.Params.rybbit_site_id }}
<script src="{{ site.Params.rybbit_url }}/script.js" data-site-id="{{ . }}" defer></script>
{{ end }}

View File

@@ -0,0 +1,73 @@
{{ if .IsPage }}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "{{ .Title }}",
"description": "{{ .Description | default (.Summary | plainify) }}",
"datePublished": "{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}",
"dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }}",
"author": {
"@type": "Organization",
"name": "Agiliton",
"url": "https://www.agiliton.eu"
},
"publisher": {
"@type": "Organization",
"name": "Agiliton",
"url": "https://www.agiliton.eu"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "{{ .Permalink }}"
},
"inLanguage": "{{ .Language.Lang }}",
"wordCount": {{ .WordCount }}
{{ with .Params.tags }},
"keywords": {{ . | jsonify }}
{{ end }}
}
</script>
{{/* BreadcrumbList for AI search navigation */}}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "{{ site.Title }}",
"item": "{{ site.BaseURL }}"
},
{
"@type": "ListItem",
"position": 2,
"name": "{{ .Section | title }}",
"item": "{{ printf "%s%s/" site.BaseURL .Section }}"
},
{
"@type": "ListItem",
"position": 3,
"name": "{{ .Title }}",
"item": "{{ .Permalink }}"
}
]
}
</script>
{{ else }}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "{{ site.Title }}",
"url": "{{ site.BaseURL }}",
"description": "{{ site.Params.description }}",
"publisher": {
"@type": "Organization",
"name": "Agiliton",
"url": "https://www.agiliton.eu"
}
}
</script>
{{ end }}

View File

@@ -0,0 +1,13 @@
<aside class="vpn-cta" style="background: linear-gradient(135deg, #1a365d 0%, #2d5ca8 100%); color: #fff; padding: 2rem; border-radius: 12px; margin: 2rem 0; text-align: center;">
<h3 style="margin: 0 0 0.75rem; font-size: 1.25rem;">{{ if eq .Language.Lang "de" }}Schützen Sie Ihre Familie online{{ else }}Protect Your Family Online{{ end }}</h3>
<p style="margin: 0 0 1.25rem; opacity: 0.9; font-size: 0.95rem;">
{{ if eq .Language.Lang "de" }}
Agiliton VPN bietet Inhaltsfilterung, Geräteschutz und sicheres Surfen für die ganze Familie.
{{ else }}
Agiliton VPN provides content filtering, device protection, and safe browsing for the whole family.
{{ end }}
</p>
<a href="https://www.agiliton.eu/vpn" style="display: inline-block; background: #fff; color: #1a365d; padding: 0.75rem 2rem; border-radius: 8px; text-decoration: none; font-weight: 600;">
{{ if eq .Language.Lang "de" }}Mehr erfahren{{ else }}Learn More{{ end }}
</a>
</aside>