Экосистема проекта
Историко-краеведческий проект «Матушка-Заступница»
Три сервиса. Одна учётная запись. Один проект.
Наш проект — это не один сайт, а целая экосистема из трёх взаимосвязанных сервисов. Участник один раз регистрируется в личном кабинете и получает доступ ко всем частям проекта: к архиву документов, к мероприятиям, к храму. Ниже — подробное описание каждого сервиса.
Сервисы
Как связаны сервисы
Все три части экосистемы используют одну учётную запись. Это значит, что участник проходит регистрацию только один раз — в личном кабинете. После этого он автоматически получает доступ к архиву, если заявка одобрена, и может пользоваться всеми возможностями проекта без повторных входов.
Как получить доступ
-
айдите на lk.matushka-zastupnitsa.ru и зарегистрируйтесь.
-
Подайте заявление на вступление в состав участников проекта или на доступ к архиву документов (или другое)
-
Дождитесь одобрения администрации — обычно это занимает до 5 рабочих дней.
-
После одобрения вам откроется доступ к архиву и другим частям экосистемы.
-
Войдите в архив под своим email и паролем — все материалы проекта станут доступны.
Часто задаваемые вопросы
Нужно ли регистрироваться в каждой части проекта отдельно?
Может ли обычный посетитель посмотреть архив?
Открыт ли раздел храма для всех?
Как долго рассматривается заявка на доступ?
Куда обращаться, если что-то не работает?
query("
SELECT d.*, u.full_name AS uploader_name
FROM documents d
LEFT JOIN users u ON u.id = d.uploaded_by
ORDER BY d.category, d.doc_year DESC, d.title
");
$documents = [];
while ($row = $docs_result->fetch_assoc()) {
// Проверяем, в избранном ли у пользователя этот документ
$row['is_favorite'] = $is_logged
? is_favorite($conn, $user['id'], $row['id'])
: false;
$documents[] = $row;
}
// 7. Группируем документы по категориям
$by_category = [];
foreach ($documents as $d) {
$by_category[$d['category']][] = $d;
}
// 8. Собираем уникальные разделы для фильтра
$sections_list = [];
$sec_res = $conn->query("
SELECT DISTINCT section
FROM documents
WHERE section IS NOT NULL AND section != ''
ORDER BY section
");
while ($s = $sec_res->fetch_assoc()) {
$sections_list[] = $s['section'];
}
// 9. Общее количество документов
$total_count = count($documents);
// 10. Flash-сообщение (например, после загрузки документа)
$flash = null;
if (!empty($_SESSION['flash'])) {
$flash = $_SESSION['flash'];
unset($_SESSION['flash']);
}
// 11. Считаем избранное
$fav_count = 0;
if ($is_logged) {
$fav_count = (int)$conn->query("
SELECT COUNT(*) FROM favorites WHERE user_id = " . (int)$user['id']
)->fetch_row()[0];
}
// 12. SEO-настройки страницы
$seo_title = 'Архив документов — ИКПМЗ «Матушка-Заступница»';
$seo_desc = 'Электронный архив историко-краеведческого проекта: '
. 'метрические книги, исповедальные ведомости, ревизские сказки. '
. 'Всего дел: ' . $total_count . '.';
$seo_url = ARCHIVE_URL . '/catalog.php';
?>
= e($seo_title) ?>
О примере кода на этой странице
Здесь показан фрагмент реального кода одной из страниц проекта — публичного каталога архива. Это учебный пример: он демонстрирует, как устроена страница изнутри — от подключения к базе данных до вывода информации на экран. Некоторые части кода намеренно скрыты — в частности, строки подключения к базе данных, доступы и служебные функции. Это сделано в целях безопасности: раскрывать их публично нельзя. Если вы заметили, что какой-то фрагмент «отсутствует» или «не работает» — так и задумано. Пример показывает логику и структуру, а не является рабочей копией. Проект написан вручную, без использования готовых CMS. Мы ценим открытость: пусть участники и гости видят, как всё устроено внутри.