Принцип побудови системи

Web-система відрізняється відносно простою та наочною реалізацією — практично всі дані представлені об'єктами — перерахованими в таблиці "cat" бази даних.

Приклади об'єктів

  • Сторінка сайту — зазвичай має статус: видима (публічна) чи ні, дату публікації, "людино-зрозумілу" Url. Якщо Url не вказано — сторінка доступна за індексом (/?p=…), але заборонена для індексації пошуковими системами.
  • Модуль — наприклад: форма зворотного зв'язку ("feedback", id=-20). Текст цієї форми ("опис" об'єкта) зазвичай відображається аяксом у спливаючому вікні. Або може бути вставлений у текст сторінки — аяксом або при її формуванні на сервері. Після успішного виконання форми відображається текст "Анонс" об'єкта, до якого вставляється результат форми. У полі коментаря вказується e-mail (або список через кому) — кому надсилати результат форми (адміністратору сайту…).
  • Текст блоку, наприклад:
    • "Шапка" сайту
    • "Підвал" сайту
    • Форма авторизації ("вхід"), внутрішні сторінки - типи користувачів
    • Форма реєстрації, внутрішні сторінки — користувачі
  • Характеристики (параметри) — наприклад: товарів. Характеристика може містити внутрішніми сторінками значення.
    Сторінка сайту (список сторінок) може містити фільтр сторінок за значеннями характеристик.
    Зв'язок характеристики зі сторінкою зберігається у таблиці "r", у цій таблиці може зберігатися і текстове значення характеристики кожної мови сайту.

Поля об'єкта в таблиці

  1. id
  2. ім'я ("name" для основної мови, для інших мов, наприклад: "name_en")
  3. анонс ("adt" для основної мови, інших мов, наприклад: "adt_en") — короткий текст
  4. примітка (note)
  5. батько ("parent")
  6. картинка ("img") і статус цієї картинки ("vimg") — показувати скрізь або тільки в список сторінок. Файл розміщено у папці "/i/cat"
  7. порядковий номер ("ord")
  8. статус ("v") — прихований, публічний або особливий
  9. тип ("final") — наприклад, для вказівки типу користувача: адмін, клієнт, новий… Назва склалася історично: так позначав фінальну сторінку каталогу, що містить товари
  10. кількість вкладених сторінок ("c") — як ознака їх наявності
  11. власник сторінки ("owner") — корисно, наприклад, для магазину з кількома продавцями
  12. дати створення ("d0"), публікації ("d1"), події ("d1")

Сторінка сайту зазвичай пов'язана з таблицею текстів `url`

  1. id = id об'єкта
  2. текст опису ("text" для основної мови, для інших мов, наприклад — "text_en")
  3. текст мета-даних ("meta" для основної мови, для інших мов, наприклад — "meta_en")
  4. людино-зрозумілий текст посилання ("url" для основної мови, для інших мов, наприклад — "url_en")
  5. дата зміни ("t")

Сторінки користувачів пов'язані з таблицею `person`

  1. id = id об'єкта
  2. e-mail ("mail")
  3. хеш пароля ("psw") — текст, за яким перевіряється правильність пароля — але який перетворити на пароль неможливо
  4. хеш тимчасового пароля ("new") — якщо користувач забув свій пароль, він може запросити на e-mail посилання з тимчасовим паролем: після авторизації поле очищається
  5. ознака: чи відобразити у формі авторизації капчу ("captcha") — якщо була спроба авторизації з неправильним паролем — захист від підбору пароля.

Звязки між об'єктами зберігаються в таблиці "r"

  1. `r` — id першого об'єкта
  2. `a` — довідник — id іншого об'єкта чи батька іншого об'єкта
  3. `b —` опція довідника — інший об'єкт є вкладеною сторінкою об'єкта `a`
  4. `c` — підопція довідника — порядковий номер при множинному виборі з довідника
  5. `s —` текстове значення зв'язку для основної мови
  6. `s_en` (приклад для англійської мови) — текстове значення для неосновної мови

Файли об'єкта

Будь-який об'єкт може мати свій файл (ім'я в полі "img") — наприклад: титульну картинку - у папці "/i/cat/" (ім'я файлу складається з id об'єкта та розширення файлу).

Також будь-який об'єкт може мати свою "галерею файлів" (всередині папки "/i/cat/" — у папці з ім'ям id об'єкта).
Файли галереї перераховані в таблиці "files" (files.cat=cat.id), там кожному файлу вказуються тексти підпису всіма мовами сайту. спочатку це початкове ім'я файлу (до приведення в малий регістр та трансліту) можуть редагуватися.

Зображення на сторінці можна вказати бажані розміри — запит до програми "img.php"— наприклад: «src="/?img=/i/cat/1.jpg&w=80&h=60"» — вказуючи ширину та/або висоту в пікселях. Якщо одночасно вказані ширина і висота — можна вказати: вписати картинку в розмір (&m) — а не обрізати. Можна вказати, що потрібно збільшити зображення до вказаних розмірів (&z).

Програма створює тимчасовий файл, якщо він не був створений раніше. Якщо тимчасовий файл вже створено — він просто читається браузеру.
Картинка передається із заголовком, що дозволяє кешування файлу браузером.
Є в "адмінці" інструмент для видалення всіх цих тимчасових файлів.

Ієрархія об'єктів

В "адмінці" наочно представлена ​​ієрархія об'єктів — починаючи від кореневих (у яких id батька дорівнює нулю).

Об'єкту можна додавати вкладені об'єкти, вказувати їх черговість ("ord"), статус ("v" - видимий, прихований ...), редагувати дані будь-якого об'єкта у формі редагування.

Можлива будь-яка кількість розділів з будь-якою глибиною вкладення.

Наявність інструментів підключення до сторінок файлів стилів та скриптів — з можливістю їх створення та редагування, наочного відображення зв'язків — дозволяє реалізовувати скільки завгодно великий проект.