Version 1.1 (2022-11-15)
I've wanted for a long time to create a simple way of blogging that eschews basically all bells and whistles. Many "flat file" Content Management Systems exist already, as well as "static site generators", but none of these that I looked at were simple enough for my liking.
I don't want to have to install Ruby, or Python, or Composer, or whatever else on a server to run a blog. On the other hand, installing WordPress or one of the other popular PHP-based CMSes for this use case is like hammering in a nail with a sledgehammer.
Many people dislike PHP, and while it has its warts, I like it. I like using (vanilla) PHP simply because it is nearly ubiquitous. Having to install or configure it is often unnecessary because it is usually already installed, configured, and running.
I wanted to use plain text files, but some formatting is nice -- Markdown was the obvious solution for this, since it offers quite a lot of options in terms of text formatting, without sacrificing the readability of the plain text itself. I was not keen on adding dependencies but I found Parsedown which offers Markdown parsing by including a single PHP file. I can deal with that.
That's really all there is to it -- dead simple PHP-based templating, and Markdown-formatted plain text content.
I know I'm probably forgetting about a million edge cases, but I want to keep it simple. So, we'll roll with this for now and add features as they become necessary.
Download the files and upload them to a webserver somewhere. That's it!
- Duplicate
config-default.php
asconfig-custom.php
, and change the config variables to your liking. - Create text files with a NUMERIC file name, I use YYYY-MM-DD date-based names (e.g. 2018-10-30.md).
- Format text files with Markdown, or not. Whatever. ;)
- If you need to link to image/video/audio/etc. files, you can upload them to the media folder.
- Upload text files to the
content
directory. - You're done!!
- Updated Parsedown to 1.7.4
- Config has now been moved to
config-default.php
, added support forconfig-custom.php
- Added dark mode! Adjust the
APPEARANCE
constant to enable - Change default file type to .md files instead of .txt. Adjust
FILE_EXT
constant if needed - Reorganize folder structure (CSS and fonts are now in
/src
) - Small text update to
/content/drafts/AboutDrafts.md
- Defined
$content
in global scope to avoid PHP errors in some configurations - Added default favicon at
/img/favicon.png
- Including
fonts.css
in<head>
instead of using @import for better caching behaviour - Added file hash query strings to
<link>
tags in<head>
for better caching behaviour index.php
now uses<main>
for content on list view and<article>
on single post view- List view now explicitly sorts posts using
sortPosts()
function - default is sorting by filename, descending
User @shoaiyb has a fork going with additional features that I didn't think were "absolutely necessary" but if you want some extra bells and whistles, I recommend checking out his fork.
- Parsedown by Emanuil Rusev
- Blog Icon by Gregor Cresnar from Noun Project