🌐 Gewerbeverbund – Ihre Website - Mehr Sichtbarkeit - Besseres Ranking - RSS Feeds - Kleinanzeigen Anmelden | Registrieren
StartseiteAnzeigenmarktphp Scripte › News & Magazine Content Management Syste
News & Magazine Content Management System
ANZEIGE
VIP

News & Magazine Content Management System

97,00 €
php Scripte 🇩🇪 Deutschland 39 Aufrufe 26.02.2026 👤 admin
Version 1.2.0 • PHP 7.4+ (getestet auf PHP 8.4) • MySQL • Bootstrap 5
Entwickelt von phppower

1. Systemanforderungen
Eigenschaft Beschreibung
PHP 7.4 oder höher (getestet auf PHP 8.4)
MySQL/MariaDB 5.7 / 10.3 oder höher
PDO + PDO_MySQL Pflicht
GD Extension Pflicht (Bildverarbeitung + WebP)
mbstring Pflicht (UTF-8 / Umlaute)
Apache/Nginx mit mod_rewrite
uploads/ Schreibrechte 755 oder 777

2. Installation
Neue Installation
Alle Dateien per FTP/SFTP hochladen, dann im Browser aufrufen:
https://deine-domain.de/news-cms/install.php
Der 4-Schritt-Wizard:
• Schritt 1 — System-Check (PHP-Version, Extensions, Schreibrechte)
• Schritt 2 — Datenbank-Einstellungen + SMTP-Mail (optional)
• Schritt 3 — Admin-Account anlegen
• Schritt 4 — Fertig: 17 Tabellen angelegt, Standard-Kategorien eingetragen
⚠ Nach der Installation: install.php löschen oder per .htaccess sperren!

.htaccess — Unterordner
Falls das CMS in einem Unterordner liegt (z.B. /news-cms/):
RewriteBase /news-cms/


3. Benutzer & Rollen
Rolle Eigene Posts Fremde Posts Kommentare User verw. Einstellungen
User ✗ ✗ ✗ ✗ ✗
Author ✓ Voll ✗ ✗ ✗ ✗
Moderator ✓ Voll ✓ Bearbeiten ✓ ✗ ✗
Admin ✓ Voll ✓ Alles ✓ ✓ ✓

Neue Accounts starten als inactive und müssen vom Admin freigeschaltet werden. Moderator/Admin-Rolle nur durch bestehenden Admin vergebbar.


4. Posts erstellen & verwalten
Post-Typen
Eigenschaft Beschreibung
Article Standard-Textartikel mit Quill.js Rich-Text-Editor
Gallery Bildergalerie — Bilder per Editor einfügen
Video Video-Datei hochladen (MP4, WebM, max. 50 MB)
Audio Audio-Datei hochladen (MP3, WAV, OGG)

Kategorien / Tags / Keywords
• Vorhandene Kategorien per Multi-Select auswählen (mehrere möglich)
• Neue Kategorien im Freitext-Feld kommagetrennt eingeben
• Neue werden automatisch angelegt, als Tags verknüpft und als SEO-Keywords gespeichert
• Die meta keywords im <head> werden automatisch aus Kategorien befüllt

Geplante Veröffentlichung
Beim Erstellen/Bearbeiten eines Posts kann unter Status → Published ein optionales Datum+Uhrzeit gesetzt werden. Ohne Datumsangabe wird sofort veröffentlicht. Der Datum-Picker erscheint automatisch wenn Published gewählt wird.

Lesezeit
Auf jeder Post-Karte und der Detailseite wird die geschätzte Lesezeit automatisch berechnet und angezeigt (ca. 200 Wörter/Minute).

Drucken / PDF
Jeder Post hat einen Drucken-Button der eine saubere Druckansicht (print.php) in einem neuen Tab öffnet. Von dort kann auch direkt als PDF gespeichert werden. Navbar, Footer und Werbung werden ausgeblendet.

Herz-Bewertung (Likes)
Jeder Post hat einen Herz-Button (❤ ) auf der Detailseite. Besucher können ohne Login liken. Ein Cookie verhindert Mehrfach-Likes (1 Jahr gültig). Anzahl auch auf Post-Karten sichtbar.


5. Volltextsuche
Die Suche ist über das Suchfeld im Header auf allen Seiten erreichbar. Sie durchsucht Titel, Content, Excerpt und Kategorienamen gleichzeitig. Suchergebnisse zeigen den Suchbegriff farbig markiert (highlight). URL: search.php?q=suchbegriff
Eigenschaft Beschreibung
Mindestlänge 2 Zeichen
Durchsucht Titel, Content, Excerpt, Kategoriename
Hervorhebung Suchbegriff wird in Ergebnissen farbig markiert
Paginierung 10 Ergebnisse pro Seite
Bild Featured Image wird in Ergebnisliste angezeigt


