tuduf.ruhobbymade.it › FFFF

write: 04/09/2025 # / modified: 08/09/2025

Авторство

Файловая CMS, то есть система управления контентом, использующая файловую систему в качестве/заместо базы данных. Система написана Nicolas Peugnet - Github - Website в 2018 году. И практически с тех самых пор этот сайт крутится на этом движке.

Принцип

В каталоге /public содержится общедоступный контент веб-сайта. Внутри него каждая папка является страницей. Таким образом, URL страницы является путем к её папке (после public/)

Содержимое страницы автоматически формируется на основе содержащихся в ней файлов.

Из этого правила есть только два исключения: в каждой папке/на каждой странице может быть файл с параметрами и папка с ресурсами:

Структура

ffff
│   .gitignore
│   .htaccess
│   index.php
│   params.yaml          # файл конфигурации страницы
│   README.md
│   sample.params.yaml
│
├───inc                  # Файлы, которые вы хотите разместить на каждой странице, например:
│   ├───css              #     ваши таблицы стилей,
│   ├───img              #     изображения (например, значок),
│   ├───js               #     скрипты,
│   └───php              #     и php файлы.
├───lib                  # Все классы php в CMS.
├───public               # Общедоступный каталог, содержащий ваш веб-сайт.
├───res                  # Файлы ресурсов, используемые CMS.
│   └───styles           #     файлы стилей (css или php)
│       └───fonts        #     файлы шрифтов
├───tmp                  # Временный каталог, содержащий файлы кэша.
└───tpl                  # Шаблоны
    ├───layouts
    │       default.php
    └───views
            li.cover.php
            li.title.php

Основная конфигурация

В корне проекта вы можете добавить файл общей конфигурации: /params.yaml Например, там можно изменить название сайта.

Вот все настройки, которые вы можете задать внутри (порядок не имеет значения).

# general settings
site:
  name: website-name
  description: A description

# advanced settings
date formats:
  - d/m/Y H:i:s
  - d/m/Y H:i
  - d/m/Y

page defaults:
  cover: /inc/img/default-cover.png
  sort:
    - type: title | name | lastModif | date
      order: asc | desc
  render:
    - cover | title
  layout: default
  assets dir: assets
  external links:
    arrow: true
    new tab: true

# you don't really need to edit these settings
system:
  public dir: public

Добавление контента

Содержимое хранится в общедоступном каталоге, имя которого можно указать в основной конфигурации. По умолчанию используется /public.

Создание страницы

Чтобы создать страницу, вам нужно всего лишь создать папку в общем каталоге. Название папки автоматически станет названием страницы, но вы можете изменить его в файле параметров страницы. Затем вы можете добавить содержимое этой страницы в папку.

Содержимое страницы

Существует два способа организации контента на странице в зависимости от её структуры:

Персонализация

Папка /inc предоставляет возможности для персонализации. Она будет добавлять автоматически на все страницы:

Конфигурация страницы

В папку каждой страницы можно добавить файл конфигурации params.yaml: Вот параметры, которые можно использовать в этом файле (порядок не имеет значения):

title: Un Titre        # переопределить автоматическое название страницы

cover: une-image.jpg   # переопределить автоматически заданную обложку

date: 2018-04-12       # задать дату для этой страницы

ignore:                # файлы или папки, которые нужно исключить
  - un-fichier
  - un-autre
  - un-dossier

layout: test-layout    # использовать другой макет на PHP из `/tpl/layouts`

render:                # метод отрисовки для подстраниц
  - title              # метод для подстраниц первого уровня
  - cover              # метод для подстраниц второго уровня

sort:                  # метод сортировки для подстраниц
  - type: name         # тип сортировки для подстраниц уровня 1
    order: asc         # порядок сортировки для подстраниц уровня 1
  - type: lastModif    # тип сортировки для подстраниц уровня 2
    order: desc        # ...

custom:                # пользовательские настройки
  render:              # пользовательский рендеринг
    un-fichier: cover  # рендеринг "без изменений" в качестве обложки
  sort:                # пользовательская сортировка: начинается с "hello", затем "world" и заканчивается "2014"
    - hello
    - world
    - *
    - 2014

bypass:
  styles: true         # обход стилей по умолчанию
  scripts: true        # обход скриптов по умолчанию

styles:                # добавление таблиц стилей для этой страницы
  - un-fichier.css

scripts:               # добавление скриптов для этой страницы
  - un-script.js
  - https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.0/p5.js

favicon: image.png     # переопределение иконки по умолчанию

assets dir: assets     # переопределяет имя каталога активов по умолчанию

Каталог Активов

Папка assets — это специальная папка, которую можно создать на каждой странице. У неё есть несколько особенностей:

Имя папки с ресурсами для каждой страницы можно указать в её параметрах.

Использование шаблонов

Шаблоны хранятся в каталоге /tpl . Существует два типа шаблонов: layouts и views.

Макеты

Макет — это общая структура страницы. Скорее всего, вы будете использовать только один макет для каждой страницы. Один из них уже есть в исходном коде и используется по умолчанию: default.php.

Чтобы использовать другой шаблон по умолчанию, необходимо добавить PHP-файл в /tpl/layouts и указать его в основном params.yaml.

Вы также можете использовать макет для конкретной страницы, просто отредактировав конфигурацию страницы.

Представления

Представления — это различные способы отображения элементов страницы. Представления имеют следующее правило записи:

<type>.<name>.php

Например, представление элемента списка с именем title будет li.title.php

О Кеше

При каждом рендеринге страницы ffff будет создавать кэш для этой страницы, чтобы ускорить последующие рендеринги.

Каждый раз при отображении страницы ffff будет проверять в кэше (/tmp), есть ли там данные для этой страницы. Если есть, то страницу не нужно рендерить, она будет загружена напрямую из кэша. Если данных нет или они устарели, то страница будет отрендерена заново.

Модернизация и улучшения

Ввиду того, что прошло уже порядка 7 лет, автор забросил проект и код уже порядком устарел. Например в оригинале для рендера markdown был использован PHP Markdown версии "1.0.2" от 2013 года.

Что было сделано:

tags: php programming javascript web