Update SEO and meta tags in index.html, enhance robots.txt for better crawling control, and improve sitemap.xml priorities. Refactor blog routes to include SEO metadata and adjust blog view for canonical URLs. Implement blog URL generation in BlogListView and apply SEO dynamically in BlogView.
This commit is contained in:
100
frontend/src/views/public/FalukantLandingView.vue
Normal file
100
frontend/src/views/public/FalukantLandingView.vue
Normal file
@@ -0,0 +1,100 @@
|
||||
<template>
|
||||
<section class="marketing-page">
|
||||
<div class="hero">
|
||||
<p class="eyebrow">Browser-Aufbauspiel</p>
|
||||
<h1>Falukant verbindet Wirtschaft, Politik und Charakterentwicklung in einer mittelalterlichen Spielwelt.</h1>
|
||||
<p class="lead">
|
||||
Baue Besitz auf, verwalte Zweigstellen, pflege Beziehungen und triff politische Entscheidungen in einem
|
||||
persistenten Browsergame innerhalb von YourPart.
|
||||
</p>
|
||||
<router-link class="cta" to="/">Jetzt entdecken</router-link>
|
||||
</div>
|
||||
|
||||
<div class="grid">
|
||||
<article>
|
||||
<h2>Wirtschaft mit Tiefe</h2>
|
||||
<p>Produktion, Lager, Handel und Finanzen greifen ineinander und erzeugen eine langfristige Aufbauspiel-Dynamik.</p>
|
||||
</article>
|
||||
<article>
|
||||
<h2>Persoenliche Entwicklung</h2>
|
||||
<p>Familie, Bildung, Gesundheit und gesellschaftlicher Status beeinflussen deinen Weg in Falukant.</p>
|
||||
</article>
|
||||
<article>
|
||||
<h2>Politik und Unterwelt</h2>
|
||||
<p>Zwischen Kirche, Reputation, Adel und dunklen Netzwerken entstehen Entscheidungen mit spuerbaren Folgen.</p>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.marketing-page {
|
||||
max-width: 1100px;
|
||||
margin: 0 auto;
|
||||
padding: 48px 20px 72px;
|
||||
color: #40261a;
|
||||
}
|
||||
|
||||
.hero {
|
||||
padding: 32px;
|
||||
border-radius: 20px;
|
||||
background: linear-gradient(135deg, #f7e0bb 0%, #f6c27d 45%, #e8924d 100%);
|
||||
box-shadow: 0 20px 60px rgba(106, 56, 20, 0.18);
|
||||
}
|
||||
|
||||
.eyebrow {
|
||||
margin: 0 0 12px;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.hero h1 {
|
||||
margin: 0;
|
||||
font-size: clamp(2rem, 4vw, 3.6rem);
|
||||
line-height: 1.08;
|
||||
}
|
||||
|
||||
.lead {
|
||||
max-width: 760px;
|
||||
margin: 20px 0 0;
|
||||
font-size: 1.1rem;
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.cta {
|
||||
display: inline-block;
|
||||
margin-top: 24px;
|
||||
padding: 12px 20px;
|
||||
border-radius: 999px;
|
||||
background: #40261a;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
||||
gap: 18px;
|
||||
margin-top: 28px;
|
||||
}
|
||||
|
||||
.grid article {
|
||||
padding: 24px;
|
||||
border-radius: 18px;
|
||||
background: #fff7ef;
|
||||
border: 1px solid rgba(64, 38, 26, 0.08);
|
||||
}
|
||||
|
||||
.grid h2 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.grid p {
|
||||
margin: 0;
|
||||
line-height: 1.65;
|
||||
}
|
||||
</style>
|
||||
98
frontend/src/views/public/MinigamesLandingView.vue
Normal file
98
frontend/src/views/public/MinigamesLandingView.vue
Normal file
@@ -0,0 +1,98 @@
|
||||
<template>
|
||||
<section class="marketing-page">
|
||||
<div class="hero">
|
||||
<p class="eyebrow">Browser-Minispiele</p>
|
||||
<h1>Kurze Spielrunden, klare Ziele und direkte Action mit Match 3 und Taxi.</h1>
|
||||
<p class="lead">
|
||||
Die Minispiele auf YourPart liefern schnelle Abwechslung direkt im Browser und erweitern die Plattform um
|
||||
spielbare Casual-Formate.
|
||||
</p>
|
||||
<router-link class="cta" to="/">Zur Startseite</router-link>
|
||||
</div>
|
||||
|
||||
<div class="cards">
|
||||
<article>
|
||||
<h2>Match 3</h2>
|
||||
<p>Das klassische Puzzle-Prinzip mit Kampagnenstruktur fuer Spielerinnen und Spieler, die kurze Sessions lieben.</p>
|
||||
</article>
|
||||
<article>
|
||||
<h2>Taxi</h2>
|
||||
<p>Fahre Passagiere effizient ans Ziel und verbessere deine Kontrolle, Streckenwahl und Reaktionsfaehigkeit.</p>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.marketing-page {
|
||||
max-width: 1100px;
|
||||
margin: 0 auto;
|
||||
padding: 48px 20px 72px;
|
||||
color: #17323a;
|
||||
}
|
||||
|
||||
.hero {
|
||||
padding: 32px;
|
||||
border-radius: 20px;
|
||||
background:
|
||||
radial-gradient(circle at top left, rgba(255, 255, 255, 0.7), transparent 35%),
|
||||
linear-gradient(135deg, #d4f0e6 0%, #7dd0be 40%, #2e8b83 100%);
|
||||
box-shadow: 0 20px 60px rgba(13, 84, 93, 0.18);
|
||||
}
|
||||
|
||||
.eyebrow {
|
||||
margin: 0 0 12px;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.hero h1 {
|
||||
margin: 0;
|
||||
font-size: clamp(2rem, 4vw, 3.5rem);
|
||||
line-height: 1.08;
|
||||
}
|
||||
|
||||
.lead {
|
||||
max-width: 760px;
|
||||
margin: 20px 0 0;
|
||||
font-size: 1.1rem;
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.cta {
|
||||
display: inline-block;
|
||||
margin-top: 24px;
|
||||
padding: 12px 20px;
|
||||
border-radius: 999px;
|
||||
background: #17323a;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.cards {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
|
||||
gap: 18px;
|
||||
margin-top: 28px;
|
||||
}
|
||||
|
||||
.cards article {
|
||||
padding: 24px;
|
||||
border-radius: 18px;
|
||||
background: #effaf6;
|
||||
border: 1px solid rgba(23, 50, 58, 0.08);
|
||||
}
|
||||
|
||||
.cards h2 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.cards p {
|
||||
margin: 0;
|
||||
line-height: 1.65;
|
||||
}
|
||||
</style>
|
||||
102
frontend/src/views/public/VocabLandingView.vue
Normal file
102
frontend/src/views/public/VocabLandingView.vue
Normal file
@@ -0,0 +1,102 @@
|
||||
<template>
|
||||
<section class="marketing-page">
|
||||
<div class="hero">
|
||||
<p class="eyebrow">Sprachen online lernen</p>
|
||||
<h1>Der Vokabeltrainer auf YourPart kombiniert Lernen, Kurse und Uebungen in einer Plattform.</h1>
|
||||
<p class="lead">
|
||||
Arbeite mit interaktiven Lektionen, erweitere deinen Wortschatz und nutze strukturierte Inhalte fuer einen
|
||||
motivierenden Lernfluss direkt im Browser.
|
||||
</p>
|
||||
<router-link class="cta" to="/">Kostenlos starten</router-link>
|
||||
</div>
|
||||
|
||||
<div class="features">
|
||||
<article>
|
||||
<h2>Interaktive Kurse</h2>
|
||||
<p>Kurse, Lektionen und Uebungen helfen beim systematischen Aufbau neuer Sprachkenntnisse.</p>
|
||||
</article>
|
||||
<article>
|
||||
<h2>Praxisorientiert</h2>
|
||||
<p>Wortschatz, Grammatik und Wiederholung werden auf eine alltagstaugliche Lernroutine ausgerichtet.</p>
|
||||
</article>
|
||||
<article>
|
||||
<h2>Teil einer Community</h2>
|
||||
<p>Der Sprachbereich ist in eine groessere Community-Plattform mit Blogs, Forum und Chat eingebettet.</p>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.marketing-page {
|
||||
max-width: 1100px;
|
||||
margin: 0 auto;
|
||||
padding: 48px 20px 72px;
|
||||
color: #1f2f1d;
|
||||
}
|
||||
|
||||
.hero {
|
||||
padding: 32px;
|
||||
border-radius: 20px;
|
||||
background:
|
||||
radial-gradient(circle at right top, rgba(255, 255, 255, 0.78), transparent 30%),
|
||||
linear-gradient(135deg, #eef6c8 0%, #bddd74 45%, #6b9d34 100%);
|
||||
box-shadow: 0 20px 60px rgba(60, 87, 28, 0.18);
|
||||
}
|
||||
|
||||
.eyebrow {
|
||||
margin: 0 0 12px;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.hero h1 {
|
||||
margin: 0;
|
||||
font-size: clamp(2rem, 4vw, 3.5rem);
|
||||
line-height: 1.08;
|
||||
}
|
||||
|
||||
.lead {
|
||||
max-width: 760px;
|
||||
margin: 20px 0 0;
|
||||
font-size: 1.1rem;
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.cta {
|
||||
display: inline-block;
|
||||
margin-top: 24px;
|
||||
padding: 12px 20px;
|
||||
border-radius: 999px;
|
||||
background: #1f2f1d;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.features {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
||||
gap: 18px;
|
||||
margin-top: 28px;
|
||||
}
|
||||
|
||||
.features article {
|
||||
padding: 24px;
|
||||
border-radius: 18px;
|
||||
background: #f7fbe9;
|
||||
border: 1px solid rgba(31, 47, 29, 0.08);
|
||||
}
|
||||
|
||||
.features h2 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.features p {
|
||||
margin: 0;
|
||||
line-height: 1.65;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user