6. Autor-Profilseite
Jeder Autor hat eine öffentliche Profilseite unter profile.php?user=USERNAME. Autor-Namen auf Post-Detailseiten sind direkt verlinkt.
Eigenschaft Beschreibung
URL profile.php?user=username
Zeigt Avatar (Initiale), Rolle, Mitglied seit, Artikel-/Views-/Likes-Zähler
Artikel-Grid Alle veröffentlichten Posts des Autors mit Paginierung (9 pro Seite)
Statistik Gesamt-Views und Gesamt-Likes über alle Posts


7. Startseite — Aufbau
Eigenschaft Beschreibung
Header Logo + Suchfeld + Login/Logout + Dark-Mode. Automatisches Hintergrundbild von Picsum Photos.
Navigation Dynamische Kategorien-Navbar
Tag-Wolke Alle Kategorien farbig — Schriftgröße je nach Artikel-Häufigkeit
Banner Zwei Werbeplätze 468×60 px nebeneinander (Admin → Banner)
Post-Grid Artikel als Karten mit Bild, Kategorie, Lesezeit, Views, Kommentare, ❤Likes
Paginierung Anzahl pro Seite in Einstellungen konfigurierbar
Footer Newsletter-Widget, Links, Besucher-Statistik


8. Banner verwalten
Admin → Banner (nur Admins). Zwei Werbeplätze auf der Startseite, jeweils 468×60 px.
Eigenschaft Beschreibung
Position top_left = linker Platz, top_right = rechter Platz
Bild-URL Vollständige URL oder relativer Pfad in /uploads/
Ziel-URL Wohin der Klick führt (optional, öffnet in neuem Tab)
Aktiv Ein/Aus — inaktive Banner werden durch Platzhalter ersetzt
Sortierung Niedrigere Zahl = bevorzugt wenn mehrere aktiv


9. Newsletter — DSGVO Double-Opt-In
Anmelde-Prozess
• User trägt Email im Footer-Widget ein
• System sendet Bestätigungs-Email mit Token (Double-Opt-In)
• User klickt Link → newsletter-confirm.php → confirmed=1
• Erst jetzt ist der User im Verteiler

Newsletter versenden
Admin → Newsletter → Newsletter schreiben. Sendet NUR an confirmed=1 AND subscribed=1. Jede Email enthält automatisch einen Abmelde-Link.
Kommentar-Benachrichtigung
Wenn jemand auf einen Kommentar antwortet, erhält der ursprüngliche Kommentator automatisch eine Email mit dem Antwort-Text und einem direkten Link zurück zum Post. Voraussetzung: Email-Adresse beim Kommentieren angegeben.


10. Besucher-Statistik
Im Footer jeder Seite werden Besucherzahlen angezeigt (automatisch getrackt):
Eigenschaft Beschreibung
Online (5 Min) Unique Besucher aktiv in den letzten 5 Minuten
Heute Unique Besucher heute
Diese Woche Unique Besucher letzte 7 Tage
Dieser Monat Unique Besucher letzte 30 Tage

IPs werden als MD5-Hash gespeichert (DSGVO-freundlich). Einträge älter als 3 Monate werden automatisch gelöscht.


11. 2-Faktor-Authentifizierung
Nach erfolgreichem Login mit Username + Passwort wird automatisch ein 6-stelliger Code per Email gesendet. Der Login ist erst nach Eingabe des Codes abgeschlossen.
Eigenschaft Beschreibung
Code 6-stellige Zahl, zufällig generiert
Gültigkeit 10 Minuten
Einmalig Jeder Code kann nur einmal verwendet werden
Neu anfordern Button auf der 2FA-Seite sendet neuen Code
Auto-Submit Formular wird automatisch abgesendet bei 6 eingegebenen Ziffern
Tabelle varient_two_factor_codes (wird automatisch bereinigt)


12. RSS-Feed, Sitemap & SEO
RSS-Feed
Eigenschaft Beschreibung
Alle Artikel rss.php
Kategorie rss.php?cat=slug
Autodiscovery Im <head> jeder Seite automatisch eingetragen
Inhalt Letzte 20 Posts mit Volltext, Bild, Kategorie, Autor

Sitemap
sitemap.php generiert automatisch eine XML-Sitemap mit allen veröffentlichten Posts und Kategorien. robots.php liefert die robots.txt mit dem Sitemap-Link.
Kanonische URLs
Jede Seite hat einen <link rel="canonical"> Tag der Duplicate-Content für Suchmaschinen verhindert.
Meta Keywords
Werden automatisch aus den Kategorien/Tags des Posts befüllt. Auf der Startseite aus den Top-10-Kategorien.


