Files
dasposchi-de/templates/_article-card.php
Claude 3c97192386 Initiales CMS: Deutschsprachiges Blog-System mit Admin-Bereich
Vollständiges, schlankes PHP/SQLite-CMS für IT-, KI- und Gaming-Inhalte:

- Core: DB-Singleton, Auth mit Passwort-Hashing, Session-Cookies,
  CSRF-Schutz, Login-Rate-Limit, Bild-Upload mit serverseitiger Validierung
- Admin: Dashboard, Artikel/Seiten-Verwaltung mit Quill WYSIWYG-Editor,
  Kategorien, Navigation (Drag & Drop), Medienbibliothek, Profil
- Frontend: Responsive Dark-Theme, Artikel-Grid, Kategorie-Filter,
  Archiv, Paginierung, SEO-Meta-Tags
- Sicherheit: Prepared Statements, HTML-Sanitizer, .htaccess-Schutz
  für sensible Verzeichnisse, PHP-Ausführungsschutz im Upload-Ordner
- Installation: install.php erstellt DB-Schema und Admin-Account

https://claude.ai/code/session_01Xsg4j2t4S9goMuWVpF3ezG
2026-04-05 20:59:52 +00:00

23 lines
1.0 KiB
PHP

<article class="article-card">
<?php if (!empty($article['cover_image'])): ?>
<a href="/artikel/<?= e($article['slug']) ?>" class="card-image">
<img src="<?= e($article['cover_image']) ?>" alt="<?= e($article['title']) ?>" loading="lazy">
</a>
<?php endif; ?>
<div class="card-body">
<?php if (!empty($article['category_name'])): ?>
<a href="/kategorie/<?= e($article['category_slug']) ?>" class="card-category"><?= e($article['category_name']) ?></a>
<?php endif; ?>
<h2 class="card-title">
<a href="/artikel/<?= e($article['slug']) ?>"><?= e($article['title']) ?></a>
</h2>
<p class="card-excerpt">
<?= e($article['excerpt'] ?: excerpt($article['body'])) ?>
</p>
<div class="card-meta">
<time><?= format_date($article['published_at'] ?? $article['created_at']) ?></time>
<a href="/artikel/<?= e($article['slug']) ?>" class="read-more">Weiterlesen &rarr;</a>
</div>
</div>
</article>