Довідка

Якщо ви читаєте це, то генерація робочого каталогу на сервері відбулося без помилок і не потребує додаткових дій. В подальшому, цю сторінку можна видалити, вона створюється лише за відсутності інших php-файлів у папці /pages.

Скрипти написані для домашнього WEB-сервера однодискової станції Synology DS118, але можуть бути розгорнуті на будь-якому іншому ресурсі як є. Відповідальність за їх роботу і можливі наслідки лежить на користувачеві.

Пояснення роботи

Проєкт автоматично генерує файли, необхідні для розгортання у будь-якій папці сервера з PHP версій 7.* та вище. Роутінг підтримує використання коротких і красивих URL, що відповідає базовим умовам Readable Permanent URLs. Наприклад, замість /index.php?page=test користувач може перейти за коротким і зрозумілим шляхом /test.

Захист, дозволи і перенаправлення на ресурси прописані у .htaccess, який створюється для безпеки. Карта сайту sitemap.xml генерується по запросу на льоту із файла кешу.

Формат метаданих

Для захисту від прямого доступу до PHP-сторінок, потрібно додавати на початку кожного скрипта строку: defined('APP_ACCESS') or die('Direct access prohibited'); Приклад metadata поточної сторінки:

<?php
defined('APP_ACCESS') or die('Direct access prohibited');

/**
title: Довідка
description: Згенеровано автоматично при розгортанні проєкту
menugroup: Допомога
menutitle: Довідка
menuorder: 1
slug: test
layout: head
**/>

Наявність slug обов’язкова для всіх сторінок, він має бути унікальним серед усіх файлів, бо в разі конфлікту імен, - буде викликана сторінка перша за алфавітом. Якщо layout відсутній, або пустий, то використовується шаблон формування сторінки head.php по замовчанню. Метатеги menugroup призначені для формування меню сайта і використовуються по необхідності.

Структура каталогу

root/
├── assets/
│   ├── layout/
│   │   ├── head.php        # Шаблон основний (HTML, CSS, JS)
│   │   ├── header.php      # Шаблон заголовока, навігація
│   │   └── footer.php      # Шаблон нижньої частини сторінки
│   │
│   ├── css/
│	│	└── styles.css  	# Додатковий стиль для темної теми
│	│
│   ├── js/
│   │   ├── scrollToTop.js  # Плаваюча кнопка перехіду наверх
│   │   └── setTheme.js		# Перемикач темної/світлої теми
│	│
│   └── img/				# Загальні фони і зображення
│		
├── pages/
│   ├──  test.php           # Приклад сторінки з метаданими
│	└──	 archive.php		# Приклад сторінки з upload
│
├── cache/
│   ├── routes.json         # Результат парсингу папки pages, кеш
│	└── upload.json         # Результат парсингу папки upload, кеш
│
├── bin/
│   ├── routes.php          # Скрипт генерації кешу routes.json
│   └── upload.php          # Скрипт генерації кешу upload.json
│
├── upload/					# Розташування файлів для скачування
│
├── index.php               # Головна сторінка зі списком сторінок
├── view.php                # Скрипт для відображення сторінок
├── 404.html				# Сторінка сповіщення про помилку в URL
└── .htaccess               # Налаштування URL і безпеки

Перший запуск і перенесення

Розмістіть файли проекту на сервері в будь-яку папку і введіть її ім'я у браузері. В результаті, буде розгорнута структура файлів і директорій, яка показана вище. У подальшому папку можна перейменовувати, або переносити в інше місце WEB-сервера, видаливши попередньо файл .htaccess, після чого дані кешу і правила роутінгу будуть оновлені автоматично.