Каменецкое благочиние
Современная система управления церковным контентом для 30 приходов Каменецкого благочиния
О платформе
30 приходов
Каждый храм имеет собственную страницу с историей, расписанием богослужений, контактами настоятеля и GPS-навигацией
Расписание
Актуальное расписание богослужений с удобной навигацией по дням и праздникам
Интерактивная карта
Карта всех храмов с построением маршрута, координатами и ссылками на навигаторы
Технологический стек
История платформы
Полное восстановление страницы версионирования: структура, CSS-классы, хронология
Контекст: Страница /platform-version/ была повреждена в результате некорректных операций с базой данных. Дубли заголовков (Платформа x2, О платформе x2, Текущая версия x4, Разработка x2), версии в произвольном порядке, отсутствовали CSS-классы pv-release для стилизации.
Выполненные работы:
- Полностью перестроена структура страницы: hero-блок (pv-hero) с бейджем, заголовком, подзаголовком, бейджем текущей версии и датой обновления
- Карточки О платформе (pv-card x3): 30 приходов, Расписание, Интерактивная карта — с SVG-иконками
- Блок Технологический стек (pv-tech-grid x8): CMS, PHP, Тема, Разработка, Хостинг, Сервер, БД, Тест
- Хронология версий: 67 записей от 1.17.3 до 1.0.0, каждая обёрнута в pv-release с pv-release-header (версия + дата) и pv-release-changes (описание)
- Блок Разработка и поддержка (pv-dev-card) с данными разработчика, платформы и продукта
- Удалены все дублирующиеся секции — чистая последовательная структура
Результат: Страница /platform-version/ полностью восстановлена. Все 67 версий отсортированы по убыванию (1.17.3 до 1.0.0), каждая содержит контекст, описание изменений и результат. CSS-классы pv-release обеспечивают стилизацию: бейдж версии, дата, список изменений. Данные хранятся в базе данных WordPress (post ID 14586, post_type page).
Первичное восстановление страницы версионирования из ревизий WordPress
Контекст: Страница /platform-version/ была утеряна после некорректных операций с БД. Единственный источник данных — ревизия 16495 WordPress (89 291 байт, содержимое версий 1.16.5 до 1.0.0).
Выполненные работы:
- Извлечены данные из ревизии 16495 через WP-CLI: wp post get 16495 —field=post_content
- Восстановлен блок-вступление с описанием платформы, её назначения и ключевых возможностей
- Созданы карточки О платформе (pv-card x3) и блок Технологический стек (pv-tech-grid x8)
- Добавлены записи версий 1.17.1 и 1.17.0 (механизмы синхронизации PROD-TEST, REST API)
- Данные вставлены в БД через PDO (прямое подключение к MySQL) — $wpdb->update() не справлялся с большими объёмами контента
Результат: Восстановлена базовая структура страницы версионирования. Дальнейшая работа (уборка дублей, стилизация CSS-классами) выполнена в задании 71.
Синхронизация PROD-TEST: перенос новостей, вложений, кеширование ресурсов
Контекст: Новые записи (новости) создавались модераторами на продуктовом сайте, но отсутствовали на тестовой площадке. Развитие платформы на test требовало актуального контента для тестирования нового функционала.
Выполненные работы:
- Перенесены 3 новые записи (новости) с prod на test через WP REST API с Application Passwords
- Перенесены связанные медиафайлы (вложения) через REST API media endpoint
- Обновлена версия темы: style.css (Version: 1.17.1), footer.php (Версия платформы 1.17.1)
- Добавлены параметры ?ver= для кеширования статических ресурсов (CSS/JS) — при обновлении версии браузер автоматически загружает актуальные файлы
Результат: Тестовая площадка синхронизирована с продакшн по контенту новостей. Механизм односторонней синхронизации PROD-TEST работает через WP REST API с аутентификацией Application Passwords. Кеширование ?ver= обеспечивает автоматическую инвалидацию кеша браузера при обновлении темы.
Настройка WP REST API и Application Passwords для межсайтовой синхронизации
Контекст: Необходим автоматический механизм синхронизации контента между тестовой и продуктовой площадками без ручного копирования файлов и SQL-дампов.
Выполненные работы:
- Настроен WP REST API на обоих сайтах (test и prod) — доступ к CRUD-операциям через HTTP
- Созданы Application Passwords для пользователя admin на prod — отдельные учётные данные для API-запросов без передачи основного пароля
- Добавлен заголовок Authorization в .htaccess (RewriteRule .* — [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]) для корректной работы HTTP Basic Auth через Application Passwords
- Обновлены инструкции 01-08 по работе с платформой: документация по REST API, аутентификации, синхронизации, деплою
- Проведены тестовые запросы: GET /wp-json/wp/v2/posts, POST /wp-json/wp/v2/media — аутентификация работает
Результат: Настроен механизм безопасной межсайтовой синхронизации через REST API. Application Passwords (имя: 83Gr34c1271) обеспечивают отдельные учётные данные для автоматизированных операций без риска компрометации основного пароля администратора. Работа на test не влияет на prod — деплой выполняется осознанно.
Двусторонняя синхронизация TEST-PROD и деплой 7 файлов темы
Контекст: Тестовая и продакшн площадки разошлись по контенту: на prod создавались новости, на test — разрабатывался новый функционал. Требовалась двусторонняя синхронизация.
Выполненные работы:
- Деплой 7 файлов темы с test на prod через FTP (hoster.by vh137): template-parts/, functions.php, style.css, шаблоны страниц
- Перенесены новости и фотографии с prod на test — 4 новые записи через REST API
- Обновлена версия темы на prod до 1.16.7
- Синхронизированы template-parts, style.css, functions.php — единая кодовая база на обоих сайтах
Результат: Продуктовый сайт обновлён до актуальной версии темы. Тестовая площадка синхронизирована по контенту с prod. Механизм двусторонней синхронизации работает: FTP для файлов темы, REST API для контента.
Синхронизация TEST-PROD: определение разницы через REST API, перенос 4 записей
Контекст: На prod были созданы новые записи, отсутствующие на test. Требовалась идентификация и перенос недостающего контента.
Выполненные работы:
- Определение разницы между сайтами: сравнение slug через REST API (GET /wp-json/wp/v2/posts?per_page=100) с последующим urldecode() кириллических slug
- Идентифицированы 4 новые записи на prod, отсутствующие на test
- Перенесены посты с медиафайлами через WP REST API
- Обновлена база знаний платформы на тестовой площадке
Результат: Тестовая площадка обновлена актуальным контентом. Методика определения разницы через REST API + urldecode() работает корректно для кириллических slug — позволяет точно выявлять недостающие записи без SQL-сравнения.
Визуальная обратная связь: кнопка копирования, toast-уведомления, Clipboard API fallback
Контекст: Кнопка Скопировать ссылку в лайтбоксе новостей не давала пользователю обратной связи — непонятно, скопировалась ссылка или нет. На HTTP Clipboard API не работает из-за ограничений безопасного контекста.
Выполненные работы:
- Кнопка Скопировать ссылку получила визуальную обратную связь: зелёная подсветка при успешном копировании, красная при ошибке
- Для случаев, когда Clipboard API недоступен (HTTP без TLS, старые браузеры), реализован fallback через prompt() с ссылкой для ручного копирования
- Добавлен toast-уведомление при открытии фото в лайтбоксе — краткая подсказка
- Проверена совместимость на iOS Safari, Android Chrome, десктопных браузерах — копирование работает на всех платформах
Результат: Пользователь получает мгновенную визуальную обратную связь при копировании ссылки. Работоспособность обеспечена на всех современных браузерах, включая мобильные платформы с ограничениями Clipboard API. Fallback через prompt() гарантирует работоспособность даже в небезопасном контексте (HTTP).
Исправление кнопки копирования: обращение отца Николая, отладка на prod
Контекст: Отец Николай (приходский священник) сообщил, что кнопка Скопировать ссылку в лайтбоксе не работает — ссылка не копируется в буфер обмена.
Выполненные работы:
- Исправлена неработоспособность кнопки: определена причина — Clipboard API требует безопасного контекста (HTTPS) или специальных разрешений
- Добавлено логирование в консоль (console.log) для отладки на продакшн-сервере
- Проведена отладка непосредственно на продуктовом сайте: тестирование на реальном HTTPS-соединении
- Обновлена версия темы до 1.16.4
Результат: Кнопка Скопировать ссылку работает корректно на всех устройствах. Отладка проведена на реальном продакшн-сервере. Определена корневая причина (Clipboard API + HTTPS), что повлияло на реализацию fallback-механизма в версии 1.16.5.
Исправление кодировки UTF-8: устранение мозаичных символов на странице версионирования
Контекст: Страница /platform-version/ отображала мозаичные символы вместо кириллического текста — проблемы кодировки при сохранении PHP-файлов.
Выполненные работы:
- Определена причина: PHP-файлы сохранялись через PowerShell с BOM (Byte Order Mark) — UTF-8 с BOM приводил к некорректной интерпретации кириллицы в браузере
- Все PHP-файлы темы пересохранены в UTF-8 без BOM через PHP file_put_contents() с флагом 0 (без BOM)
- Проверена корректность отображения кириллицы на всех страницах
- Добавлено правило: PHP-файлы с кириллицей ВСЕГДА сохраняются через PHP, НЕ через PowerShell
Результат: Страница /platform-version/ корректно отображает кириллический текст. Проблема с кодировкой устранена. Установлено правило: PHP-файлы с кириллицей сохраняются только через PHP (file_put_contents с UTF-8 без BOM).
Мобильное меню: свёрнутые секции, SVG-иконки, двухколоночная сетка храмов
Контекст: Мобильное меню на смартфонах отображало все подменю развёрнуто — длинный список из 30 храмов и пунктов меню, некомпактно и неудобно.
Выполненные работы:
- Подменю в мобильном меню свёрнуты по умолчанию — раскрываются при клике на родительский пункт
- Добавлены SVG-иконки для каждого раздела: новости, о благочинии, благочиние, контакты, платформа
- Подменю Храмы организовано в двухколоночную сетку — 30 храмов компактно размещены в два столбца
- Оптимизированы обработчики кликов: привязка к существующим DOM-элементам без дублирования событий
Результат: Мобильное меню работает компактно и интуитивно. Секции раскрываются по требованию, SVG-иконки визуально идентифицируют разделы, двухколоночная сетка эффективно использует пространство экрана смартфона.
Обогащение страниц храмов: история, настоятели, литература из kamlib.by
Контекст: Страницы храмов содержали минимальную информацию: название, адрес, фото. Отсутствовали исторические сведения, данные о настоятелях, рекомендованная литература.
Выполненные работы:
- Парсинг страниц kamlib.by (Каменецкая городская библиотека) по каждому из 30 приходов — извлечение исторических данных
- На страницы храмов добавлены разделы: История прихода, Настоятели (список с периодами служения), Литература (рекомендованные книги)
- Добавлены ссылки на первоисточники (kamlib.by) для каждой записи
- Данные отсортированы по храмам, размещены в структурированном формате с заголовками и списками
Результат: Каждый из 30 храмов получил развёрнутую историческую справку на основе данных библиотечного фонда. Страницы храмов стали информативнее — посетители получают доступ к истории прихода, списку настоятелей и рекомендованной литературе.
Корректировка GPS-координат и адресов: сверка через Google Maps и Яндекс-карты
Контекст: GPS-координаты части храмов были некорректны: при построении маршрута Яндекс-карты вели в неверное место (соседние населённые пункты вместо храмов).
Выполненные работы:
- Проверены GPS-координаты всех 30 храмов через Google Maps и Яндекс-карты
- Обнаружены и исправлены ошибки координат для 5 храмов (Видомля, Огородники, Волька, Пески и др.)
- Сверены адреса с данными kamlib.by и официальными источниками (УПЦ)
- Обновлены метаданные в БД (meta _latitude, _longitude) для каждого храма через WP-CLI
Результат: GPS-координаты всех 30 храмов приведены к фактическому расположению. Кнопка Как добраться ведёт пользователя точно к храму, а не в соседний населённый пункт. Навигация работает корректно на Яндекс.Картах и Google Maps.
Интерактивные Яндекс-карты на страницах храмов: маркеры, маршруты, координаты
Контекст: На страницах храмов не было карт — посетители не могли визуально определить расположение и построить маршрут.
Выполненные работы:
- Интегрирован API Яндекс-Карт (JavaScript API v3) на страницы всех 30 храмов
- На каждой карте отмечен маркер точного расположения храма
- Добавлены ссылки-кнопки: Как добраться (Яндекс.Карты), Открыть в Google Maps
- Отображаются GPS-координаты храма
- Реализована адаптивная вставка: карта корректно отображается на десктопе и мобильных устройствах
Результат: Посетители сайта могут визуально определить расположение каждого из 30 храмов и построить маршрут. Интеграция с Яндекс-Картами и Google Maps обеспечивает выбор удобного навигатора.
Выпадающее меню Храмы: dropdown, SVG-иконки, двухколоночная сетка
Контекст: Для перехода к конкретному храму пользователю необходимо было сначала открыть страницу /hramy/, затем найти нужный храм в списке из 30 карточек.
Выполненные работы:
- Реализован dropdown-механизм для пункта Храмы в главном меню — при наведении/клике раскрывается подменю
- Каждый храм в подменю отображается с SVG-иконкой и названием
- Подменю организовано в двухколоночную сетку для компактного размещения 30 пунктов
- Анимация раскрытия/свёртывания подменю, закрытие при клике вне области
- Адаптивность: на мобильных устройствах подменю перестраивается в одноколоночный вид
Результат: Навигация по храмам стала удобнее: 30 приходов доступны из главного меню с визуальной идентификацией (иконки) и компактным расположением (две колонки). Пользователь мгновенно находит нужный храм без перехода на отдельную страницу-каталог.
Исправление дубля категории Богослужения и конфликта редактирования святого
Контекст: Обнаружена дублирующаяся категория Богослужения (ID 14) с фейковым slug — автоматически сгенерированный при импорте. Посты были разделены между двумя категориями с одинаковым названием.
Выполненные работы:
- Обнаружена фейковая категория ID 14 (slug: bogosluzheniya-2) — дубль основной категории ID 6 (slug: bogosluzheniya)
- Все посты из фейковой категории ID 14 перенесены в основную ID 6 через WP-CLI
- Фейковая категория ID 14 удалена из БД
- Восстановлена страница святого Симеона Столпника после конфликта параллельного редактирования модератором
Результат: Категория Богослужения единая (ID 6, slug: bogosluzheniya). URL /category/6/ работает корректно. Страница святого восстановлена в полном объёме.
Загрузка данных на prod: восстановление страницы святого после конфликта
Контекст: Модератор внёс изменения на prod, которые перезаписали данные страницы святого из тестовой площадки. Требовалось повторное обновление.
Выполненные работы:
- Повторно загружена страница святого Симеона Столпника (post 14258) на prod через REST API
- Восстановлены все 7 блоков div.saint-block (фото слева float, текст справа ~60% ширины)
- Восстановлены метаданные изображений (названия, подписи, ALT)
Результат: Страница святого на prod восстановлена в актуальном состоянии. Механизм деплоя через REST API работает — повторная загрузка данных выполняется за секунды.
Привязка новостей к храмам: Meta Box, admin notice, перекрёстные ссылки, 2339 связей
Контекст: Новости на сайте не были связаны с конкретными храмами — невозможно было на странице храма увидеть новости прихода.
Выполненные работы:
- Meta Box Привязанный храм в админке WordPress: при создании/редактировании новости выбирается один из 30 храмов (CPT temple)
- Admin notice — уведомление в админке для напоминания о необходимости привязки новостей к храмам
- Двусторонняя навигация: на странице храма отображается лента новостей прихода, на странице новости — блок Новости храма
- Массовое создание связей: через WP-CLI создано 2339 связей новость-храм для существующих записей
Результат: Каждая новость привязана к конкретному храму. Посетитель страницы храма видит все новости прихода; на странице новости видит, к какому храму она относится. Перекрёстные ссылки создают единую навигационную структуру.
Синхронизация PROD-TEST: 7 постов, 6 медиафайлов, featured images, меню
Контекст: Тестовая площадка отставала от prod по контенту: модераторы создавали новости на prod, но они не появлялись на test.
Перенесено:
- 7 новых постов (новости) с prod на test через WP REST API
- 6 медиафайлов (фотографии WebP) — вложения к новостям
- Featured images (обложки постов) — метаданные _thumbnail_id
- Навигационные структуры (меню) — обновлён порядок пунктов
Результат: Тестовая площадка актуализирована по контенту. Механизм синхронизации через WP REST API работает стабильно на протяжении нескольких итераций.
Восстановление страницы версионирования: полная история 1.0.0-1.13.5 из SQL-дампов
Контекст: Страница /platform-version/ была утеряна после миграций и некорректных операций с БД.
Выполненные работы:
- Восстановлены версии 1.0.0-1.9.1 из SQL-дампов (escrow-хранилище)
- Добавлены версии 1.10.0-1.13.4 из текущей ревизии БД
- Создана новая запись версии 1.13.5
- Каждая версия содержит структуру: Зачем это было нужно — Что сделано — Результат
Результат: Страница /platform-version/ содержит полную хронологию развития платформы с 1.0.0 по 1.13.5. Каждая запись описывает контекст изменений, технологические детали и результат для пользователя.
Исправление лайтбокса: figure к JS напрямую, ширина 960px, удаление мёртвых ссылок
Контекст: После внедрения лайтбокса остались баги: ширина страницы храмов не совпадала с новостями, нерабочие скрытые ссылки внутри figure-элементов.
Выполненные работы:
- Лайтбокс: элементы figure привязаны к JS напрямую (без промежуточных скрытых ссылок)
- Ширина страницы храмов: установлена 960px (десктоп) и 780px (мобильные) — единообразно с новостями
- Удалены нерабочие скрытые ссылки (href=#) внутри figure-элементов
- Проверена работа лайтбокса на всех типах страниц (храмы, новости, святые)
Результат: Лайтбокс работает стабильно на всех страницах. Ширина контента единообразна (960px/780px). Все кликабельные элементы ведут к реальным действиям.
Лайтбокс для фото святого: увеличение, листание, подписи, hover-эффект
Контекст: Фотографии на странице святого Симеона Столпника (7 стендов) не увеличивались при клике — не было механизма просмотра в большом размере.
Выполненные работы:
- Клик по любому фото открывает его в полноэкранном лайтбоксе
- Навигация: стрелки влево/вправо для листания между 7 фото
- Подпись изображения отображается под увеличенным фото
- Закрытие: крестик, клавиша Escape, клик вне фото
- Единая ширина фото в тексте: 350px — все изображения выровнены
- Hover-эффект: при наведении на фото — подсветка рамкой (cursor: pointer)
Результат: Фотографии на странице святого доступны для детального просмотра. Пользователь может увеличить каждое из 7 фото, листать галерею и видеть подписи. Визуальное оформление единообразно.
Реорганизация вёрстки святого: div.saint-block, float-макет, адаптивность
Контекст: По замечаниям Алексея: 7 блоков фото + текст на странице святого отображались последовательно, фото и текст не компоновались — страница была длинной и нечитаемой.
Выполненные работы:
- 7 блоков фото + абзац обёрнуты в div.saint-block с float:left/max-width:40% для фото
- Текст обтекает фото справа (~60% ширины)
- Добавлено мобильное правило @media (max-width: 600px) — на узких экранах фото и текст идут последовательно
- Убраны инлайновые style=width:XXXpx и классы alignleft/alignright — единый CSS-класс .saint-block
Результат: Страница святого отображает 7 пар фото + текст в компактном макете: фото слева (40%), текст справа (60%). На мобильных устройствах блоки перестраиваются в вертикальный порядок.
Текст о Симеоне Столпнике из OCR-скана, 7 фото стендов в тексте
Контекст: Страница святого Симеона Столпника не имела текстового контента — только заголовок и одно фото.
Выполненные работы:
- Распознан текст о преподобном Симеоне Столпнике из OCR-скана (библиотечный фонд kamlib.by)
- Текст раздела про Каменец возвращён из оригинала без редактирования — сохранена подлинная стилистика
- Добавлены 7 фотографий информационных стендов — в тексте (слева/справа через alignleft/alignright)
- Большое фото источника установлено как обложка страницы (featured image)
Результат: Страница святого содержит полный текстовый контент из библиотечного фонда + 7 иллюстраций. Контент проверен модератором и принят к публикации.
CPT Престольные святые: архив, страница св. Симеона Столпника, привязка к храмам
Контекст: На сайте не было информации о престольных святых храмов — важный элемент православной традиции, отсутствующий на платформе.
Что создано:
- Новый Custom Post Type: saint (архивный URL /svyatye/)
- Страница святого Симеона Столпника (/svyatoj/simeon-stolpnik/) — житие, источники, галерея 7 стендов
- На страницах храмов добавлен блок Престольный святой — ссылка на страницу святого
- Метаданные: биография, источники, галерея изображений
- Связь saint-temple через meta данные (post_meta)
Результат: Каждый храм может отображать страницу своего престольного святого с подробным житием, источниками и фотогалереей. Платформа расширена новым типом контента, связанным с храмами через привязку.
Рубрика Благочиние: slug на латиницу, лента новостей расширена до 30 записей
Контекст: Slug рубрики Благочиние содержал кириллические символы — некорректно работает в URL, при копировании, в SEO.
Выполненные работы:
- Slug рубрики Благочиние изменён с кириллического на латиницу: /category/blagochinie/
- Лента новостей рубрики расширена: с 10 до 30 записей на страницу
- Обновлена навигация: пункт Благочиние в главном меню ведёт на обновлённую рубрику
Результат: URL рубрики (/category/blagochinie/) содержит латинские символы — корректно работает в SEO, при копировании и передаче. Лента новостей показывает все 30 последних записей без постраничной навигации.
Направления служения: slug на латиницу, чипы на /about/, 4 пункта меню
Контекст: 4 категории направлений служения (Молодёжное братство, Миссионерская работа, Социальная служба, Сестричество) имели кириллические slug и не были связаны со страницей О благочинии.
Выполненные работы:
- 4 категории переведены на латиницу: slug изменён с кириллицы на латиницу
- На странице /about/ добавлен блок Рубрика с 4 пунктами меню (чипы) — быстрая навигация по направлениям
- Добавлены 4 пункта в меню О благочинии — ссылки на каждое направление служения
Результат: URL направлений содержат латинские символы. На странице О благочинии пользователь видит 4 карточки-направления с возможностью перехода к новостям каждого направления.
Блок Новости храма: карточки с обложками, пояснениями, церковным шрифтом
Контекст: На страницах храмов блок Новости храма отображал простой текстовый список заголовков — без фотографий, без пояснений, без визуальной структуры.
Выполненные работы:
- Каждая новость в блоке отображается карточкой с обложкой (featured image)
- Добавлено пояснение к каждой новости (excerpt)
- Заголовки оформлены церковным шрифтом (Times New Roman / Georgia)
- Карточки в responsive-сетке: 2 колонки на десктопе, 1 на мобильных
Результат: Блок Новости храма визуально rich: фотографии, пояснения, стилизованные заголовки. Посетитель видит последние новости прихода в карточном формате.
Перелинковка новость-храм: 2339 связей через WP-CLI, двусторонняя навигация
Контекст: Новости и храмы были независимыми сущностями — невозможно было на странице храма увидеть новости прихода, а на странице новости — храм.
Выполненные работы:
- Через WP-CLI массово создано 2339 связей новость-храм: для каждого поста определён соответствующий храм
- На страницах храмов отображается лента новостей, привязанных к данному храму
- На страницах новостей добавлен блок Новости храма с ссылкой на храм
- Реализована двусторонняя перелинковка: от храма к новостям и от новости к храму
Результат: Каждая новость связана с конкретным храмом. Посетитель страницы храма видит все новости прихода. Перекрёстные ссылки создают единую навигационную структуру храм-новости.
Оптимизация фото: ресайз до 2560px, деплой Видомли на prod, блоки версий
Контекст: Загружаемые фотографии не имели ограничения по размеру — файлы большого размера замедляли загрузку страниц и нагружали хостинг.
Выполненные работы:
- Ограничение: фотографии больше 2560px по длинной стороне автоматически уменьшаются при загрузке
- Деплой темы (6 файлов) на prod через FTP
- Загружены фотографии храма Видомля на prod (WebP 2560px)
- Добавлены вложения (meta данные) для фотографий
- Обновлены блоки версий на prod
Результат: Размер загружаемых фотографий оптимизирован — файлы не превышают 2560px. Храм Видомля получил актуальные фотографии на prod.
Фото Видомли: обложка, формат 4:3, компактная карточка настоятеля
Контекст: Страница храма Видомля не имела обложки, фото были разных пропорций, карточка настояителя содержала дублирующиеся данные.
Выполненные работы:
- Установлена обложка (featured image) для храма Видомля — WebP 2560px
- Фотографии приведены к формату 4:3 для единообразия
- Карточка настояителя: одна фотография + ФИО + должность (без дублирования)
- Добавлен photo-id для идентификации изображения в БД
Результат: Страница храма Видомля отображает актуальную фотографию в формате 4:3, карточка настояителя — компактная и информативная.
Храм Видомля: галерея фото, контакты, карточка настоятеля, GPS-координаты
Контекст: Страница храма Покрова Пресвятой Богородицы в агрогородке Видомля была пустой — только заголовок.
Что добавлено:
- Фотогалерея храма (4+ фото): exterior, interior, territory
- Контактные данные: адрес, телефон настоятеля
- Карточка настояителя: фото, ФИО, должность
- GPS-координаты для навигации
Результат: Страница храма Видомля содержит полную информацию: фотографии, контакты, данные настояителя, расположение на карте.
Деплой темы 1.10.3 на prod: шаблоны, стили, SVG-иконки
Контекст: Изменения в теме (контакты, социальные сети, замена эмодзи на SVG) были только на test — prod оставался на старой версии.
Что деплоено:
- Все файлы темы (PHP, CSS, JS) загружены на prod через FTP (hoster.by vh137)
- Обновлённые шаблоны: template-kontakty.php, template-blagochinnyj.php, footer.php
- Обновлённые стили: style.css (все эмодзи заменены на SVG-иконки)
Результат: Продуктовый сайт обновлён до версии 1.10.3. Контакты, социальные сети, SVG-иконки доступны пользователям prod.
Страница Контакты: интерактивная карта, социальные сети, эмодзи заменены на SVG
Контекст: Страница Контакты содержала только текстовые адреса и телефоны — без карты, без социальных сетей, с эмодзи вместо иконок.
Выполненные работы:
- На странице /kontakty/ размещена интерактивная карта (Яндекс-Карты) с маркерами всех 30 храмов
- Добавлены ссылки на социальные сети (ВКонтакте, Telegram) для каждого храма
- Все эмодзи в шаблонах темы заменены на SVG-иконки — кроссбраузерная совместимость
- Обновлены контактные данные: адреса, телефоны, email для каждого прихода
Результат: Страница Контакты содержит карту с 30 храмами, ссылки на социальные сети, актуальные контактные данные. SVG-иконки работают одинаково во всех браузерах.
Раздел Благочинный: биография, фото, контакты, /blagochinnyj/
Контекст: На сайте не было информации о благочинном церквей — посетители не могли узнать, кто руководит благочинием.
Что создано:
- Новая страница /blagochinnyj/ — шаблон template-blagochinnyj.php
- Биография благочинного: полное имя, должность, образование, опыт служения
- Фотография благочинного (featured image)
- Контактные данные: телефон, email, ссылки на социальные сети
Результат: Посетители сайта могут ознакомиться с биографией благочинного, его опытом служения и контактными данными. Раздел доступен из главного меню О благочинии.
Деплой темы 1.10.0 на prod: тест и продакшн синхронизированы
Контекст: Тема версии 1.10.0 (экосистема синхронизации) была только на test — требовался деплой на prod.
Что деплоено:
- Тема загружена на prod через FTP (hoster.by vh137)
- Обновлённые шаблоны: template-hramy.php, template-about.php
- Обновлённые стили: style.css
- Версия темы на prod: 1.10.1
Результат: Продакшн-сайт работает на версии 1.10.1. Тестовая и продакшн площадки синхронизированы по кодовой базе темы.
Экосистема синхронизации TEST-PROD: WP-CLI, FTP, REST API
Контекст: Не было организованного процесса синхронизации между тестовой и продуктовой площадками — деплой выполнялся вручную, без инструментов.
Что настроено:
- FTP-деплой темы: hoster.by vh137, логин xn7sbbdl, chroot /home/xn7sbbdl/public_html/wp-content/themes/kamenec-blagochinie/
- WP-CLI для управления WordPress: установка, обновление, миграции, массовые операции
- Механизм синхронизации: WP REST API для переноса контента (новости, медиафайлы)
- Резервное копирование: SQL-дампы перед каждой миграцией
Результат: Настроены механизмы деплоя и синхронизации: FTP для файлов темы, WP-CLI для управления, REST API для контента. Работа на test не влияет на prod — деплой выполняется осознанно по мере готовности.
Восстановление фото благочинного в блоке Духовное руководство
Контекст: После предыдущих правок фотография благочинного пропала из блока Духовное руководство на титульной странице.
Что исправлено:
- Восстановлена фотография благочинного в блоке Духовное руководство
- Проверена целостность featured image для блока
Результат: Блок Духовное руководство на титульной странице отображает фото благочинного корректно.
Адаптивный дизайн: исправление обрезки шапки, оптимизация под мобильные
Контекст: На мобильных устройствах шапка сайта (header) обрезалась, контент не помещался на маленьких экранах.
Что исправлено:
- Исправлена обрезка шапки (header) на мобильных устройствах
- Оптимизирована ширина контента для маленьких экранов
- Проверена корректность отображения на iPhone, Android, планшетах
Результат: Сайт корректно отображается на всех размерах экрана: от смартфонов (320px) до десктопов (1920px+). Шапка не обрезается, контент не вылезает за границы экрана.
Фото протоиерея Сергия Бурковского: блок Духовное руководство
Контекст: На титульной странице в блоке Духовное руководство не было фотографии благочинного — только текстовая подпись.
Что добавлено:
- Фотография протоиерея Сергия Бурковского размещена в блоке Духовное руководство
- Подпись: Протоиерей Сергий Бурковский — Благочинный Каменецкого благочиния
Результат: Блок Духовное руководство содержит фото и подпись благочинного. Визуально — представительный блок на титульной странице.
Исправление загрузки фото и новостей: лимиты PHP на хостинге
Контекст: Критическая ошибка: фотографии больше не загружались на сайт, новости не создавались — ошибка в конфигурации PHP и лимитах хостинга.
Что исправлено:
- Определена причина: лимит upload_max_filesize и post_max_size на хостинге hoster.by
- Обновлены настройки PHP: upload_max_filesize = 64M, post_max_size = 128M
- Проверена загрузка фото различных форматов (JPG, PNG, WebP)
- Проверено создание новостей через админку WordPress
Результат: Загрузка фотографий и создание новостей работают корректно. Модераторы могут загружать файлы до 64 МБ без ограничений.
Деплой на prod: глобальная замена файлов и базы данных
Контекст: Продуктовый сайт требовал глобального обновления — файлы темы и база данных устарели по сравнению с тестовой площадкой.
Что деплоено:
- Файлы темы (PHP, CSS, JS) загружены на prod через FTP
- База данных обновлена: новые записи, категории, меню
- Проверена корректность работы на prod
Результат: Продуктовый сайт обновлён до актуальной версии платформы. Все новые функции (храмы, новости, галерея) доступны пользователям.
Оптимизация размера сайта: WebP, сокращение с 5.5 ГБ до 1.5 ГБ
Контекст: Размер сайта на хостинге достиг 5.5 ГБ — превышение лимитов дискового пространства, замедление загрузки, высокая нагрузка на сервер.
Что сделано:
- Все фотографии конвертированы из JPG/PNG в WebP (качество: 85%)
- Максимальный размер изображения: 2560px по длинной стороне
- Удалены дублирующиеся и ненужные файлы
- Итоговый объём: ~1.5 ГБ (было ~5.5 ГБ)
Результат: Размер сайта уменьшен с 5.5 ГБ до 1.5 ГБ — снижена нагрузка на хостинг, ускорена загрузка страниц, освобождено дисковое пространство. Качество изображений сохранено (WebP 85%).
Глобальный деплой с test на prod: тема, контент, меню, метаданные
Контекст: Тестовая площадка значительно обновилась — требовался перенос всех изменений на prod.
Что деплоено:
- Все файлы темы (template-parts/, functions.php, style.css, шаблоны страниц)
- Новые записи в БД (новости, медиафайлы, категории)
- Обновлённые метаданные (_featured_image, _thumbnail_id)
- Меню навигации
Результат: Продакшн-сайт полностью обновлён. Тестовая и продакшн площадки работают на одной версии платформы.
Исправление лайтбокса фотогалереи: figure к data-атрибутам
Контекст: При клике на фото в фотогалерее (/galereya/) открывался пустой лайтбокс без изображения.
Что исправлено:
- Определена причина: некорректная привязка элементов figure к JS-обработчикам
- Исправлены data-атрибуты для передачи URL изображений в лайтбокс
- Проверена работа лайтбокса на странице /galereya/
Результат: Лайтбокс фотогалереи работает корректно — клик по фото открывает его в полноэкранном режиме.
Фотогалерея: карточки с EXIF-данными, фильтрация по годам, лайтбокс
Контекст: На сайте не было единого места для просмотра всех фотографий приходов — фото были разрознены по новостям и страницам храмов.
Что создано:
- Страница /galereya/ — шаблон template-gallery.php
- Карточки фотографий: обложка (WebP), дата съёмки, описание, технические данные (камера, объектив, выдержка, диафрагма)
- Лайтбокс с EXIF-данными: при открытии фото показываются метаданные съёмки
- Фильтрация по годам: 2020-2026
Результат: Посетители сайта могут просмотреть все фотографии приходов в единой галерее с фильтрацией по годам и техническими данными съёмки.
Фотогалерея новостей: группировка по годам, оригиналы JPEG
Контекст: Галерея фотографий новостей не была создана — фото существовали только в составе отдельных новостей.
Что создано:
- Страница /galereya/ отображает все фотографии из новостей, сгруппированные по годам
- Каждая карточка: обложка, название, дата, ссылка на новость-источник
- Фотографии хранятся в JPEG (без конвертации) для максимального качества
- Фильтрация: 2020-2026
Результат: Посетители могут просмотреть все фотографии новостей, отсортированные по годам. Оригиналы в JPEG доступны для скачивания в максимальном качестве.
Система работы с фотографиями: WebP-стандарт, EXIF-лайтбокс, ZIP-архивы
Контекст: Не было единого стандарта работы с фотографиями — разные форматы (JPG, PNG), разные размеры, отсутствовали технические данные при просмотре.
Что создано:
- Единый стандарт: все загружаемые фото конвертируются в WebP (макс. 2560px, 85% качество)
- Лайтбокс: при открытии фото показываются EXIF-данные (камера, объектив, выдержка, диафрагма)
- ZIP-архивы: возможность скачать все фото альбома одним архивом
- Галерея: карточки с обложками, датами, описаниями
Результат: Единый стандарт WebP обеспечивает оптимальный баланс качества и размера. Лайтбокс с EXIF-данными даёт техническую информацию о съёмке. ZIP-архивы упрощают скачивание альбомов.
Перевод сайта на HTTPS: TLS-сертификат Laravel Herd
Контекст: Сайт работал по HTTP — браузер отображал предупреждение Небезопасное соединение. Clipboard API и некоторые современные API не работали.
Что сделано:
- Настроен TLS-сертификат через Laravel Herd (самоподписанный, для разработки)
- Все HTTP-запросы перенаправляются на HTTPS
- Проверена корректность работы всех форм (контакты, комментарии)
Результат: Сайт работает по HTTPS. Браузер отображает замок (безопасное соединение). Clipboard API работает в безопасном контексте.
Титульная страница: единый формат карточек новостей (сетка 2×2)
Контекст: Блок Новости и события на титульной странице отображал новости в текстовом формате — без обложек, без структуры.
Что сделано:
- Карточки новостей: единый формат (обложка 16:9, заголовок, дата, excerpt)
- Сетка 2×2 на десктопе, 1 колонка на мобильных
- Добавлена кнопка Все новости -> /novosti/
Результат: Блок Новости и события визуально единообразен: компактные карточки с информативным содержимым. Посетитель видит последние 4 новости и может перейти к полной ленте.
Титульная: фото Патриарха Кирилла с атрибуцией
Контекст: В блоке Духовное руководство не было фото Патриарха Кирилла — только текстовая подпись.
Что добавлено:
- Фотография Святейшего Патриарха Кирилла
- Атрибуция: указание автора фото и источника (пресс-служба Патриарха)
- Подпись: Святейший Патриарх Московский и всея Руси Кирилл
Результат: Блок Духовное руководство содержит фото Патриарха Кирилла с корректной атрибуцией.
Титульная: фото архиепископа Иоанна в блоке Духовное руководство
Контекст: В блоке Духовное руководство не было фото архиепископа Брестского и Каменецкого Иоанна.
Что добавлено:
- Фотография архиепископа Иоанна в блоке Духовное руководство
- Подпись: Архиепископ Брестский и Каменецкий Иоанн
Результат: Блок Духовное руководство отображает фото архиепископа Иоанна. Информационный блок стал полнее.
Главное меню: новый порядок, SVG-иконки, адаптивность
Контекст: Главное меню содержало устаревший состав пунктов и не имело визуальных иконок.
Что сделано:
- Новый порядок: О благочинии, Новости, Храмы, Контакты
- Добавлены SVG-иконки к пунктам меню
- Настроен hover-эффект для пунктов меню
- Меню адаптивно: на мобильных устройствах отображается как гамбургер
Результат: Главное меню содержит 4 ключевых раздела с иконками. Навигация интуитивна — посетитель мгновенно находит нужный раздел.
Раздел О благочинии: центр-хаб /about/ со ссылками на подразделы
Контекст: Не было центральной страницы с информацией о благочинии — структура, направления служения, благочинный были недоступны из одной точки.
Что создано:
- Страница /about/ — шаблон template-about.php
- Блок-хаб: ссылки на подразделы (Благочинный, Направления служения, Контакты)
- Описание благочиния: миссия, история, структура
- Информация о благочинном (биография, фото, контакты)
Результат: Страница /about/ является центральной точкой входа для информации о благочинии. Посетитель видит структуру и направления служения.
Карточки храмов: исправление наслоения фотографий на /hramy/
Контекст: На странице /hramy/ фотографии храмов наслаивались друг на друга — визуальный артефакт из-за некорректных CSS-стилей.
Что исправлено:
- Устранено наслоение фотографий: каждая карточка отображает одну фотографию
- Добавлен overflow:hidden для контейнера карточек
- Оптимизированы отступы между карточками
Результат: Страница /hramy/ отображает карточки 30 храмов без визуальных артефактов. Каждая карточка содержит фото, название и ссылку на детальную страницу.
CPT Храмы: 30 карточек, детальные страницы, JSON-LD для SEO
Контекст: На сайте не было информации о храмах — 30 приходов не имели страниц, карточек, контактных данных.
Что создано:
- Custom Post Type: temple (архив /hramy/)
- Карточки храмов: фото, название, адрес, ссылка на детальную страницу
- Детальные страницы: полная информация (история, фото, контакты, настоятель)
- JSON-LD структурированные данные для SEO-индексации
- 30 храмов созданы и заполнены контентом
Результат: Платформа содержит 30 страниц храмов с полной информацией. Страницы индексируются поисковиками благодаря JSON-LD разметке.
Подпись логотипа: Брестская епархия, Белорусская Православная Церковь
Контекст: Логотип в шапке сайта не имел текстовой подписи с наименованием юрисдикции.
Что сделано:
- Подпись логотипа: Брестская епархия, Белорусская Православная Церковь
- Шрифт подписи: Times New Roman, 12px, цвет #666
- Выравнивание: по центру под логотипом
Результат: Шапка сайта содержит логотип и подпись с полным наименованием епархии. Визуально — официальный представительный вид.
Дизайн хедера: исправление вложенных тегов, новый layout
Контекст: В шапке сайта был вложенный тег внутри логотипа — некорректная вложенность ссылок, логотип не выровнен по центру.
Что исправлено:
- Убран вложенный тег внутри логотипа — семантически корректная вёрстка
- Логотип и подпись выровнены по центру
- Добавлен padding между логотипом и контентом
- Обновлена версия темы до 1.6.0
Результат: Шапка сайта отображается корректно: логотип по центру, подпись под ним, отступы выдержаны. Вёрстка семантически корректна.
Обновление PHP до 8.4 на продакшн-сервере
Контекст: Продуктовый сайт работал на PHP 8.2 — требовалось обновление до актуальной версии для совместимости с WordPress 7.x.
Что сделано:
- PHP обновлён на продуктовом сайте с 8.2 до 8.4 (PHP 8.4.23)
- Обновление через панель управления хостинга hoster.by
- Проверена корректность работы WordPress и всех плагинов на PHP 8.4
Результат: Продуктовый сайт работает на PHP 8.4 — актуальная стабильная версия с улучшениями производительности и безопасности.
Обновление WordPress до 7.0.2 на test и prod
Контекст: WordPress на обоих сайтах требовал обновления до актуальной версии 7.0.2 — доступны исправления безопасности и новые функции.
Что сделано:
- WordPress обновлён до 7.0.2 на тестовой площадке и на продуктовом сайте
- Обновление через WP-CLI: wp core update
- Проверена корректность работы после обновления
Результат: Оба сайта работают на WordPress 7.0.2 — актуальная стабильная версия.
Обновление продакшн-сайта: начальная синхронизация с test
Контекст: Продуктовый сайт значительно отставал от тестовой площадки — требовалось базовое обновление.
Что сделано:
- Обновлён продуктовый сайт xn—-7sbbdliaae3aaodrirjkg5m4a.xn--90ais
- Загружены актуальные файлы темы с test на prod
- Обновлена база данных на prod
Результат: Продуктовый сайт обновлён до актуальной версии. Тестовая и продакшн площадки синхронизированы по базовой функциональности.
Установка WP-CLI 2.12.0: командный инструмент управления WordPress
Контекст: Управление WordPress выполнялось только через веб-интерфейс админки — медленно, неудобно для массовых операций.
Что сделано:
- Установлен WP-CLI 2.12.0 — командный интерфейс для управления WordPress
- Настроены пути: wp.bat в Laravel Herd
- Проверена работоспособность: wp core version, wp plugin list, wp post list
Результат: WP-CLI доступен для управления WordPress через командную строку. Массовые операции (обновление постов, создание категорий, импорт данных) выполняются за секунды вместо часового ручного ввода через браузер.
Перенос данных с хостинга на тестовую площадку: база данных, файлы
Контекст: Актуальные данные (база данных, медиафайлы) находились только на хостинге hoster.by — тестовая площадка имела устаревшие данные.
Что сделано:
- Загружена актуальная база данных с хостинга на тестовую площадку
- Перенесены файлы темы и медиафайлы
- Настроен доступ к БД: MariaDB 10.11.11, хост 127.0.0.1:3306
Результат: Тестовая площадка работает с актуальными данными с хостинга. Разработчик может тестировать изменения на реальных данных.
Миграция с OSPanel на Laravel Herd: nginx + PHP 8.4
Контекст: Локальная среда разработки работала на OSPanel (Apache + PHP) — требовалась миграция на Laravel Herd для унификации окружения с продакшн.
Что сделано:
- Локальная среда перенесена с OSPanel на Laravel Herd (nginx + PHP 8.4)
- Настроены домены: xn—-7sbbdliaae3aaodrirjkg5m4a.xn--90ais через Herd DNS
- Настроена база данных: MariaDB 10.11.11, хост 127.0.0.1:3306
- Перенесены данные: база данных, файлы темы, медиафайлы
Результат: Локальная среда разработки унифицирована с продакшн: nginx, PHP 8.4, MariaDB. Домен xn—-7sbbdliaae3aaodrirjkg5m4a.xn--90ais работает через Herd DNS.
Обновление WordPress 6.8.2-7.0 и PHP 8.2-8.3
Контекст: WordPress и PHP на площадке требовали мажорных обновлений.
Что сделано:
- WordPress обновлён с 6.8.2 до 7.0 (мажорное обновление)
- PHP обновлён с 8.2 до 8.3 (PHP 8.3.x)
- Проверена совместимость плагинов и темы с новыми версиями
Результат: Платформа работает на актуальных версиях WordPress 7.0 и PHP 8.3 — доступны новые функции, исправления безопасности, улучшения производительности.
Страница версионирования платформы: создание, version в footer
Контекст: На сайте не было информации о текущей версии платформы — посетители и разработчики не видели, какая версия установлена.
Что создано:
- Страница /platform-version/ — отображение текущей версии платформы
- Версия отображается в footer сайта: Версия платформы X.X.X
- Начало ведения журнала версий
Результат: Посетители и разработчики видят текущую версию платформы. Начата практика документирования изменений.
Полная переработка дизайна: кастомная тема kamenec-blagochinie
Контекст: Сайт работал на стандартной теме Spacious — generic-дизайн, не соответствующий церковной тематике.
Что создано:
- Создана кастомная тема kamenec-blagochinie (на базе Underscores/starter)
- Дизайн: минималистичный, чистый, соответствующий православной стилистике
- Цвета: тёмно-синий (#1a237e), белый, серый — консервативная палитра
- Типографика: Times New Roman / Georgia для заголовков (церковный шрифт), sans-serif для текста
- Адаптивная вёрстка: корректное отображение на всех устройствах
Результат: Сайт получил уникальный дизайн, соответствующий церковной тематике. Кастомная тема обеспечивает полный контроль над вёрсткой и стилями.
Первоначальный запуск WordPress-сайта: Spacious, базовая настройка
Что создано:
- Установлен WordPress на хостинге hoster.by (vh137)
- Тема по умолчанию: Spacious (standard WordPress theme)
- Плагины: Akismet (антиспам), Disable Comments, Limit Login Attempts
- Созданы базовые страницы: главная, новости, контакты
- Настроен домен: xn—-7sbbdliaae3aaodrirjkg5m4a.xn--90ais
Результат: Работает базовый WordPress-сайт с темой Spacious. Доступны основные функции: публикация новостей, управление страницами, комментарии.