13. Bild-Mediathek
Admin → Mediathek — zeigt alle hochgeladenen Dateien aus dem uploads/ Ordner.
Eigenschaft Beschreibung
Bilder JPG, JPEG, PNG, GIF, WEBP — mit Bildvorschau
Videos MP4, WEBM, OGV, MOV — mit Typ-Icon
Audio MP3, WAV, OGG, M4A — mit Typ-Icon
Filter Typ-Filter (Alle / Bilder / Videos / Audio) + Dateiname-Suche
URL kopieren Klick auf Karte oder Button kopiert URL in die Zwischenablage
Löschen Nur Admins können Dateien löschen


14. Header-Bild & Logo
Eigenschaft Beschreibung
Logo Admin → Einstellungen → Logo URL
Header-Bild Automatisch von Picsum Photos (thematisch je nach Seite)
Startseite Keyword aus Einstellungen (unsplash_keyword)
Post-Seite Keyword aus Post-Tags und Kategorie
Andere Seiten Generisches Keyword (news, magazine, search, author etc.)
Fallback Lila Farbverlauf bei Ladefehler


15. Einstellungen
Admin → Einstellungen (nur Admins)
Eigenschaft Beschreibung
Site-Name Name der Website
Tagline Kurzbeschreibung
Posts pro Seite Anzahl auf Startseite/Kategorieseite
Logo URL Vollständige URL zum Logo-Bild
Header-Bild Modus unsplash = Picsum-Bild, none = kein Bild
Unsplash Keyword Englische Keywords für Hintergrundbild
Datenschutzerklärung Text für datenschutz.php
Impressum Text für impressum.php


16. Datei-Struktur
Datei Beschreibung
index.php Startseite (Tag-Wolke, Banner, Post-Grid, Lesezeit)
post.php Post-Detailseite (Herz, Drucken, Verwandte, Kommentare)
search.php Volltextsuche mit Highlight
print.php Druckansicht / PDF-Export
profile.php Öffentliche Autor-Profilseite
category.php Kategorie-Übersicht
archiv.php Archiv nach Jahr/Monat
sitemap.php XML-Sitemap (automatisch generiert)
robots.php robots.txt (dynamisch mit Sitemap-URL)
rss.php RSS-Feed (alle + Kategorie-Filter)
update.php AJAX-Handler für Herz-Bewertung
login.php Login-Formular
login-2fa.php 2FA Code-Eingabe
_header_public.php Gemeinsamer Header (Logo, Bild, Suche, Login, Meta)
_navbar.php Kategorien-Navigation
_footer.php Footer (Newsletter, Statistik, Links)
includes/auth.php Authentifizierung, Rollen, 2FA-Logik
includes/db.php PDO-Wrapper mit Tabellen-Präfix
includes/functions.php Hilfsfunktionen (slug, readingTime, unsplashUrl...)
includes/mail.php Email-Templates (Verification, Reset, 2FA, Newsletter)
includes/stats.php Besucher-Tracking
admin/dashboard.php Übersicht + Top 5 Views + Top 5 Likes
admin/media.php Mediathek (Bilder, Videos, Audio)
admin/posts/create.php Post erstellen (inkl. Datum-Picker)
admin/posts/edit.php Post bearbeiten
admin/banners.php Banner-Verwaltung
admin/settings.php Site-Einstellungen


17. Datenbank-Schema
Alle Tabellen nutzen den Präfix varient_. Gesamt: 17 Tabellen.
Tabelle Inhalt
varient_users User-Accounts, Rollen, Status, Email-Verifizierung
varient_sessions Login-Sessions
varient_password_resets Passwort-Reset-Tokens (1h gültig)
varient_two_factor_codes 2FA-Codes (6-stellig, 10min gültig, einmalig)
varient_categories Kategorien (= Tags = SEO-Keywords)
varient_tags Tags (synchron mit Kategorien)
varient_posts Posts (alle Typen), Views-Counter
varient_post_tags Verknüpfung Posts ↔ Tags
varient_post_meta Zusatz-Metadaten (media_url, media_type)
varient_media Hochgeladene Videos/Audios
varient_comments Kommentare mit Status (pending/approved/spam)
varient_seo_meta SEO-Einstellungen + Keywords pro Post
varient_newsletter Abonnenten mit DOI-Feldern
varient_settings Site-Einstellungen (Key-Value-Store)
varient_banners Werbebanner 468×60
varient_post_likes Herz-Bewertungen pro Post (Cookie-basiert)
varient_visitor_stats Besucher-Tracking (IP-Hash, Session, Datum)


