Add tutorial on adding content Add tutorial on styling Add tutorial on templates Add configuration reference Add metadata reference Add template variables reference Add internationalization reference Add plugin system documentation Add creating templates documentation Add index page
240 lines
7.9 KiB
Markdown
240 lines
7.9 KiB
Markdown
# FolderWeb Documentation
|
|
|
|
Welcome to FolderWeb—a minimal PHP framework that turns your folder structure into a website. No build steps, no databases, no complexity. Just files, folders, and modern web standards.
|
|
|
|
## What is FolderWeb?
|
|
|
|
FolderWeb is a file-based content management system that:
|
|
|
|
- **Uses your folder structure as URL structure** — Drop files in folders, get pages
|
|
- **Works without JavaScript** — Pure PHP and modern CSS
|
|
- **Requires no build process** — Edit, save, refresh. Done.
|
|
- **Supports multiple languages** — Built-in i18n with URL-based language switching
|
|
- **Stays maintainable** — Code designed to last years or decades
|
|
|
|
Perfect for blogs, documentation sites, portfolios, and small business websites where simplicity and longevity matter.
|
|
|
|
## Quick Navigation
|
|
|
|
### New to FolderWeb?
|
|
|
|
Start here to get up and running:
|
|
|
|
1. **[Getting Started](01-getting-started/index.md)** — Installation and quick start guide
|
|
2. **[Adding Content](02-tutorial/01-adding-content.md)** — Learn how to create pages
|
|
3. **[Styling Your Site](02-tutorial/02-styling.md)** — Customize the design
|
|
4. **[Working with Templates](02-tutorial/03-templates.md)** — Control presentation
|
|
|
|
### Building a Site?
|
|
|
|
Practical guides for common tasks:
|
|
|
|
- **[Tutorial: Adding Content](02-tutorial/01-adding-content.md)** — Files, folders, metadata
|
|
- **[Tutorial: Styling](02-tutorial/02-styling.md)** — Modern CSS techniques
|
|
- **[Tutorial: Templates](02-tutorial/03-templates.md)** — Page and list layouts
|
|
|
|
### Need a Reference?
|
|
|
|
Look up specific features and options:
|
|
|
|
- **[Configuration](03-reference/01-configuration.md)** — Config file options
|
|
- **[Metadata](03-reference/02-metadata.md)** — Page and directory metadata
|
|
- **[Template Variables](03-reference/03-template-variables.md)** — Available template variables
|
|
- **[Internationalization](03-reference/04-internationalization.md)** — Multilingual setup
|
|
|
|
### Extending FolderWeb?
|
|
|
|
Advanced guides for developers:
|
|
|
|
- **[Plugin System](04-development/01-plugin-system.md)** — Create plugins with hooks
|
|
- **[Creating Templates](04-development/02-creating-templates.md)** — Advanced template creation
|
|
|
|
## Core Concepts
|
|
|
|
### File-Based Routing
|
|
|
|
Your folder structure **is** your URL structure:
|
|
|
|
```
|
|
content/
|
|
├── about.md → /about/
|
|
├── blog/
|
|
│ ├── index.md → /blog/
|
|
│ └── first-post/
|
|
│ └── index.md → /blog/first-post/
|
|
└── contact.html → /contact/
|
|
```
|
|
|
|
No configuration, no route definitions—just create folders and files.
|
|
|
|
### Content Types
|
|
|
|
FolderWeb supports three content types:
|
|
|
|
- **Markdown (`.md`)** — Write in Markdown, get HTML
|
|
- **HTML (`.html`)** — Static HTML content
|
|
- **PHP (`.php`)** — Dynamic content with PHP
|
|
|
|
Mix and match as needed. All three can coexist in the same directory.
|
|
|
|
### Template System
|
|
|
|
Templates control how content is presented:
|
|
|
|
- **Base template** — HTML scaffold (header, nav, footer)
|
|
- **Page template** — Wraps single-page content
|
|
- **List template** — Displays collections (blogs, portfolios)
|
|
|
|
Override defaults by creating `custom/templates/`.
|
|
|
|
### Metadata Files
|
|
|
|
Configure pages with `metadata.ini` files:
|
|
|
|
```ini
|
|
title = "My Page"
|
|
summary = "Short description"
|
|
date = "2024-12-15"
|
|
slug = "custom-url"
|
|
menu = 1
|
|
```
|
|
|
|
Control titles, URLs, navigation, templates, and more.
|
|
|
|
### Plugin System
|
|
|
|
Extend functionality with a simple hook system:
|
|
|
|
```php
|
|
Hooks::add(Hook::TEMPLATE_VARS, function(array $vars, Context $ctx) {
|
|
$vars['customVariable'] = 'value';
|
|
return $vars;
|
|
});
|
|
```
|
|
|
|
Three hooks provide extensibility without complexity.
|
|
|
|
## Philosophy
|
|
|
|
FolderWeb follows these principles:
|
|
|
|
### Minimalism
|
|
|
|
Use only what's strictly necessary. No frameworks, no build tools, no package managers for frontend code. If it doesn't provide clear, lasting value, it doesn't belong.
|
|
|
|
### Longevity
|
|
|
|
Code should be readable and maintainable for years or decades. Avoid rapidly changing components and dependencies. Favor web standards over abstractions.
|
|
|
|
### Simplicity
|
|
|
|
HTML, PHP, and CSS. That's it. No preprocessing, no transpiling, no complex build pipelines. Edit a file, refresh the browser, see the result.
|
|
|
|
### Performance
|
|
|
|
Fast page loads, minimal HTTP requests, no JavaScript parsing delay. Performance metrics displayed in the footer—transparency and pride.
|
|
|
|
## Documentation Structure
|
|
|
|
```
|
|
docs/
|
|
├── 01-getting-started/
|
|
│ └── index.md # Installation and quick start
|
|
├── 02-tutorial/
|
|
│ ├── 01-adding-content.md # How to create content
|
|
│ ├── 02-styling.md # Customizing styles
|
|
│ └── 03-templates.md # Working with templates
|
|
├── 03-reference/
|
|
│ ├── 01-configuration.md # Config options
|
|
│ ├── 02-metadata.md # Metadata fields
|
|
│ ├── 03-template-variables.md # Available variables
|
|
│ └── 04-internationalization.md # Multilingual setup
|
|
└── 04-development/
|
|
├── 01-plugin-system.md # Creating plugins
|
|
└── 02-creating-templates.md # Advanced templates
|
|
```
|
|
|
|
## Common Tasks
|
|
|
|
### I want to...
|
|
|
|
**...add a new page**
|
|
→ Create a `.md`, `.html`, or `.php` file in `content/`
|
|
→ See [Adding Content](02-tutorial/01-adding-content.md)
|
|
|
|
**...change the design**
|
|
→ Edit `custom/styles/base.css`
|
|
→ See [Styling Your Site](02-tutorial/02-styling.md)
|
|
|
|
**...customize the layout**
|
|
→ Copy and edit templates in `custom/templates/`
|
|
→ See [Working with Templates](02-tutorial/03-templates.md)
|
|
|
|
**...add a blog**
|
|
→ Create `content/blog/` with dated subfolders
|
|
→ See [Adding Content](02-tutorial/01-adding-content.md)
|
|
|
|
**...translate my site**
|
|
→ Enable the languages plugin and create language files
|
|
→ See [Internationalization](03-reference/04-internationalization.md)
|
|
|
|
**...add custom functionality**
|
|
→ Create a plugin in `custom/plugins/global/`
|
|
→ See [Plugin System](04-development/01-plugin-system.md)
|
|
|
|
**...add pages to the menu**
|
|
→ Set `menu = 1` in `metadata.ini`
|
|
→ See [Metadata Reference](03-reference/02-metadata.md)
|
|
|
|
**...use a different list layout**
|
|
→ Set `page_template = "list-grid"` in `metadata.ini`
|
|
→ See [Template Variables](03-reference/03-template-variables.md)
|
|
|
|
## Examples
|
|
|
|
FolderWeb includes extensive examples in `app/default/content/examples/`:
|
|
|
|
- **Markdown demo** — Full Markdown feature showcase
|
|
- **Cover images** — How cover images work
|
|
- **Metadata examples** — All metadata options demonstrated
|
|
- **Template demos** — Grid and compact list layouts
|
|
- **Multilingual** — Language support examples
|
|
- **Mixed formats** — Combining Markdown, HTML, and PHP
|
|
|
|
Browse the examples to see features in action.
|
|
|
|
## Getting Help
|
|
|
|
**Read the docs:**
|
|
Start with [Getting Started](01-getting-started/index.md) and work through the tutorial.
|
|
|
|
**Check examples:**
|
|
Look in `app/default/content/examples/` for working code.
|
|
|
|
**Review the code:**
|
|
FolderWeb is intentionally simple. Read the source in `app/` to understand how it works.
|
|
|
|
**File an issue:**
|
|
Found a bug or have a question? Open an issue on GitHub.
|
|
|
|
## Contributing
|
|
|
|
FolderWeb is open source and welcomes contributions:
|
|
|
|
- **Report bugs** — Open an issue with steps to reproduce
|
|
- **Suggest features** — Propose improvements (but remember: minimalism is key)
|
|
- **Share plugins** — Created a useful plugin? Share it with the community
|
|
- **Improve docs** — Found something unclear? Submit a pull request
|
|
|
|
## What's Next?
|
|
|
|
Ready to build? Start with [Getting Started](01-getting-started/index.md) to install FolderWeb and create your first page.
|
|
|
|
Or jump straight to:
|
|
- **[Tutorial: Adding Content](02-tutorial/01-adding-content.md)** — Learn the basics
|
|
- **[Configuration Reference](03-reference/01-configuration.md)** — Dive into details
|
|
- **[Plugin System](04-development/01-plugin-system.md)** — Extend functionality
|
|
|
|
---
|
|
|
|
**FolderWeb** — Just enough web, nothing more.
|