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
105 lines
2.9 KiB
Markdown
105 lines
2.9 KiB
Markdown
# 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
|
|
|
|
1. Clone or download this repository
|
|
2. Point your web server's document root to /content
|
|
|
|
## Development
|
|
|
|
### Creating Content
|
|
|
|
1. Create a directory for your content in the document root
|
|
2. Add one or more content files (`.md`, `.php`, or `.html`)
|
|
3. Optionally add `metadata.ini` for title, date, and summary
|
|
4. Optionally add `cover.jpg|webp` for 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.ini` to `custom/config.ini` and 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.md` or `article.md`)
|
|
|
|
### Metadata
|
|
|
|
Use `metadata.ini` files for structured data:
|
|
|
|
```ini
|
|
title = "My Page Title"
|
|
date = "2025-11-01"
|
|
summary = "A brief description of the page"
|
|
```
|