hallo
This commit is contained in:
@@ -28,7 +28,5 @@ services:
|
||||
ports:
|
||||
- "5432:5432"
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
- ./postgres_data:/var/lib/postgresql/data
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
|
||||
@@ -1,20 +1,184 @@
|
||||
<html lang="de"'>
|
||||
<!doctype html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>{% block title %}Spiel-Fandom{% endblock %} — {{ site_name or 'My Game Wiki' }}</title>
|
||||
<meta name="description" content="{% block description %}Fandom-Seite für {{ site_name or 'ein Spiel' }}{% endblock %}">
|
||||
|
||||
<head>
|
||||
<meta charstet="utf-8"><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="/static/css/style.css">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta charstet="utf-8"><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="/static/css/style.css">
|
||||
<!-- Google Font (optional) -->
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700;900&display=swap" rel="stylesheet">
|
||||
<link rel="icon" type="image/x-icon" href="/static/HURENSOHN.ico">
|
||||
|
||||
<link rel="icon" type="image/x-icon" href="/static/HURENSOHN.ico">
|
||||
<!-- Basis-CSS (kleines, leichtes Fandom-Look) -->
|
||||
<style>
|
||||
:root{
|
||||
--bg:#0f1724; /* dunkler Hintergrund, wiki-ähnlich */
|
||||
--card:#0b1530;
|
||||
--accent:#ffcc33; /* Akzentfarbe */
|
||||
--muted:#9aa4b2;
|
||||
--text:#e6eef8;
|
||||
--glass: rgba(255,255,255,0.03);
|
||||
}
|
||||
*{box-sizing:border-box}
|
||||
html,body{height:100%}
|
||||
body{
|
||||
margin:0;
|
||||
font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial;
|
||||
background: linear-gradient(180deg, #071022 0%, #0b1230 60%);
|
||||
color:var(--text);
|
||||
-webkit-font-smoothing:antialiased;
|
||||
-moz-osx-font-smoothing:grayscale;
|
||||
line-height:1.45;
|
||||
}
|
||||
|
||||
<title> {% block title %} {% endblock %} </title>
|
||||
/* Container */
|
||||
.wrap{max-width:1200px;margin:28px auto;padding:20px}
|
||||
|
||||
</head>
|
||||
/* Topbar */
|
||||
header.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;background:var(--glass);border-radius:12px}
|
||||
.brand{display:flex;gap:12px;align-items:center}
|
||||
.logo{width:48px;height:48px;border-radius:8px;background:linear-gradient(135deg,var(--accent),#ff9a3c);display:flex;align-items:center;justify-content:center;font-weight:800;color:#081022}
|
||||
.brand h1{margin:0;font-size:1.05rem}
|
||||
.search{display:flex;align-items:center;gap:8px}
|
||||
.search input{padding:8px 12px;border-radius:999px;border:1px solid rgba(255,255,255,0.06);background:transparent;color:var(--text);outline:none}
|
||||
|
||||
<body>
|
||||
/* Layout */
|
||||
.grid{display:grid;grid-template-columns: 1fr 320px;gap:18px;margin-top:18px}
|
||||
main.card{background:linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));padding:18px;border-radius:12px}
|
||||
aside.sidebar{background:var(--card);padding:16px;border-radius:12px;height:fit-content}
|
||||
|
||||
<h1>{% block huso %} {% endblock %}</h1>
|
||||
/* Article */
|
||||
h2.title{margin-top:0}
|
||||
.meta{color:var(--muted);font-size:0.9rem;margin-bottom:10px}
|
||||
.hero{height:180px;border-radius:8px;background-size:cover;background-position:center;margin-bottom:12px;overflow:hidden}
|
||||
|
||||
</body>
|
||||
/* Cards */
|
||||
.card-row{display:flex;flex-wrap:wrap;gap:12px}
|
||||
.mini-card{flex:1 1 160px;background:rgba(255,255,255,0.02);padding:10px;border-radius:10px}
|
||||
|
||||
/* Footer */
|
||||
footer{margin-top:24px;text-align:center;color:var(--muted);font-size:0.9rem}
|
||||
|
||||
/* Responsive */
|
||||
@media(max-width:880px){
|
||||
.grid{grid-template-columns:1fr;}
|
||||
.search{display:none}
|
||||
}
|
||||
|
||||
/* Small helpers */
|
||||
a.button{display:inline-block;padding:8px 12px;border-radius:999px;background:var(--accent);color:#081022;text-decoration:none;font-weight:600}
|
||||
nav a{color:var(--muted);text-decoration:none;margin-right:12px}
|
||||
</style>
|
||||
|
||||
{% block extra_head %}{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<header class="topbar">
|
||||
<div class="brand">
|
||||
<div class="logo">GF</div>
|
||||
<div>
|
||||
<h1>{{ site_name or 'Game Fandom' }}</h1>
|
||||
<div style="font-size:0.85rem;color:var(--muted)">{% block tagline %}Community-geführtes Wiki & Guides{% endblock %}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search" role="search">
|
||||
<form action="{{ url_for('search') }}" method="get">
|
||||
<input name="q" placeholder="Suche Artikel, Charaktere, Items..." aria-label="Suche" value="{{ request.args.get('q','') }}">
|
||||
</form>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<nav style="margin-top:12px;color:var(--muted)">
|
||||
<a href="{{ url_for('index') }}">Startseite</a>
|
||||
<a href="{{ url_for('categories') }}">Kategorien</a>
|
||||
<a href="{{ url_for('recent') }}">Neueste Änderungen</a>
|
||||
<a href="{{ url_for('about') }}">Über</a>
|
||||
</nav>
|
||||
|
||||
<div class="grid">
|
||||
<main class="card">
|
||||
{% block hero %}
|
||||
<div class="hero" style="background-image: url('{{ url_for('static', filename='images/hero.jpg') }}');"></div>
|
||||
{% endblock %}
|
||||
|
||||
<article>
|
||||
<h2 class="title">{% block page_title %}Willkommen{% endblock %}</h2>
|
||||
<div class="meta">{% block meta %}Letzte Aktualisierung: —{% endblock %}</div>
|
||||
|
||||
{% block content %}
|
||||
<p>Hier kommt der Seiteninhalt.</p>
|
||||
{% endblock %}
|
||||
</article>
|
||||
|
||||
<section style="margin-top:18px">
|
||||
<h3>Beliebte Artikel</h3>
|
||||
<div class="card-row">
|
||||
{% for item in popular_items|default([]) %}
|
||||
<div class="mini-card">
|
||||
<a href="{{ url_for('article', slug=item.slug) }}"><strong>{{ item.title }}</strong></a>
|
||||
<div style="color:var(--muted);font-size:0.9rem">{{ item.short_desc }}</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="mini-card">Keine Daten.</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
|
||||
<aside class="sidebar">
|
||||
<div style="margin-bottom:12px">
|
||||
<h4>Neueste Diskussionen</h4>
|
||||
<ul style="padding-left:14px;color:var(--muted);margin-top:8px">
|
||||
{% for d in discussions|default([]) %}
|
||||
<li><a href="{{ url_for('discussion', id=d.id) }}">{{ d.title }}</a></li>
|
||||
{% else %}
|
||||
<li>Keine Diskussionen.</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div style="margin-bottom:12px">
|
||||
<h4>Kategorien</h4>
|
||||
<div style="display:flex;flex-wrap:wrap;gap:8px;margin-top:8px">
|
||||
{% for c in categories|default([]) %}
|
||||
<a href="{{ url_for('category', slug=c.slug) }}" class="button">{{ c.name }}</a>
|
||||
{% else %}
|
||||
<div style="color:var(--muted)">Keine Kategorien.</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h4>Über</h4>
|
||||
<p style="color:var(--muted);font-size:0.95rem">{% block about_snippet %}Fandom-Community. Leitfäden, Lore, Builds und mehr.{% endblock %}</p>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<div>© {{ current_year or 2025 }} {{ site_name or 'Game Fandom' }} — Erstellt mit ❤️</div>
|
||||
<div style="margin-top:6px;color:var(--muted);font-size:0.85rem">Powered by Flask • <a href="{{ url_for('privacy') }}">Datenschutz</a></div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
{% block scripts %}
|
||||
<script>
|
||||
// kleines Script: z.B. optionales keyboard shortcut für Suche (/)
|
||||
document.addEventListener('keydown', function(e){
|
||||
if(e.key === "/" && document.activeElement.tagName !== 'INPUT' && document.activeElement.tagName !== 'TEXTAREA'){
|
||||
const q = document.querySelector('.search input');
|
||||
if(q){e.preventDefault();q.focus();}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
</body>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user