Update README to explain multi-file page functionality Add example content files demonstrating the feature Improve folder type detection logic Implement new routing for page-type folders Add support for mixed content types in single pages Update navigation and metadata handling for multi-file pages Remove legacy frontpage.php in favor of multi-file approach Improve file-based routing documentation Add examples of different content types working together Update router to handle multi-file content rendering Implement proper sorting of content files Add best practices for multi-file content organization
2.9 KiB
FolderWeb
A minimal, file-based PHP framework for publishing content that will work for decades. Just enough, nothing more. FolderWeb applies minimal PHP to enable modern conveniences while remaining maintainable for years or decades. No frameworks, no build tools, no JavaScript—just HTML, PHP 8.3+, and CSS. This is not a CMS with an admin panel, not a single-page application.
Getting Started
Requirements
- PHP 8.3 or higher
- A web server (Apache, Nginx, or PHP's built-in server)
Quick Start
- Clone or download this repository
- Point your web server's document root to /content
Development
Creating Content
- Create a directory for your content in the document root
- Add one or more content files (
.md,.php, or.html) - Optionally add
metadata.inifor title, date, and summary - Optionally add
cover.jpg|webpfor list view thumbnails
Content is immediately accessible at the URL matching the directory path.
Example structure:
/content/
00-welcome.php
01-introduction.md
about/
00-overview.md
01-philosophy.html
02-technology.php
blog/
2025-11-01-hello-world/
article.md
cover.jpg
metadata.ini
Multi-File Pages
Any folder without subdirectories is a page-type folder. All .md, .html, and .php files in that folder render together as a single page in alphanumerical order.
This allows you to:
- Break long content into manageable sections
- Mix file formats freely (Markdown, HTML, PHP)
- Reorder sections by renaming files
- Include dynamic PHP content alongside static content
Example:
/content/
docs/
00-introduction.md
01-setup.md
02-advanced.html
03-examples.php
All four files render as one page at /docs/, in that order.
Folder Types
FolderWeb automatically determines how to render folders:
- Page-type folder (no subdirectories) → Renders all content files as a single page
- Article-type folder (has subdirectories) → Shows list view with links to subdirectories
Customization
All customization lives in custom/:
- Styles: Place CSS in
custom/styles/base.css - Templates: Override defaults by placing files in
custom/templates/ - Fonts: Add font files to
custom/fonts/ - Configuration: Copy
app/config.initocustom/config.iniand modify
Never modify files in /app/default/—always override them in custom/.
File-Based Routing
The folder hierarchy dictates URL structure:
- Root content files →
yoursite.com/ /about/(with content files) →yoursite.com/about//blog/2025-11-01-post/(with content files) →yoursite.com/blog/2025-11-01-post/- Dates in folder names are automatically extracted and formatted
- Content file names can be anything (not limited to
page.mdorarticle.md)
Metadata
Use metadata.ini files for structured data:
title = "My Page Title"
date = "2025-11-01"
summary = "A brief description of the page"