# CodePress CMS Guide ## Welcome to CodePress CMS CodePress is a lightweight, file-based Content Management System built with PHP and Bootstrap. ### Table of Contents 1. [Getting Started](#getting-started) 2. [Content Management](#content-management) 3. [Templates](#templates) 4. [Configuration](#configuration) --- ## Getting Started ### Requirements - PHP 8.4+ - Web server (Apache/Nginx) - Modern web browser - Write permissions for content directory ### Installation 1. Clone or download the CodePress files 2. Upload to your web server 3. Make sure the `content/` directory is writable 4. Navigate to your website in the browser ### Basic Configuration The most important settings are in `engine/core/config.php`: ```php $config = [ 'site_title' => 'My Website', 'default_page' => 'home', 'content_dir' => __DIR__ . '/../../content', 'templates_dir' => __DIR__ . '/../templates' ]; ``` --- ## Content Management {#content-management} ### File Structure ``` content/ ├── home.md # Home page ├── blog/ │ ├── index.md # Blog overview │ ├── article-1.md # Blog article │ └── category/ │ └── article.md # Article in category └── about-us/ └── info.md # About us page ``` ### Content Types CodePress supports four content types: #### Markdown (`.md`) ```markdown # Page Title This is page content in **Markdown** format with CommonMark extensions. ## Subsection - [x] Task list item - [ ] Another task - **Bold** and *italic* text - [Auto-linked pages](?page=another-page) ``` #### PHP (`.php`) ```php
This is dynamic content with PHP.
``` #### HTML (`.html`) ```htmlThis is static HTML content.
``` #### Directory Listings Directories automatically generate listings: - File information (size, dates) - Navigation to subdirectories - Responsive file listing layout #### PHP (`.php`) ```phpThis is dynamic content with PHP.
``` #### HTML (`.html`) ```htmlThis is static HTML content.
``` ### Automatic Linking CodePress automatically creates links to other pages when you mention page names in your content. ### Language Support - **Browser detection**: Automatic language detection - **URL switching**: `?lang=en` or `?lang=nl` - **Language prefixes**: `en.page.md` and `nl.page.md` - **Translation files**: `lang/en.php` and `lang/nl.php` ### Search Functionality - **Full-text search**: Search through all content - **Search URL**: `?search=query` for bookmarkable searches - **Result highlighting**: Search terms highlighted in results - **File and content search**: Searches both filenames and content --- ## Templates {#templates} ### Template Structure CodePress uses Mustache-compatible templates: - `layout.mustache` - Main template - `assets/header.mustache` - Header component - `assets/sidebar.mustache` - Sidebar navigation - `assets/footer.mustache` - Footer component ### Template Variables Available variables in templates: #### **Site Info** - `{{site_title}}` - Website title - `{{author_name}}` - Author name - `{{author_website}}` - Author website - `{{author_git}}` - Git repository link #### **Page Info** - `{{page_title}}` - Page title (filename without extension) - `{{content}}` - Page content (HTML) - `{{file_info}}` - File information (dates, size) - `{{is_homepage}}` - Boolean: is this the homepage? #### **Navigation** - `{{menu}}` - Navigation menu - `{{breadcrumb}}` - Breadcrumb navigation - `{{homepage}}` - Homepage link - `{{homepage_title}}` - Homepage title #### **Theme** - `{{header_color}}` - Header background color - `{{header_font_color}}` - Header text color - `{{navigation_color}}` - Navigation background color - `{{navigation_font_color}}` - Navigation text color #### **Language** - `{{current_lang}}` - Current language (en/nl) - `{{current_lang_upper}}` - Current language (EN/NL) - `{{available_langs}}` - Available languages - `{{t_*}}` - Translated strings (t_home, t_search, etc.) #### **SEO** - `{{seo_description}}` - Meta description - `{{seo_keywords}}` - Meta keywords #### **Features** - `{{has_content}}` - Boolean: is content available? - `{{show_site_link}}` - Boolean: show site link? - `{{is_guide_page}}` - Boolean: is this the guide page? --- ## Configuration {#configuration} ### Basic Settings Edit `config.json` in your project root: ```json { "site_title": "Your Website Name", "content_dir": "content", "templates_dir": "engine/templates", "default_page": "auto", "language": { "default": "en", "available": ["en", "nl"] }, "theme": { "header_color": "#0a369d", "header_font_color": "#ffffff", "navigation_color": "#2754b4", "navigation_font_color": "#ffffff" }, "author": { "name": "Your Name", "website": "https://yourwebsite.com", "git": "https://github.com/youruser/codepress" }, "seo": { "description": "Your website description", "keywords": "cms, php, content management" }, "features": { "auto_link_pages": true, "search_enabled": true, "breadcrumbs_enabled": true } } ``` ### SEO Friendly URLs CodePress automatically generates clean URLs: - `home.md` → `?page=home` - `blog/article.md` → `?page=blog/article` - `nl.page.md` → `?page=nl.page&lang=nl` ### Language Support - **Browser detection**: Automatic language detection - **URL switching**: `?lang=en` or `?lang=nl` - **Language prefixes**: `en.page.md` and `nl.page.md` - **Directory precedence**: Directories take precedence over files ### Search Functionality The built-in search function searches through: - File names - Content of Markdown/PHP/HTML files - Search URL: `?search=query` for bookmarkable searches - Result highlighting and snippets ### Directory Listings - **Auto-generation**: `?page=directory` shows directory contents - **File information**: Creation/modification dates and sizes - **Navigation**: Links to files and subdirectories --- ## Tips and Tricks ### Page Organization - Use subdirectories for categories - Give each directory an `index.md` for an overview page - Keep file names short and descriptive - Use language prefixes: `en.page.md` and `nl.page.md` - Directory names take precedence over files with same name ### File Naming Conventions - **Lowercase names**: Use lowercase for all files - **No spaces**: Use hyphens (-) or underscores (_) - **Language prefixes**: `en.` or `nl.` for multilingual content - **Display names**: `file-name.md` displays as "File Name" in menus - **Special cases**: `phpinfo` → "phpinfo", `ict` → "ICT" ### Content Optimization - Use clear headings (H1, H2, H3) - Add descriptive meta information - Use internal links for better navigation ### Security - Keep your CodePress installation updated - Restrict write permissions on the `content/` directory - Use HTTPS when possible --- ## Support ### Troubleshooting - **Empty pages**: Check file permissions - **Template errors**: Verify template syntax - **404 errors**: Check file names and paths ### More Information - Documentation: [CodePress GitHub](https://git.noorlander.info/E.Noorlander/CodePress.git) - Issues and feature requests: GitHub Issues --- *This guide is part of CodePress CMS and is automatically displayed when no content is available.*