Lehrplan: ?module=X-Filter in lehrplan.php (Modul-Fokus-Banner)
- lehrplan.php liest jetzt den Query-Parameter ?module=<id> und filtert die Kompetenz-Cards auf die dem Modul zugeordneten Eintraege (via kompetenz_modules) - Modul-Fokus-Banner ueber dem Hero: Icon, Titel, "Zurueck zur Simulation"-Link, "Alle Module anzeigen"-Link - Hero-Titel + Meta-Description + <title>-Tag spiegeln den Fokus - Ungueltige Modul-Slugs fallen stillschweigend auf Full-View zurueck - Alle bestehenden Filter (country, theme) wirken weiterhin gleichzeitig Use-Case: Atlas' Template-Button 📚 Lehrplan in den Sim-Wrappern zeigt aktuell auf /modul-<id>#lehrplan-bezug. Diese Seite dient als Alternative/Fallback, falls jemand direkt auf lehrplan.php?module=X landet. Verifiziert: - lehrplan?module=logistik 6 Kompetenzen (von 10) - lehrplan?module=klima 1 Kompetenz - lehrplan?module=fluss 2 Kompetenzen (Naturgefahren + Stadt) - lehrplan?module=unknown 10 Kompetenzen (Full-View Fallback) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+80
-15
@@ -33,12 +33,34 @@ if (isset($_GET['country'])) {
|
||||
$qTheme = preg_replace('/[^a-z0-9_-]/', '', strtolower($_GET['theme'] ?? ''));
|
||||
$qModule = preg_replace('/[^a-z0-9_-]/', '', strtolower($_GET['module'] ?? ''));
|
||||
|
||||
// Alle Kompetenzen mit Zuordnungen + Ankern laden
|
||||
$kompetenzen = $db->query('
|
||||
SELECT id, key_slug, title, description, category, age_min, age_max, sort_order
|
||||
FROM kompetenzen
|
||||
ORDER BY sort_order, title
|
||||
')->fetchAll();
|
||||
// Wenn `?module=X` gesetzt: Metadaten des Moduls laden (fuer Banner + Titel)
|
||||
$moduleFocus = null;
|
||||
if ($qModule !== '') {
|
||||
$stmt = $db->prepare('SELECT module_id, title, icon, card_image, status, page_url FROM module_info WHERE module_id = ?');
|
||||
$stmt->execute([$qModule]);
|
||||
$moduleFocus = $stmt->fetch() ?: null;
|
||||
if (!$moduleFocus) $qModule = ''; // ungueltiger Slug
|
||||
}
|
||||
|
||||
// Kompetenzen laden — optional gefiltert auf Modul-Zuordnungen
|
||||
if ($qModule !== '') {
|
||||
$stmt = $db->prepare('
|
||||
SELECT k.id, k.key_slug, k.title, k.description, k.category, k.age_min, k.age_max, k.sort_order
|
||||
FROM kompetenzen k
|
||||
INNER JOIN kompetenz_modules km ON km.kompetenz_id = k.id
|
||||
WHERE km.module_id = ?
|
||||
GROUP BY k.id
|
||||
ORDER BY k.sort_order, k.title
|
||||
');
|
||||
$stmt->execute([$qModule]);
|
||||
$kompetenzen = $stmt->fetchAll();
|
||||
} else {
|
||||
$kompetenzen = $db->query('
|
||||
SELECT id, key_slug, title, description, category, age_min, age_max, sort_order
|
||||
FROM kompetenzen
|
||||
ORDER BY sort_order, title
|
||||
')->fetchAll();
|
||||
}
|
||||
|
||||
// Module je Kompetenz
|
||||
$modStmt = $db->prepare('
|
||||
@@ -107,8 +129,8 @@ $categoryMeta = [
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Lehrplan-Übersicht — Lehrplan geograsim.at</title>
|
||||
<meta name="description" content="Alle Lehrplan-Verankerungen der GeoGraSim-Simulationen für Österreich, Deutschland, Schweiz und Liechtenstein — gruppiert nach didaktischem Kompetenzbereich.">
|
||||
<title><?= $moduleFocus ? 'Lehrplan-Bezug: ' . esc($moduleFocus['title']) : 'Lehrplan-Übersicht' ?> — Lehrplan geograsim.at</title>
|
||||
<meta name="description" content="<?= $moduleFocus ? 'Lehrplan-Verankerung der Simulation ' . esc($moduleFocus['title']) . ' in Österreich, Deutschland, Schweiz und Liechtenstein.' : 'Alle Lehrplan-Verankerungen der GeoGraSim-Simulationen für Österreich, Deutschland, Schweiz und Liechtenstein — gruppiert nach didaktischem Kompetenzbereich.' ?>">
|
||||
<link rel="icon" type="image/svg+xml" href="<?= $bp ?>/favicon.svg">
|
||||
<link rel="icon" type="image/png" href="<?= $bp ?>/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="stylesheet" href="<?= $bp ?>/assets/fonts/inter.css">
|
||||
@@ -138,6 +160,28 @@ $categoryMeta = [
|
||||
.lp-btn-sm.lp-btn-primary { background: var(--ggs-fjord); color: var(--ggs-white); border-color: var(--ggs-fjord); }
|
||||
.lp-easy-pill { background: var(--ggs-moss-light); color: var(--ggs-moss-dark); border-color: var(--ggs-moss); font-weight: 700; }
|
||||
|
||||
/* ===== Modul-Fokus-Banner (bei ?module=X) ===== */
|
||||
.lp-focus-banner {
|
||||
background: var(--ggs-fjord-light); color: var(--ggs-fjord-dark);
|
||||
border-bottom: 1px solid var(--ggs-border);
|
||||
padding: .9rem 1.5rem;
|
||||
display: flex; align-items: center; gap: 1rem;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.lp-focus-icon { font-size: 1.8rem; line-height: 1; }
|
||||
.lp-focus-text { flex: 1; min-width: 200px; display: flex; flex-direction: column; gap: 2px; }
|
||||
.lp-focus-text strong { font-size: 1rem; font-weight: 800; }
|
||||
.lp-focus-sub { font-size: .82rem; color: var(--ggs-text-muted); }
|
||||
.lp-focus-action {
|
||||
display: inline-flex; align-items: center; min-height: 36px;
|
||||
padding: .4rem .9rem; border-radius: var(--ggs-radius-pill);
|
||||
background: var(--ggs-white); color: var(--ggs-fjord-dark);
|
||||
border: 1px solid var(--ggs-fjord);
|
||||
font-size: .82rem; font-weight: 600; text-decoration: none;
|
||||
transition: all .2s var(--ggs-ease);
|
||||
}
|
||||
.lp-focus-action:hover { background: var(--ggs-fjord); color: var(--ggs-white); }
|
||||
|
||||
/* ===== Hero ===== */
|
||||
.lp-hero {
|
||||
background: linear-gradient(135deg, var(--ggs-fjord-dark) 0%, var(--ggs-fjord) 100%);
|
||||
@@ -370,18 +414,39 @@ $categoryMeta = [
|
||||
<a href="<?= $bp ?>/login.html" class="lp-btn-sm lp-btn-primary">Anmelden</a>
|
||||
</header>
|
||||
|
||||
<?php if ($moduleFocus): ?>
|
||||
<!-- Modul-Fokus-Banner: der Link kommt aus einer Simulation oder Modul-Detailseite -->
|
||||
<div class="lp-focus-banner">
|
||||
<span class="lp-focus-icon"><?= esc($moduleFocus['icon']) ?></span>
|
||||
<div class="lp-focus-text">
|
||||
<strong>Lehrplan-Bezug für <?= esc($moduleFocus['title']) ?></strong>
|
||||
<span class="lp-focus-sub">Gefiltert auf die Kompetenzbereiche dieser Simulation.</span>
|
||||
</div>
|
||||
<?php if (!empty($moduleFocus['page_url'])): ?>
|
||||
<a href="<?= $bp ?>/<?= esc($moduleFocus['page_url']) ?>" class="lp-focus-action">← Zurück zur Simulation</a>
|
||||
<?php endif; ?>
|
||||
<a href="<?= $bp ?>/pages/lehrplan.php" class="lp-focus-action">Alle Module anzeigen</a>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="lp-hero">
|
||||
<h1>Lehrplan-Übersicht</h1>
|
||||
<h1><?= $moduleFocus ? 'Lehrplan-Bezug: ' . esc($moduleFocus['title']) : 'Lehrplan-Übersicht' ?></h1>
|
||||
<p>
|
||||
Alle GeoGraSim-Simulationen sind auf didaktische Kompetenzbereiche
|
||||
abgebildet. Für jeden Bereich zeigen wir, wo er in den Lehrplänen
|
||||
für Österreich, Deutschland, Schweiz und Liechtenstein verankert ist —
|
||||
fachlich, fächerübergreifend und mit Anknüpfungspunkten in weiteren Fächern.
|
||||
<?php if ($moduleFocus): ?>
|
||||
Diese Ansicht zeigt alle Kompetenzbereiche, die die Simulation
|
||||
<strong><?= esc($moduleFocus['title']) ?></strong> abdeckt — fachlich,
|
||||
fächerübergreifend und mit Anknüpfungspunkten in weiteren Fächern.
|
||||
<?php else: ?>
|
||||
Alle GeoGraSim-Simulationen sind auf didaktische Kompetenzbereiche
|
||||
abgebildet. Für jeden Bereich zeigen wir, wo er in den Lehrplänen
|
||||
für Österreich, Deutschland, Schweiz und Liechtenstein verankert ist —
|
||||
fachlich, fächerübergreifend und mit Anknüpfungspunkten in weiteren Fächern.
|
||||
<?php endif; ?>
|
||||
</p>
|
||||
<div class="lp-hero-stats">
|
||||
<div class="lp-hero-stat"><span class="lp-hero-stat-num"><?= count($kompetenzen) ?></span><span class="lp-hero-stat-lbl">Kompetenzbereiche</span></div>
|
||||
<div class="lp-hero-stat"><span class="lp-hero-stat-num"><?= $totalAnchors ?></span><span class="lp-hero-stat-lbl">Lehrplan-Anker</span></div>
|
||||
<div class="lp-hero-stat"><span class="lp-hero-stat-num"><?= count($kompetenzen) ?></span><span class="lp-hero-stat-lbl"><?= $moduleFocus ? 'Kompetenzen für dieses Modul' : 'Kompetenzbereiche' ?></span></div>
|
||||
<div class="lp-hero-stat"><span class="lp-hero-stat-num"><?= $totalAnchors ?></span><span class="lp-hero-stat-lbl">Lehrplan-Anker gesamt</span></div>
|
||||
<div class="lp-hero-stat"><span class="lp-hero-stat-num">4</span><span class="lp-hero-stat-lbl">Länder</span></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user