nkBlog Dokumentation - V0.8
Discontinued
--> V1.0 Released und somit veraltet
INHALT 😄
- was dieser Blog kann
- Installation
- Ordnerstrukur
- Settings generieren
- die index.php
- Benutzung
- Funktionsweise / ein Blick unter die Haube
- Grafik Übersicht Beziehungen
- functions.php
- massive Änderungen vornehmen
- static Ordner
- entries
- navigation
- functions
- Footnotes
was dieser Blog kann
- Blogeinträge unter entries Anzeigen >> siehe Struktur
- jüngster Blogeintrag wird automatisch auf Startseite angezeigt
- Kommentarformular wird an jeden Entry gesetzt
- vorhandene Kommentare mit Dropdown zum jeweiligen entry anzeigen, markdwon geparsed
- automatische Kategorien Auflistung anhand der in den Blogentries gegebenen Kategorien
- Admin-Bereich mit nützlichen Features
- Write Blog
- approve Comments
- show all entries
- show all comments
- write changelog
- Blog Editor
- Site_properties anpassen
- Blogeinträge können entweder im Markdown oder html geparsed werden
- keine Datenbank nötig >> siehe Struktur
- Website im Bootstrap Design
- responsive Website
- Website Design light / dark auswählbar
- Blogtitel, Icon, Logo, Footer custom CSS kann einfach im Adminbereich geändert werden
- changelogs können geschrieben werden (kann auch als News-Einträge genutzt werden)
- News werden auf Startpage angezeigt
- Blogentries werden bei 350 Zeichen abgeschnitten oder vor dem ersten
<pre>
oder<code>
tag (damit Design nicht gestört wird, da offener Tag) und erst bei Direktaufruf komplett angezeigt - automatisches Code Highlighting von
<pre>
und<code>
tags durch highlight.js 1
was der Blog in Zukunft noch können soll
- create News
- Anpassung der Kommentarfelder durch json / php Array Setup
- nicht nur Blogeinträge, sondern auch Notizen / Todos / Wiki als type verarbeiten
- Anzeige privater category nur nach login (evtl. Guest Login ermöglichen)
- schöner großflächiger mobiler Editor / Blogwriter
- Richtext-Editor
- automatische Installation mittels install.php, das die Settings schon entsprechend der Wünsche anlegt
Installation
Die Installation ist denkbar einfach, es braucht keine Datenbank. Einfach alle Dateien (>> siehe Ordnerstruktur) auf den Server kopieren und loslegen.
recommended first steps
- settings.php bearbeiten und Titel, etc anpassen >> siehe Settings
- Admin Passwort in settings.php setzen >> siehe Admin Passwort setzen
- es empfiehlt sich, die Blogeinträge über die Admin-Ansicht anzulegen (>> siehe Einen Blogeintrag im Browser verfassen)
Ordnerstruktur
nachfolgend die minimalste Ordnerstruktur2:
nkBlog/ ├── index.php ├── entries/ │ ├── 2023-09-21/ │ │ ├── index.php │ │ └── information.json │ ├── 2023-10-02/ │ │ ├── index.php │ │ └── information.json │ └── 2023-10-05/ │ ├── index.php │ └── information.json ├── news/ │ ├── current │ ├── current_changelog │ └── V0.1_changelog ├── pics/ │ ├── favicon.ico │ └── logo.png └── static/ ├── blog.css ├── documentation.md ├── footer ├── function.php ├── header ├── navigation ├── settings.php └── parsedown.php
Settings
Die settings.php
ist standardmäßig im Ordner static/
zu finden.
Man kann diese natürlich nach eigenen wünschen anpassen, Werte hinzufügen oder entfernen.
Änderungen haben folgende Auswirkungen:
Verschieben der settings.php in anderen Ordner | wichtig unbedingt in der header Datei unter static/ den include Befehl auf den neuen Pfad anpassen! include_once('static/settings.php'); |
Werte der Keys ändern | siehe site_properties und sources |
Struktur
<?php
// parameter der Site hier festlegen
// Title
// Logo Pfad
// Copyright
// author
$site_properties = array (
'title' => 'NKBlog',
'author' => 'nicolekaro',
'startpage' => 'https://nicolekaro.de/nkdir/nkBlog',
'logo' => 'https://nicolekaro.de/nkdir/nkBlog/pics/NKBlog.png',
'version' => 'V0.8',
'copyright' => '<a href="https://nicolekaro.de">nicolekaro</a> 2023',
'icoPath' => 'https://nicolekaro.de/nkdir/nkBlog/pics/favicon.ico',
'dev-mode' => true
);
define('HOME', $site_properties['startpage']);
$admin_password = "passwort123";
$sources = array(
'bootstrapCSS' => 'https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css',
'SpecialCSS' => 'static/blog.css',
'bootstrapJS' => 'https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/js/bootstrap.bundle.min.js',
'jQuery' => 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js',
);
$styles = array(
'navigation' => '<style>
/* CSS für das größere Logo */
.logo-container {
width: 720px; /* Passe die Breite nach Bedarf an */
display: flex;
justify-content: center;
align-items: center;
}
.logo-image {
width: 100%;
height: auto;
}
</style>',
);
$additional = array(
'footerScript' => '<!-- JavaScript für das Bulma-Sandwich-Menü -->
<script>
document.addEventListener("DOMContentLoaded", function() {
// Menüschalter
const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll(".navbar-burger"), 0);
if ($navbarBurgers.length > 0) {
$navbarBurgers.forEach(el => {
el.addEventListener("click", () => {
const target = el.dataset.target;
const $target = document.getElementById(target);
el.classList.toggle("is-active");
$target.classList.toggle("is-active");
});
});
}
});
</script>',
'Debugging' => '<!-- debugging -->
<script>
document.addEventListener("DOMContentLoaded", function() {
// Hier dein Code, der das Dropdown aktiviert
});
</script>',
);
?>
Das site_properties Array
$site_properties = array (
'title' => 'NKBlog',
'author' => 'nicolekaro',
'startpage' => 'https://nicolekaro.de/nkdir/nkBlog',
'logo' => 'https://nicolekaro.de/nkdir/nkBlog/pics/NKBlog.png',
'version' => 'V0.8',
'copyright' => '<a href="https://nicolekaro.de">nicolekaro</a> 2023',
'icoPath' => 'https://nicolekaro.de/nkdir/nkBlog/pics/favicon.ico',
'dev-mode' => true
);
key |
Wert |
wird wo genutzt |
---|---|---|
'title' |
Titel der Website, String |
Titel der Website, der im Browsertitelfenster angezeigt wird, ersetzt <title> |
'author' |
Autorenangabe, String |
Autor wird rechts im Footer angezeigt |
'startpage' |
url zur Startseite bzw. zum Ordner, in dem nkBlog Dateien sind | Home-link für das logo in der Navigation |
'logo' |
Pfad/url zur logo-datei | Logo in der Navigation |
'version' |
Info zur aktuellen Version des Blogs, String |
wird im Footer mit pill angezeigt |
'copyright' |
Info zum Copyright, String optional mit html tags |
wird links im Footer angezeigt mit © davor |
'icoPath' |
Pfad/url zur ico Datei | wird als ico für Browsertitelfenster und Bookmarks genutzt |
'dev-mode' |
boolean (true oder false) | aktiviert die php Error Ausgaben zum Debuggen wenn true |
Admin Passwort setzen
Wert für folgende Variable setzen
$admin_password = " ";
Sources für Bootstrap und eigenes CSS festlegen
Sources können auch installiert und in einen Ordner gelegt werden, ich habe der Einfachheit halber öffentliche Quellen genutzt.
$sources = array(
'bootstrapCSS' => 'https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css',
'SpecialCSS' => 'static/blog.css',
'bootstrapJS' => 'https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/js/bootstrap.bundle.min.js',
'jQuery' => 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js',
);
key |
Wert |
wird wo genutzt |
---|---|---|
'bootstrapCSS' |
Pfad/url zum bootstrap.css | wird im <head> eingebunden |
'SpecialCSS' |
Pfad/url zu einem customCSS | wird im <head> eingebunden |
'bootstrapJS' |
Pfad/url zum bootstrap.js | wird im <head> eingebunden |
'jQuery' |
Pfad/url zu jQuery (zwingend erforderlich für Bootstrap JS in der Navigation) | wird im <head> eingebunden |
Footnotes
1) | Highlight.js usage: highlightjs.org | |
2) | Foldertree wurde generiert mit: nathanfriend | |
3) | noch nichts |
Verweise
Diese Doku wurde in Markdown geschrieben, zum parsen auf dieser Seite wurden folgende Scripte genutzt:
- parsedown - https://github.com/erusev/parsedown
- parsedown extended - https://benjaminhoegh.github.io/ParsedownExtended/
- parsedown extra - https://github.com/erusev/parsedown-extra
- Markdown Extra Syntax - https://michelf.ca/projects/php-markdown/extra/#spe-attr
- highlight.js - https://highlightjs.org/#usage
-
Highlight.js usage: highlightjs.org ↩