18. Sicherheit
Eigenschaft Beschreibung
CSRF-Schutz Token auf allen POST-Formularen
XSS-Schutz e() = htmlspecialchars() auf allen Ausgaben
SQL-Injection PDO Prepared Statements überall
Passwort-Hashing bcrypt Cost-Faktor 12
2FA 6-stelliger Code per Email, 10min gültig, einmalig
Upload-Schutz PHP-Ausführung in uploads/ per .htaccess gesperrt
Rollen-Prüfung Jede Admin-Seite prüft Rolle und Eigentumsrecht
Newsletter DSGVO Double-Opt-In, Abmelde-Link in jeder Email
Besucher-Tracking Nur MD5-Hash der IP — kein Rückschluss möglich
DEBUG_MODE In Produktion auf false — keine Fehler im Browser

Produktions-Checkliste
• DEBUG_MODE in config.php auf false setzen
• install.php löschen oder per .htaccess sperren
• HTTPS verwenden (SSL-Zertifikat)
• Starkes Admin-Passwort (min. 12 Zeichen mit Sonderzeichen)
• Regelmäßige Datenbank-Backups


19. Häufige Probleme & Lösungen
500-Fehler ohne Ausgabe / Weißer Screen
DEBUG_MODE in config.php temporär auf true setzen. PHP-Fehlerlog des Hosters prüfen.
Seite zeigt "Hat möglicherweise ein temporäres Problem"
PHP Parse Error — kein Syntaxfehler-Output weil DEBUG_MODE=false. Fehlerlog prüfen oder test.php mit phpinfo() anlegen.
Bilder nicht sichtbar
SITE_URL in config.php prüfen — kein abschließender Slash. RewriteBase in .htaccess muss zum Ordner passen.
Emails werden nicht gesendet
SMTP-Einstellungen prüfen. Viele Hoster blockieren Standard PHP mail(). Spam-Ordner prüfen.
Herz-Button reagiert nicht
update.php muss im Root liegen. Cookie-Pfad muss mit dem CMS-Pfad übereinstimmen (SITE_URL). Tabelle varient_post_likes muss existieren.
2FA-Code kommt nicht an
Mail-Konfiguration prüfen. Spam-Ordner prüfen. Code ist 10 Minuten gültig — bei Ablauf "Code erneut senden" klicken.
Datum-Picker für geplante Veröffentlichung nicht sichtbar
Status auf "Published" setzen — der Picker erscheint automatisch per JavaScript.
Mediathek zeigt keine Videos/Audios
admin/media.php muss aktuell sein (Version 1.2.0). Dateitypen: MP4, WEBM, MOV, MP3, WAV, OGG, M4A.
Suche findet nichts
Mindestens 2 Zeichen eingeben. Tabelle varient_posts muss status='published' Einträge haben.
$ is not defined (JavaScript)
jQuery fehlt. In create.php / edit.php muss jQuery vor Select2 geladen sein.


20. Changelog
Version 1.2.0 — Neuerungen
• Volltextsuche (search.php) — Titel, Content, Excerpt, Kategorie mit Highlight
• Druckansicht / PDF-Export (print.php) — sauberes Layout ohne UI
• Autor-Profilseite (profile.php) — öffentlich, mit Statistiken und Artikel-Grid
• Geplante Veröffentlichung — Datum-Picker im Post-Erstellen/Bearbeiten
• Lesezeit-Anzeige auf Post-Karten und Detailseite
• Sitemap.xml automatisch generiert (sitemap.php)
• robots.txt dynamisch mit Sitemap-URL (robots.php)
• Kanonische URLs auf allen Seiten
• Kommentar-Benachrichtigung per Email bei Antworten
• Top-Posts im Dashboard (Top 5 Views + Top 5 Likes)
• Mediathek zeigt Bilder, Videos und Audio mit Typ-Filter
• Suchfeld direkt im Header auf allen Seiten

Version 1.1.0
• Featured-Badge auf Post-Karten
• Herz-Bewertungssystem (Cookie-basiert, AJAX)
• Besucher-Statistik im Footer
• Automatisches Header-Bild von Picsum Photos
• Tag-Wolke mit dynamischer Schriftgröße
• Banner-Verwaltung (2× 468×60 px)
• Newsletter DSGVO Double-Opt-In
• RSS-Feed mit Kategorie-Filter
• 2-Faktor-Authentifizierung (6-stellig per Email)
• PHP 8.4 Kompatibilität

Version 1.0.0 — Initial Release
• User-System mit 4 Rollen, Post-System mit 4 Typen
• Quill.js Editor, Kategorien & Tags, Kommentar-Moderation
• Dark Mode, SEO Meta, CSRF-Schutz, Passwort-Reset
• 4-Schritt-Installations-Wizard, Bootstrap 5

📬 Verkäufer kontaktieren

Ihre E-Mail wird direkt an den Anbieter weitergeleitet.
⚠️ Sicherheitshinweis
Niemals Vorauszahlungen leisten. Bei Verdacht auf Betrug melden Sie die Anzeige bitte dem Admin.
← Zurück zum Anzeigenmarkt
Werbung 468×60
Mietwagen