Перейти к содержимому
Главная страница

Zenphoto: фотогалерея и управление медиа на своём сервере

Zenphoto

Zenphoto нужен тем, кто хочет вести собственную фотогалерею или медиа-сайт на своём сервере: загружать фотографии и другие поддерживаемые медиафайлы, собирать их в многоуровневые альбомы, добавлять подписи, теги и метаданные, управлять доступом, оформлять публичную часть темой и при необходимости дополнять галерею страницами и новостями через Zenpage. Это не редактор пикселей и не RAW-конвертер: программа решает задачу публикации, систематизации и выдачи медиатеки через веб-интерфейс, поэтому особенно полезна фотографам, художникам, небольшим студиям, архивам и владельцам портфолио, которым важно хранить оригиналы у себя и не зависеть от чужого облачного сервиса.

Варианты загрузок
  • Ретушь портретов и удаление объектов
  • Замена и размытие фона
  • Пакетная обработка изображений
Zenphoto
  • Нужен PHP/MySQL-сервер
  • Нет RAW-проявки и ретуши
  • Современная тема часто нужна отдельно

Содержание:

Как устроена работа с Zenphoto

Основная модель Zenphoto проста: на верхнем уровне есть галерея, внутри неё — альбомы и подальбомы, а в альбомах лежат изображения и другие медиаобъекты. Важная особенность — файловая основа. Физические альбомы соответствуют каталогам внутри папки albums, поэтому структуру можно создавать не только из панели управления, но и обычным копированием каталогов через FTP, SFTP, файловый менеджер хостинга или примонтированный сетевой том. База данных при этом хранит свойства объектов, описания, теги, состояние публикации, пользователей, параметры сайта и другие служебные данные.

Такая схема удобна, когда коллекция уже организована по папкам. Если на диске есть, например, каталоги «2024/Свадьбы/Ивановы» и «2024/Путешествия/Исландия», их можно перенести в albums, после чего Zenphoto обнаружит структуру и покажет её как вложенные альбомы. При этом не стоит воспринимать файловую модель как полный отказ от базы: переносить только каталог с фотографиями между двумя разными установками недостаточно, если нужно сохранить описания, права, публикационные даты и другую информацию, внесённую через интерфейс.

Административная часть открывается в браузере и разделена на функциональные вкладки. В типичной установке используются Overview, Upload, Albums, Tags, Users, Options, Themes, Plugins и Logs; при включении Zenpage появляются разделы Pages и News, а при активных расширениях могут появиться дополнительные пункты. Логика интерфейса ближе к CMS, чем к фотоменеджеру рабочего стола: пользователь не «открывает проект», а редактирует состояние сайта и объектов, которые уже хранятся на сервере.

Установка и начало работы

Для Zenphoto нужен веб-сервер с PHP, база MySQL или MariaDB и библиотека обработки изображений. В актуальной ветке рекомендуется PHP 8, а код установки проверяет наличие современной версии PHP, сессий, JSON и других базовых компонентов. Для создания миниатюр и уменьшенных копий используются GD или Imagick. Наличие cURL критично для части функций, EXIF полезен для чтения фото-метаданных, mbstring и iconv важны для корректной работы с не-ASCII символами, а gettext нужен для штатной локализации через системные локали.

На Apache крайне желателен mod_rewrite, потому что именно он позволяет использовать «чистые» адреса. Zenphoto способен работать и без него, но тогда адреса будут менее аккуратными, а часть настроек маршрутизации придётся изменить. На nginx или другом веб-сервере аналогичную задачу решают правила конфигурации сервера, так как файл .htaccess там не применяется.

Перед установкой создайте отдельную базу и пользователя базы с правами на неё. Затем файлы Zenphoto размещаются в корне сайта или в выделенной подпапке. В самой поставке важны корневой index.php, папка zp-core, каталог albums, папка тем и служебные каталоги. Не нужно заранее заполнять базу таблицами: мастер установки сам создаёт структуру.

Мастер установки Zenphoto с проверкой файлов, базы и системных параметров перед запуском

При первом запуске setup выполняет серию проверок. На экране видны предупреждения о правах, конфигурации PHP, состоянии ядра, доступности графической библиотеки, соединении с базой и возможности записи служебных файлов. Жёлтое предупреждение не всегда означает, что установка невозможна, но красные ошибки лучше устранить до создания рабочей галереи. Особенно внимательно отнеситесь к отсутствию графической библиотеки, проблемам с соединением с БД и запретам записи в каталоги, где Zenphoto должен создавать конфигурацию и кэш.

На следующем шаге принимаются условия GPL, затем создаётся административная учётная запись. Не используйте короткий пароль и не оставляйте имя администратора очевидным, если сайт доступен из интернета. После завершения setup защищает установочные сценарии; при повторном запуске мастера их нужно специально разблокировать через административную утилиту или обратиться к setup по предусмотренному пути.

Для рабочей установки сразу включите HTTPS на уровне веб-сервера и проверьте, что браузер не открывает административную часть по незащищённому протоколу. Zenphoto сам предупреждает об отсутствии SSL в setup. Это особенно важно, если через панель вводятся пароли, гостевые ключи альбомов и другие данные доступа.

Создание первого администратора

Пользователь в Zenphoto — не просто логин для входа. У каждой учётной записи есть набор прав. Master-администратор получает полный доступ и служит страховкой от ситуации, когда в системе не осталось пользователя, способного управлять сайтом. Дополнительным администраторам можно выдавать только нужные разрешения: управление выбранными альбомами, загрузку файлов, изменение тегов, доступ к темам, настройкам или Zenpage.

Создание пользователя Zenphoto с паролем, языком и набором прав доступа

Практический подход такой: первая учётная запись остаётся технической и используется редко, а для ежедневной работы создаётся отдельный пользователь с ограниченными правами. Если сайт ведёт несколько фотографов, каждому можно назначить собственные альбомы. Тогда человек увидит и сможет редактировать только свои объекты, если ему не выдано глобальное право Manage all.

На этапе развёртывания проверьте часовой пояс PHP и настройки даты. Даты публикации и отложенного выхода контента привязаны к серверной конфигурации, поэтому несоответствие часового пояса сервера и реального рабочего региона приводит к «раннему» или «позднему» появлению материалов.

Панель Overview: состояние сайта и служебные операции

Overview — отправная точка для обслуживания. Здесь отображается сводка по галерее и появляются кнопки утилит, которые добавляют ядро и плагины. В зависимости от активных расширений отсюда запускаются резервное копирование, обновление базы, пересчёт метаданных, очистка кэша, предварительное создание кэшированных изображений, генерация sitemap, статистика и другие административные действия.

Полезно воспринимать Overview как «техническую консоль», а не как домашнюю страницу. Если после обновления темы изменения не видны, первым делом проверяют кэш. Если после массового копирования файлов появились расхождения метаданных, используют служебное обновление. Если сайт переносится между серверами, именно отсюда удобно получить резервную копию базы штатным средством.

В журнале установки и в zp-data сохраняются сообщения, которые помогают диагностировать проблемы. При белой странице или ошибке 500 не нужно менять настройки наугад: сначала смотрят серверный PHP error log и отладочный журнал Zenphoto. В документации проекта это основной путь поиска причин, потому что одинаковый внешний симптом может быть вызван и памятью PHP, и несовместимым плагином, и неправильными правами, и ошибкой темы.

Загрузка фотографий и других файлов

Вкладка Upload предназначена для загрузки из браузера. В стандартном интерфейсе есть обычный HTTP-вариант и мультифайловый режим на JavaScript. Можно выбрать существующий альбом или создать новый, задать название и имя папки, после чего добавить несколько файлов. Ограничения по размеру зависят не только от Zenphoto: реальный предел задают upload_max_filesize, post_max_size, лимит памяти, настройки веб-сервера и прокси перед ним.

Вкладка Upload в Zenphoto с созданием нового альбома и выбором нескольких изображений

Если интерфейс сообщает о лимите, сначала сравните параметры PHP. Когда post_max_size меньше суммарного размера набора, запрос может не дойти до приложения целиком. Для больших коллекций браузерная загрузка не всегда лучший путь: физические папки можно копировать напрямую в albums. Zenphoto обнаружит новые каталоги и файлы, а затем создаст служебные записи и миниатюры по мере обращения.

При копировании по FTP важно сохранять логичную структуру имён. Название папки становится частью адреса альбома, поэтому массовое переименование каталогов после публикации меняет пути. Если на старые страницы уже ведут внешние ссылки, лучше сначала продумать постоянную структуру и только затем начинать публичную работу.

ZIP-загрузка удобна для небольших пакетов, но требует расширения ZipArchive на сервере. Архив должен содержать поддерживаемые типы. Использование ZIP не отменяет лимиты веб-загрузки: огромный архив может не пройти ограничения PHP ещё до распаковки.

Для кадров JPEG, PNG, GIF и WebP поведение предсказуемо, если используемая серверная библиотека действительно умеет читать конкретный формат. Zenphoto указывает поддержку форматов в привязке к возможностям GD или Imagick. Поэтому ситуация «WebP указан в возможностях, но миниатюра не создаётся» часто означает, что конкретная сборка PHP не имеет нужного кодека.

Альбомы и вложенная структура

Физический альбом соответствует папке, а подальбом — подпапке. Уровней вложенности может быть много, что удобно для архивов по годам, съёмкам и клиентам. В административной вкладке Albums верхний список показывает иерархию, состояние публикации и служебные действия. Альбом можно создать, переименовать, переместить, скопировать или удалить; при перемещении важно понимать, что меняется физический путь.

Редактирование альбома обычно включает заголовок, описание, дату, владельца, состояние публикации, пароль для гостевого доступа, параметры миниатюры и сортировку. Заголовок и имя каталога — не одно и то же. Заголовок можно менять ради оформления, не трогая URL-путь, а имя папки лучше менять только осознанно.

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

Гостевой пароль действует на альбом и наследуется подальбомами, если у дочернего объекта нет собственного правила. Такая защита удобна для клиентских выдач и закрытых семейных коллекций, но её не следует путать с DRM. Если нужно предотвращать прямой доступ к оригиналам, придётся отдельно настраивать правила веб-сервера и параметры выдачи full image.

Сортировка изображений

Внутри альбома порядок фотографий можно задавать вручную перетаскиванием. Это особенно полезно для репортажей, где файловые имена не отражают желаемую последовательность. После изменения нажмите Apply: интерфейс не всегда трактует само перетаскивание как окончательное сохранение.

Для коллекций, которые должны автоматически следовать дате, имени файла или другому признаку, ручной порядок лучше не поддерживать. Иначе при каждом массовом добавлении придётся перестраивать последовательность. Сортировку имеет смысл выбирать на уровне сценария: «авторская серия» — ручная, «архив по дате» — автоматическая.

Карточка изображения: что можно менять

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

На скриншоте хорошо видно принцип интерфейса: слева показан файл и техническая информация, по центру — редактируемые метаданные, справа — блоки состояния и утилит. Это означает, что Zenphoto удобно использовать после предварительной обработки фотографий в отдельном редакторе: в CMS загружается уже готовый мастер-файл, а здесь выполняется каталогизация и публикация.

Для большого набора изображений не обязательно открывать каждый объект в отдельной странице. Административный режим позволяет редактировать несколько карточек подряд, а часть действий выполняется пакетно. Однако по уровню пакетной коррекции пикселей Zenphoto не конкурирует с Lightroom, darktable или специализированным фоторедактором: нет проявки RAW, локальных масок, шумоподавления и полноценной цветокоррекции.

Кадрирование миниатюры — отдельная операция. Оно влияет на то, какая область изображения показывается в маленьком превью, а не на оригинал. Это полезно для портретов и вертикальных снимков, где автоматический центральный кроп может обрезать лицо или важную деталь.

EXIF, IPTC и XMP: автоматическое чтение метаданных

При обнаружении нового изображения Zenphoto читает доступные EXIF и IPTC поля и может использовать их для заполнения свойств объекта. XMP обрабатывается также через соответствующее расширение и sidecar-файлы. Такой импорт экономит время, если ключевые слова, автор, подпись и дата уже подготовлены в фотокаталоге до загрузки на сайт.

Самая важная практическая оговорка касается команды Refresh metadata. Она не просто «дочитывает недостающие поля»: повторное обновление способно перезаписать вручную изменённые значения данными, встроенными в файл. Поэтому после ручной редакторской работы не запускайте массовое обновление метаданных без резервной копии или теста на отдельном альбоме.

Если метаданные отображаются кракозябрами, проверяют кодировку, mbstring/iconv и происхождение IPTC-полей. Старые приложения нередко записывали IPTC в локальной однобайтовой кодировке. Zenphoto корректнее всего работает, когда цепочка подготовки изображений унифицирована и метаданные заранее приведены к современному Unicode-представлению.

Не все EXIF поля обязаны выводиться посетителю. В Options можно выбрать, какие свойства показывать в теме. Для публичного портфолио обычно достаточно камеры, объектива, выдержки, диафрагмы и ISO; серийные номера и служебные поля лучше скрывать, если нет отдельной причины их публиковать.

Теги, поиск и динамические альбомы

Tags — общий справочник ключевых слов. Теги можно добавлять, переименовывать и удалять централизованно, а затем назначать изображениям и другим объектам. Это полезнее свободного ввода одинаковых слов в каждую карточку: единый словарь уменьшает количество дублей вроде «portrait», «Portrait» и «портреты».

Архивный экран Tag Management в Zenphoto для удаления, переименования и добавления тегов

Поиск Zenphoto умеет работать с несколькими полями и логическими выражениями. Практическая ценность поиска возрастает, когда описания и теги заполнены последовательно. Если половина фотографий имеет ключевое слово «Москва», а другая половина хранит город только в IPTC-поле, которое не включено в поиск, результат будет неполным.

Динамический альбом — сохранённый поисковый запрос. Сначала выполняется поиск, затем из результатов создаётся альбом с заданными условиями. Файлы физически не перемещаются: содержимое формируется по условию. Это удобно для подборок «все фотографии с тегом macro», «лучшие кадры 2025 года» или «все материалы конкретного автора».

У динамического альбома есть ограничение: порядок изображений определяется результатом запроса, а не свободным ручным перетаскиванием. Кроме того, динамический альбом не ведёт себя как обычная физическая папка в части вложенности. Поэтому для строго курируемой последовательности лучше использовать обычный альбом.

Темы и публичная часть галереи

Theme в Zenphoto определяет внешний вид и шаблоны страниц: главную галерею, страницу альбома, отдельное изображение, поиск, архив и дополнительные страницы. Активная тема выбирается из административного раздела Themes. Тема — это набор PHP-файлов, CSS, изображений и служебного описания, а не визуальный пресет в смысле настольного редактора.

Официальные темы, поставлявшиеся с веткой 1.x, разработчики пометили как устаревшие. Это не означает, что они мгновенно перестают работать, но при создании нового публичного сайта не стоит строить долгосрочный дизайн на шаблоне, который уже не развивается. Для проекта с современными требованиями к адаптивности и доступности лучше выбрать поддерживаемую стороннюю тему или сделать собственную.

Собственная тема создаётся путём копирования и изменения шаблонов либо с нуля через API тем. Практическое правило: не редактируйте файлы в zp-core. Изменения ядра усложняют обновления и могут быть перезаписаны. Пользовательские темы должны лежать в themes, а сторонние плагины — в корневой папке plugins.

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

Публичная страница Zenphoto со списком вложенных фотоальбомов и поиском

Внутри альбома сетка миниатюр строится темой. Размеры превью не обязательно совпадают между разными темами: Zenphoto генерирует кэшированные варианты по запросу. Именно поэтому смена темы может привести к появлению новых размеров в кэше и временному замедлению первых просмотров.

Публичный альбом Zenphoto с сеткой миниатюр фотографий и постраничной навигацией

Плагины: расширение функций без правки ядра

Zenphoto разделяет встроенные расширения и сторонние плагины. Официальные расширения находятся в zp-core/zp-extensions; удалять их вручную не рекомендуется, потому что некоторые используются внутренними компонентами. Сторонние плагины размещают в корневой папке plugins, чтобы обновление ядра не затёрло файлы.

После установки расширение включается флажком в разделе Plugins. У многих плагинов появляется ссылка на параметры. Некоторые расширения влияют только на административную часть, другие добавляют функции темам. Наличие активного плагина ещё не гарантирует, что посетитель увидит новую функцию: тема должна выводить соответствующий шаблонный вызов или поддерживать интеграцию.

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

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

Zenpage: страницы и новости рядом с галереей

Zenpage — официальное расширение CMS, которое добавляет обычные страницы и новостной раздел. Оно полезно, если фотогалерея должна быть не отдельным приложением, а полноценным авторским сайтом: с «Обо мне», прайсом, контактами, статьями, новостями и публикациями вокруг медиаконтента.

Страницы поддерживают вложенность, новости — категории, а оба типа контента могут иметь теги, публикационный статус и защиту паролем. Для текста используется визуальный редактор TinyMCE, а интеграция tinyZenpage помогает вставлять изображения и объекты галереи в статьи без ручного набора путей.

Отложенная публикация позволяет подготовить страницу или новость заранее и задать дату выхода. Если публикация появляется не в ожидаемое время, первым делом проверьте часовой пояс сервера и конфигурацию PHP, а не дату в самой записи.

Zenpage полезен для связки «портфолио + журнал проекта». Например, фотограф публикует альбом со съёмкой, а в новости описывает процесс и вставляет отдельные изображения из того же каталога. При этом изображения хранятся в одной медиасистеме, а не дублируются в библиотеке другого CMS.

Пользователи и разграничение доступа

Модель прав Zenphoto детальнее, чем простое «администратор/гость». Можно отдельно разрешать просмотр Overview, изменение настроек, управление тегами, темами и файлами, загрузку в назначенные альбомы, просмотр непубликованных объектов, работу со всеми альбомами или только с закреплёнными.

Для совместной работы это даёт понятный сценарий. Владелец сайта создаёт каждому автору учётную запись, назначает конкретный верхнеуровневый альбом и право Upload/Edit. Автор не получает доступ к глобальным настройкам, чужим альбомам и темам, но может сам загружать материал и редактировать подписи внутри своей зоны.

Плагин user_groups добавляет группы и шаблоны прав. Это удобно, когда пользователей много: вместо ручной настройки каждого создаётся группа «Фотографы» или «Редакторы». Изменение прав группы затем применяется к её участникам.

Для посетителей предусмотрена отдельная логика guest access. Пароль можно назначить всей галерее, поиску, конкретному альбому, странице или категории новостей. Гостевой пользователь не равен административной учётной записи: это механизм доступа к защищённому контенту, а не право редактирования сайта.

Комментарии, рейтинги, RSS и другие функции публикации

Комментарии реализуются официальным расширением comment_form. Администратор определяет, где они доступны, нужны ли обязательные поля, кто может комментировать и как обрабатывать нежелательные сообщения. Для сайта-портфолио комментарии часто отключают полностью, а для сообщества или клуба они позволяют обсуждать изображения прямо под работой.

Рейтинги также подключаются расширением. Если оценки влияют на важные решения, не следует считать их защищённой системой голосования: публичные рейтинги предназначены для пользовательского взаимодействия, а не для юридически значимых опросов.

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

Sitemap-extended генерирует XML-карты для альбомов, изображений и, при необходимости, Zenpage. Генерация запускается из административной утилиты и не должна восприниматься как постоянно обновляемый процесс: после крупных изменений структуру sitemap имеет смысл пересобрать.

Работа с видео, аудио и дополнительными типами файлов

Zenphoto ориентирован на изображения, но может публиковать и мультимедиа. Для современных браузеров штатно используются распространённые HTML5-форматы: MP4/M4V для видео и MP3/M4A для аудио; дополнительные варианты зависят от расширений и возможностей браузера. Для текстовых и некоторых документных форматов возможна базовая поддержка через плагины.

Ключевое ограничение видео — миниатюра. Zenphoto не всегда может сам извлечь кадр из видео средствами PHP. Типичный способ — создать JPEG с тем же базовым именем, что у ролика, и положить его рядом. На собственном сервере можно автоматизировать генерацию через ffmpeg, но это уже отдельная настройка окружения.

Имена sidecar-файлов должны совпадать аккуратно. Если в одном альбоме лежат movie.mp4 и movie.m4v, а рядом movie.jpg, одно превью может относиться к обоим файлам. Для медиатеки с несколькими версиями ролика лучше использовать уникальные базовые имена.

Водяные знаки и защита оригиналов

Водяной знак накладывается при обработке кэшированных изображений. Оригинал в albums не меняется. Если водяной знак включён после того, как миниатюры и уменьшенные копии уже были созданы, старые кэшированные версии останутся прежними до очистки и повторной генерации.

Штатный watermark использует изображение, а не текстовый генератор. Если нужна текстовая подпись, создают графический файл с нужной надписью и прозрачностью и используют его как водяной знак.

Параметр защиты full image не является абсолютной защитой от хотлинков. Разработчики прямо указывают, что при известной структуре файлов прямой адрес оригинала может быть найден, если сервер отдаёт его напрямую. Настоящее ограничение внешней раздачи на Apache делается правилами .htaccess, а на nginx — правилами конфигурации сервера.

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

Кэш изображений и производительность

Zenphoto не изменяет загруженный оригинал. Когда теме нужна миниатюра или уменьшенная копия определённого размера, обработчик создаёт кэшированный файл и сохраняет его в cache. Повторный запрос получает готовую копию. Это позволяет теме использовать произвольные размеры, не создавая все варианты при загрузке.

Следствие — первый просмотр новой фотографии может быть медленнее. Особенно это заметно на дешёвом хостинге и с файлами очень большого разрешения. После создания кэша повторные открытия работают быстрее. Поэтому не нужно оценивать производительность всего сайта только по первому проходу по новой коллекции.

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

Случайная миниатюра альбома может замедлять большие и глубоко вложенные коллекции. Чтобы выбрать random thumbnail, системе приходится искать кандидата, иногда среди подальбомов, а при отсутствии кэша ещё и обрабатывать изображение. Для больших архивов лучше назначать фиксированную обложку альбома.

Static HTML Cache — отдельный плагин. Он сохраняет готовые HTML-страницы и может существенно разгрузить PHP для публичных страниц, но требует дисциплины: после изменения контента кэш не всегда очищается автоматически для всех возможных зависимых страниц. Если посетители видят старое содержимое, очистка static cache — один из первых шагов диагностики.

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

Резервное копирование и перенос сайта

Полноценная резервная копия Zenphoto состоит минимум из базы данных и файлов. В базе находятся параметры и редакторская информация, в albums — оригиналы, в themes и plugins — пользовательские доработки, в zp-data — конфигурация и логи, в uploaded — внешние загруженные файлы. Кэш можно восстановить генерацией, поэтому хранить его в резервной копии необязательно, если важнее экономить место.

Встроенный backup/restore удобен для базы и умеет учитывать миграции схемы лучше, чем слепой SQL-дамп, но для критичного сайта полезно иметь и обычную резервную копию MySQL/MariaDB. Восстанавливать базу безопаснее на той же версии Zenphoto, на которой она была создана, а затем отдельно обновлять CMS.

При переносе на новый сервер сначала подготавливают файлы и каталоги данных, затем запускают setup на новой площадке и восстанавливают БД. Если одновременно менять сервер и обновлять Zenphoto, диагностика усложняется: непонятно, связана ошибка с окружением или миграцией версии. Эти операции лучше разделять.

После изменения пути установки — например, переносе из подпапки в корень домена — нужно заново прогнать setup, чтобы он скорректировал rewrite base и связанные параметры. Иначе типичный симптом — работа административной панели при сломанных публичных ссылках или наоборот.

Обновление Zenphoto без лишнего риска

Перед обновлением проверяют совместимость PHP, сторонних тем и плагинов, делают резервную копию базы и пользовательских файлов. Для значимого сайта разумно сначала повторить обновление на копии или staging-окружении. Особенно это важно для темы с собственным PHP-кодом и старых расширений.

При ручном обновлении нельзя оставлять смесь файлов разных выпусков. Разработчики рекомендуют полностью заменить zp-core и штатные файлы, чтобы в каталоге не остались удалённые или переименованные компоненты старой версии. После копирования запускается setup, который обновляет структуру базы и конфигурацию.

Не редактируйте ядро ради небольшой визуальной правки. Любой такой патч превращает обычное обновление в ручное слияние. Если изменение относится к отображению — переносите его в тему; если к логике — в плагин.

После обновления просмотрите debug log даже если внешний сайт кажется исправным. PHP может сообщать deprecated notices от старого расширения задолго до того, как несовместимость станет критической.

Типичные ошибки и способы устранения

После включения красивых URL страницы дают 404

Обычно включён mod_rewrite в настройках Zenphoto, но веб-сервер не применяет правила. На Apache проверьте загрузку модуля rewrite и разрешение AllowOverride, затем убедитесь, что .htaccess существует и имеет правильный RewriteBase. Если включить rewrite на хостинге невозможно, временно отключите соответствующую опцию в Gallery configuration.

Изображение загрузилось, но миниатюра не создаётся

Сначала смотрят поддержку формата в GD/Imagick и PHP error log. Затем проверяют права на cache, лимит памяти и размеры исходника. Огромный JPEG может занимать в памяти во много раз больше своего размера на диске после декодирования. Поэтому файл на 30 МБ способен упереться в memory_limit значительно раньше, чем кажется.

Кнопка поворота недоступна

Поворот зависит от графической библиотеки. Если GD собран без нужной функции или активный обработчик не поддерживает операцию, Zenphoto отключает кнопку. Это проблема серверного окружения, а не прав пользователя на альбом.

После смены watermark старые изображения без него

Причина почти всегда в кэше. Watermark накладывается при генерации производной копии. Очистите image cache через CacheManager и дайте Zenphoto создать файлы заново. Оригиналы менять не нужно.

После редактирования страница всё ещё показывает старый текст

Если включён static_html_cache, очистите HTML-кэш. Плагин не может автоматически определить все страницы, на которых косвенно выводится изменённый объект. Аналогично для RSS и sitemap используются отдельные кэши.

После Refresh metadata исчезли вручную введённые подписи

Это ожидаемое поведение команды: встроенные метаданные заново заполняют свойства. Восстановление возможно только из резервной копии или вручную. На рабочем сайте сначала тестируйте Refresh metadata на копии альбома.

После переноса сайта ссылки ведут в старую подпапку

Повторно запустите setup и проверьте rewrite base. Если используется reverse proxy, отдельно убедитесь, что Zenphoto корректно видит протокол и host. Смешение http/https часто проявляется как редиректы на неверный адрес.

Плагин включён, но функции на сайте нет

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

Большой альбом долго открывается в админке

Уменьшите число изображений на странице, отключите визуальный выбор миниатюр, назначьте фиксированные album thumbs, проверьте состояние кэша и серверную мощность. Для глубокой иерархии ограничьте число отображаемых уровней подальбомов.

Практический сценарий: портфолио фотографа

Для портфолио имеет смысл отделить файловую организацию от публичной. На диске используйте стабильные папки по проектам, а посетителю показывайте короткие названия и описания. Не переносите альбомы ради косметической смены заголовка: достаточно изменить Title.

Перед загрузкой подготовьте изображения в редакторе: проявите RAW, выполните ретушь, задайте цветовое пространство sRGB для веб-публикации и встроите базовые IPTC-поля. После загрузки Zenphoto прочитает метаданные, а вы останетесь в роли редактора каталога, а не будете вручную заполнять всё с нуля.

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

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

Практический сценарий: семейный архив

Семейная коллекция часто уже существует как дерево папок. Здесь файловая модель Zenphoto особенно удобна: можно сохранить привычную структуру по годам и событиям. Но перед массовым импортом лучше привести имена папок к устойчивому формату без случайных суффиксов, потому что они станут частью URL.

Теги дополняют папки, а не заменяют их. Папка отвечает на вопрос «где физически лежит событие», теги — «кто или что изображено». Один человек может встречаться в сотнях альбомов, и тег позволяет собрать все его снимки поиском или динамическим альбомом.

Для приватности можно закрыть всю галерею паролем, а отдельные разделы защитить дополнительными паролями. Для пожилых родственников лучше не создавать административные аккаунты: guest access проще и безопаснее.

Практический сценарий: архив студии или организации

Если фотографии загружают несколько сотрудников, используйте отдельные учётные записи и группы прав. Не выдавайте Full admin rights только потому, что человеку нужен Upload. Назначьте ему управляемый альбом и минимальный набор разрешений.

Для больших потоков файлов быстрее копировать каталоги на сервер пакетно, а веб-интерфейс использовать для описаний и публикации. Перед массовой индексацией проверьте memory_limit и производительность ImageMagick/GD. На слабом сервере одновременная генерация тысяч миниатюр создаёт заметную нагрузку.

При публикации на внешнюю аудиторию включите sitemap и RSS только если они реально нужны. Каждая дополнительная подсистема создаёт собственное состояние и кэш, который надо учитывать при обновлениях.

Практический сценарий: сайт с новостями и галереей

Zenpage позволяет не ставить второй CMS только ради статических страниц и новостей. Включите расширение, создайте базовые страницы, категории новостей и выберите тему, которая поддерживает Zenpage. Затем изображения из галереи можно вставлять в материалы без повторной загрузки.

Этот сценарий особенно логичен для художника, музыканта, иллюстратора или небольшого культурного проекта, где медиатека — центр сайта. Если же основная часть проекта — сложный редакционный портал с десятками типов контента, развитой экосистемой интеграций и визуальными конструкторами, Zenphoto уже не будет полноценной заменой универсальной CMS.

Сравнение с аналогами

Zenphoto полезно сравнивать не только с другими галереями, но и с настольным редактором ФотоМАСТЕР, потому что задачи у них принципиально разные. ФотоМАСТЕР работает с самим изображением: коррекция света и цвета, ретушь портрета, удаление объектов, замена или размытие фона, замена неба, эффекты, кадрирование, геометрия и пакетная обработка. Zenphoto не выполняет такую пиксельную обработку, зато организует публикацию коллекции, права, альбомы, поиск, темы и web-доступ.

В реальном рабочем процессе эти продукты скорее последовательные этапы, чем взаимозаменяемые решения. Фотограф может подготовить JPEG или WebP в ФотоМАСТЕР, а затем загрузить готовые файлы в Zenphoto для каталогизации и публикации.

Задача Zenphoto ФотоМАСТЕР Piwigo Coppermine
Пиксельная коррекция фото Нет полноценного редактора Ретушь, фон, свет, эффекты Не основная задача Не основная задача
Self-hosted галерея Да Нет Да Да
Вложенные альбомы Да, через папки и подальбомы Нет Да Через категории и альбомы
Теги и поиск Да, включая динамические альбомы Не как серверный каталог Да, развитый поиск и пакетное управление Есть ключевые слова и поиск
Пользователи и права Гибкие права и managed albums Не серверная CMS Пользователи, группы, права на альбомы Группы, альбомные права
Страницы и новости Через Zenpage Нет Дополняется плагинами Не основная специализация
Файловая структура на сервере Альбомы соответствуют папкам Работа с файлами на ПК Есть несколько способов импорта и синхронизации Своя логика категорий/альбомов

Piwigo сильнее ориентирован на управление крупной медиатекой как библиотекой: у него развит Batch Manager, возможность связывать один файл с несколькими альбомами без физического дублирования, мобильные приложения, интеграции и более заметный акцент на командную работу. Zenphoto проще связать с существующим деревом каталогов, потому что физические папки непосредственно формируют альбомы.

Coppermine похож на классическую PHP-галерею, но его модель отличается: файлы лежат в альбомах, альбомы относятся к категориям, а подкатегории могут содержать альбомы; сами альбомы не являются вложенными друг в друга. В Zenphoto иерархия ближе к обычной файловой системе.

Если задача — отретушировать портрет, исправить перспективу, удалить прохожего или пакетно наложить фильтр на сотни исходников, Zenphoto не заменит ФотоМАСТЕР. Если задача — дать клиентам доступ к альбомам, вести публичное портфолио с поиском и правами или опубликовать большой каталог на своём сервере, настольный фоторедактор такую инфраструктуру не создаёт.

Ограничения, которые нужно учитывать заранее

Первое ограничение — необходимость обслуживать сервер. Обновления PHP, базы данных, резервное копирование, HTTPS, права файлов, rewrite и почтовая отправка не исчезают из-за удобной панели Zenphoto. На управляемом хостинге часть задач берёт провайдер, но ответственность за саму CMS остаётся у владельца.

Второе — отсутствие современного RAW-проявщика и глубокой обработки. Zenphoto не предназначен для неразрушающего редактирования экспозиции, масок и профилей камеры. Подготовка изображения выполняется до загрузки.

Третье — внешний вид зависит от темы, а штатные темы ветки 1.x устарели. Для современного коммерческого сайта почти наверняка придётся подобрать сторонний шаблон или заказать адаптацию.

Четвёртое — производительность первой генерации миниатюр зависит от сервера. Если загрузить тысячи 40-мегапиксельных JPEG на слабый shared hosting, посетитель может столкнуться с задержками или ошибками памяти, пока кэш не сформирован.

Пятое — мультимедиа поддерживается, но не превращает Zenphoto в видеохостинг. Автоматические видеопревью требуют отдельной инфраструктуры, а транскодирование и адаптивный стриминг не являются основной функцией.

Шестое — защита изображений ограничена возможностями обычного веб-сайта. Watermark и пароли полезны, но опубликованное в браузере изображение всегда можно сохранить тем или иным способом. Для коммерческой выдачи оригиналов нужен продуманный уровень доступа и серверные ограничения.

Как настроить Zenphoto для устойчивой работы

Сначала определите постоянную файловую структуру. Не превращайте папки в систему тегов: папки должны отражать устойчивые коллекции, а пересекающиеся свойства лучше хранить в tags. Такой подход снижает число переносов и сломанных адресов.

Затем настройте размер публикуемых изображений и политику оригиналов. Если посетителю достаточно 2000 пикселей по длинной стороне, не нужно заставлять сервер каждый раз работать с 60-мегапиксельным исходником. Полные архивные оригиналы можно хранить отдельно.

Третьим шагом приведите метаданные к единому стандарту. Решите, какие поля заполняются до загрузки, какие — в Zenphoto, и кто имеет право их менять. Это защищает от ситуации, когда массовый Refresh metadata неожиданно перезаписывает редакторскую работу.

Четвёртым шагом создайте роли пользователей и выдайте минимальные права. Даже на небольшом сайте лучше не работать всем под одним мастер-логином. Раздельные аккаунты упрощают контроль и уменьшают последствия утечки пароля.

Пятым шагом выберите тему и протестируйте её на мобильных экранах, длинных заголовках, горизонтальных и вертикальных кадрах. До публичного запуска проверьте поиск, защищённые альбомы, 404, sitemap, RSS и страницу отдельного изображения.

Наконец, настройте резервное копирование и обновления. Минимум — регулярный дамп базы и копия albums, themes, plugins и конфигурации. Для сайта, который приносит деньги или хранит уникальный архив, резервная копия должна существовать вне того же сервера.

Что проверять перед публикацией большого альбома

  • Все файлы открываются и поддерживаются графической библиотекой сервера.
  • У альбома назначена фиксированная обложка, если коллекция большая.
  • Заголовки и описания не содержат временных служебных заметок.
  • Теги приведены к единому написанию без дублей.
  • Проверено состояние Published для альбома и нужных изображений.
  • Если нужен пароль, проверен вход из приватного окна браузера.
  • Если используется watermark, очищен старый image cache.
  • Страница альбома проверена на мобильном экране.
  • После первого обхода нет ошибок в debug log.

Настройки Gallery: параметры, которые влияют на весь сайт

Раздел Options содержит несколько подстраниц, и менять их лучше не «по очереди», а исходя из конкретного сценария. Gallery configuration отвечает за общие свойства галереи: заголовок, описание, настройки URL, гостевой доступ, поиск, сортировку и часть глобальных параметров. Ошибка здесь затрагивает не отдельный альбом, а весь сайт, поэтому перед крупной перенастройкой полезно сохранить резервную копию базы.

Если вы включаете mod_rewrite, сначала проверьте работу обычных адресов. Затем включите «красивые» URL и откройте главную, вложенный альбом, отдельное изображение, поиск и страницу 404. Неполная проверка опасна тем, что главная может работать, а вложенные маршруты — нет.

Глобальная сортировка альбомов задаёт поведение по умолчанию, но конкретный альбом может иметь собственные правила. Когда сайт большой, лучше не смешивать разные принципы без причины. Например, каталог выставок удобно сортировать по дате, а авторскую подборку — вручную. Если один и тот же раздел иногда использует ручной порядок, а иногда имя файла, редактор быстро теряет понимание, почему элементы стоят именно так.

Параметры Search влияют на то, по каким полям строится результат. Чем больше полей включено, тем шире поиск, но тем труднее предсказать выдачу. Для портфолио разумно искать по заголовку, описанию и тегам, а специфические технические EXIF-поля включать только если аудитория действительно ими пользуется.

Параметры отображения изображений

Image display определяет базовые размеры, качество производных изображений, поведение полноразмерных файлов, водяные знаки и набор метаданных для показа. Не стоит воспринимать эти значения как единственный источник размеров: тема может запросить собственный вариант, и Zenphoto создаст соответствующий кэшированный файл.

Качество JPEG выбирайте с учётом типа изображений. Слишком низкое значение даёт заметные артефакты на текстурах и плавных градиентах, слишком высокое увеличивает вес без видимой пользы. Правильный подход — подготовить несколько типичных фотографий, очистить кэш, открыть их на реальном устройстве и оценить размер файлов и качество вместе.

Для PNG и WebP фактическая эффективность зависит от библиотек сервера. Если смена параметров не влияет на результат, проверьте, какой обработчик активен и действительно ли он умеет кодировать нужный формат. Сам интерфейс не может добавить в GD поддержку кодека, которой нет в сборке PHP.

Имена файлов, URL и переносимость коллекции

Zenphoto допускает разные имена, но чем проще схема, тем меньше проблем при переносах. Для новых проектов безопаснее использовать латиницу, цифры, дефисы и подчёркивания в физических именах папок и файлов, а человекочитаемые русские названия хранить в Title. Это не обязательное правило продукта, а практический способ снизить зависимость от кодировок файловой системы, FTP-клиента и особенностей URL.

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

Не переименовывайте файлы на диске после длительной редакторской работы без необходимости. Zenphoto связывает объект с физическим файлом, и ручное изменение вне CMS может привести к появлению «нового» объекта и потере связи с данными, которые хранятся в базе. Для массового переименования лучше заранее сделать копию и проверить поведение на небольшом наборе.

Физические и динамические альбомы: где какой использовать

Физический альбом удобен, когда коллекция имеет самостоятельное значение: одна съёмка, клиент, проект, поездка, выставка. Он соответствует папке, имеет собственные свойства и предсказуемый набор файлов. Такой альбом проще архивировать и переносить.

Динамический альбом нужен для пересечения признаков. Если фотографии одного города лежат в десятках съёмок, не нужно копировать их в отдельную папку «Москва». Достаточно тегов и сохранённого поиска. При добавлении нового изображения с нужным тегом подборка обновится автоматически.

Недостаток динамического подхода — зависимость от качества метаданных. Ошибка в теге или различие написания сразу отражается на выдаче. Поэтому перед широким использованием saved searches стоит привести словарь tags в порядок.

Публикационные статусы и отложенный выход

Published — один из ключевых флажков. Наличие файла на сервере не означает, что он должен быть виден публике. Это позволяет загружать материалы заранее, работать с описаниями и сортировкой, а затем открыть альбом целиком.

Для новостей и страниц Zenpage можно задавать дату публикации. Если контент должен выйти в определённый момент, протестируйте механизм заранее на черновой записи. Важно убедиться, что системное время сервера, PHP и ожидаемый часовой пояс совпадают.

При совместной работе имеет смысл договориться, кто меняет состояние Published. Иначе автор может случайно открыть незавершённый альбом, а редактор — скрыть уже опубликованный. Разграничение прав частично решает проблему, но процесс всё равно должен быть понятен участникам.

Миниатюры альбомов и ручной кроп

Обложка альбома — не декоративная мелочь, а элемент навигации. На длинной главной странице именно она помогает пользователю различать разделы. Zenphoto может выбирать изображение автоматически, случайно или по заданному правилу, но для коммерческого портфолио стабильная ручная обложка почти всегда лучше.

Если лицо или объект обрезается в квадратной миниатюре, откройте инструмент custom thumbnail cropping. Он сохраняет область превью, не меняя оригинальный JPEG. После смены параметров кэш нужно пересоздать, иначе тема может продолжать показывать старый вариант.

Не делайте ручной кроп для каждой фотографии только потому, что функция существует. Это дорого по времени. Используйте его для обложек и кадров, где автоматический центр действительно не подходит.

Логи и отладка

Вкладка Logs и файлы в zp-data — главный источник фактов при ошибках. Разработчики Zenphoto регулярно рекомендуют начинать диагностику именно с них. Полезно различать три уровня: HTTP-ошибка веб-сервера, PHP-ошибка выполнения и сообщение самого Zenphoto.

Если сервер возвращает 500, журнал Zenphoto может остаться пустым, если PHP упал до загрузки приложения. Тогда смотрят error log веб-сервера или PHP-FPM. Если страница открывается, но плагин выдаёт warning, запись чаще появляется в debug log.

Не оставляйте display_errors включённым на публичном сайте. Сообщение PHP может раскрывать абсолютные пути, имена файлов и фрагменты конфигурации. Для диагностики правильнее писать ошибки в журнал, а не показывать их посетителю.

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

Что делать, если после обновления пропали альбомы в админке

Сначала не трогайте файлы. Если публичная галерея продолжает показывать изображения, физические данные, скорее всего, на месте. Проверьте debug log, режим отображения списка альбомов и состояние миниатюр. В некоторых случаях проблема видна только в thumbnail view, тогда переключение на stand-in помогает понять, что сломано именно создание или вывод превью.

Затем проверьте, полностью ли заменён zp-core. Частичное обновление — одна из самых неприятных причин, потому что разные файлы ожидают разные версии классов и функций. Если есть сомнение, заново загрузите полный официальный пакет той же версии и прогоните setup.

Только после этого переходите к базе. Не восстанавливайте старый дамп поверх новой схемы без понимания последствий: так можно превратить визуальную проблему в реальную потерю согласованности.

Безопасность административной части

Админка доступна через обычный браузер, поэтому защищать её нужно как любую CMS. Используйте HTTPS, уникальные пароли, минимальные права и актуальную версию PHP. Не публикуйте служебные каталоги через отдельные виртуальные хосты и не меняйте права на 0777 «для решения проблемы» без понимания, что именно требует запись.

Setup отдельно проверяет безопасность файлов в zp-data. Конфигурация базы и логи не должны быть доступны посетителю напрямую. Если хостинг игнорирует .htaccess, убедитесь, что правила запрета реализованы на уровне веб-сервера.

Удаляйте временные phpinfo.php после диагностики. Такой файл раскрывает версии PHP, загруженные модули, пути, переменные окружения и другие сведения, которые не стоит оставлять публично.

Для сторонних плагинов применяйте те же требования, что к ядру. Расширение выполняется внутри PHP-процесса сайта и потенциально имеет доступ к тем же данным. Не устанавливайте неизвестный плагин только ради одной мелкой функции на рабочий сайт без просмотра репозитория, обновлений и совместимости.

Права файлов и каталогов

Когда setup пишет, что не может создать конфигурацию или кэш, проблема часто в правах владельца процесса. Правильное решение — настроить владельца и режимы доступа под конкретный веб-сервер, а не давать всем полный доступ. На shared hosting значения отличаются, поэтому ориентируйтесь на документацию провайдера.

Корневой index.php, .htaccess, zp-data, cache и albums имеют разные требования. cache должен быть доступен для записи PHP, albums — если загрузка идёт через браузер, а файлы ядра после установки обычно не требуют постоянной записи.

Если через FTP файлы принадлежат одному пользователю, а PHP работает от другого, возникает типичная ситуация: администратор видит каталог, но CMS не может создать миниатюру. Проверяйте владельца, группу и umask, а не только числовое значение chmod.

Память PHP и большие фотографии

Размер JPEG на диске не равен объёму памяти при обработке. Сжатый файл декодируется в пиксельный буфер, поэтому 6000×4000 пикселей требуют десятки и сотни мегабайт с учётом промежуточных копий. На слабом тарифе это становится основной причиной ошибок генерации.

Есть три практических решения. Первое — уменьшать исходники до разумного веб-размера до загрузки. Второе — увеличить memory_limit, если сервер позволяет. Третье — использовать более эффективную библиотеку и не запускать массовое кэширование одновременно с другой тяжёлой задачей.

Если оригиналы нужны именно как архив, храните их отдельно от публичной галереи, а в Zenphoto публикуйте подготовленные версии. Это снижает нагрузку и риск случайной выдачи исходников.

Обслуживание кэша после изменений

Есть несколько независимых кэшей, поэтому команда «очистить кэш» не всегда означает одно действие. Image cache содержит производные изображения, static HTML cache — готовые страницы, RSS cache — ленты, sitemap cache — карты сайта, search cache — результаты запросов.

После смены размеров миниатюр очищают image cache. После правки шаблона или текста при active static cache — HTML. После изменения RSS — RSS cache. После массовой перестройки структуры — sitemap генерируют заново.

Не очищайте всё автоматически при каждом мелком сохранении, если сайт большой. Это заставляет сервер заново выполнять дорогую работу. Лучше сбрасывать только тот слой, который действительно стал неактуальным.

Настройка static_html_cache

Плагин полезен для сайтов, где большинство посетителей анонимны и контент меняется не каждую минуту. Он сохраняет результат выполнения PHP как статический HTML и отдаёт его до истечения срока.

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

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

Поиск: как получить полезную выдачу

Поиск не исправляет хаотичные данные. Перед публикацией крупного архива определите словарь ключевых слов: имена людей, места, жанры, проекты. Не смешивайте формы «СПб», «Санкт-Петербург» и «Питер», если хотите единый результат.

Для сложных подборок используйте логические выражения и saved search. Сначала добейтесь корректной выдачи в обычном поиске, и только затем создавайте динамический альбом. Иначе ошибка условия закрепится в интерфейсе.

При большом количестве объектов периодически проверяйте search cache и индексы базы. Актуальные версии Zenphoto добавляли индексы в таблицу albums именно для повышения производительности некоторых запросов, включая динамические альбомы.

Теги: правила для большого архива

Хороший тег короткий и однозначный. Если нужно длинное объяснение, это уже описание. Для географии используйте один уровень детализации на конкретном поле: «Нидерланды», «Амстердам», «Музей» могут быть отдельными тегами, а не одной строкой.

Периодически открывайте Tag Management и объединяйте дубли. Переименование централизованно безопаснее, чем ручное исправление сотен карточек. Перед удалением тега посмотрите, сколько объектов его используют.

Если ключевые слова приходят из IPTC, договоритесь, какой источник является главным. Иначе редактор исправит тег в Zenphoto, а следующий Refresh metadata вернёт старое значение из файла.

Интеграция с внешней подготовкой фотографий

Zenphoto хорошо вписывается в цепочку «каталогизация и обработка локально — публикация на сервере». Фотограф может хранить мастер-каталог в Lightroom, darktable, digiKam или другом DAM, экспортировать готовые JPEG/WebP с IPTC и загружать их в соответствующие папки.

При таком процессе не нужно дублировать всю информацию вручную. Автор, copyright, description и keywords переносятся в метаданных, а в Zenphoto остаются публикационный статус, права и структура сайта.

Важно не путать двустороннюю синхронизацию с импортом. Zenphoto читает метаданные из файла, но не является универсальным центральным каталогом, который автоматически возвращает все изменения обратно в исходный DAM. Если нужен мастер-источник, определите его заранее.

SEO и адреса страниц

Для публичной галереи значимы понятные title, description и стабильные URL. Человеческий заголовок альбома можно сделать длиннее, а физическое имя папки оставить коротким. Это позволяет менять редакционное название без постоянного изменения адреса.

Плагин html_meta_tags и настройки темы отвечают за мета-теги. Не нужно генерировать одинаковое описание для сотен изображений: поисковая ценность выше у уникального контекста.

Sitemap-extended помогает поисковикам обходить глубокую структуру. После массового переноса альбомов или смены URL карту нужно обновить. Старые внешние ссылки при этом желательно перенаправлять на новые адреса средствами веб-сервера.

Если mod_rewrite выключен, сайт остаётся рабочим, но адреса менее чистые. Для нового публичного проекта лучше настроить rewrite корректно, а не маскировать проблему плагинами.

Мультиязычный сайт

Zenphoto поддерживает локализацию интерфейса и мультиязычные поля. Для полноценной работы перевода на сервере полезен gettext и установленные системные locales. Отсутствие нужной locale может привести к тому, что интерфейс останется на другом языке несмотря на наличие переводов.

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

Мультиязычный sitemap требует дополнительной настройки. Не включайте несколько языков только ради формального SEO, если редакция не сможет поддерживать тексты синхронно.

Темы: безопасная доработка

Самый безопасный путь — создать отдельную копию темы и менять её, а не править официальную. Тогда обновление Zenphoto не затрёт CSS и PHP. Название папки пользовательской темы должно быть уникальным.

Сначала изменяйте CSS и шаблонные функции, а не ядро. Если нужно добавить новый блок на страницу image.php, это задача темы. Если нужно изменить алгоритм CMS, ищите фильтр или плагин.

Перед активацией темы проверьте её на тестовой копии. Старые сторонние темы могут использовать deprecated классы и глобальные переменные. В ветке 1.6 часть внутренних API была переименована, и fallback не гарантируется бесконечно.

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

Плагины: порядок установки и проверки

Сторонний плагин обычно состоит из PHP-файла и папки с тем же именем. Размещайте его в plugins, затем включайте из административной страницы. Если модуль добавляет параметры, сохраните их до проверки фронтенда.

Не активируйте сразу десять новых модулей. Включайте по одному и проверяйте журнал. Так при ошибке будет понятно, какой компонент её вызвал.

После обновления CMS временно отключайте неподдерживаемые плагины. Иногда достаточно предупреждения deprecated, но иногда старый код использует удалённую функцию и полностью ломает страницу.

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

Zenpage как небольшая CMS

Zenpage закрывает базовый набор: статические страницы, новости, категории, комментарии, теги, расписание публикации и RSS. Для портфолио этого часто достаточно.

Страницы могут быть вложенными, что подходит для структуры «Услуги → Съёмка → Свадебная». Новости группируются по категориям и работают как блог. Визуальный редактор упрощает ввод текста, но при вставке сложной разметки стоит контролировать HTML, чтобы тема не получила конфликтующие стили.

TinyZenpage позволяет выбирать изображения из галереи прямо в редакторе. Это лучше, чем копировать прямой адрес кэша: если структура генерации изменится, шаблонные функции Zenphoto остаются надёжнее.

Когда Zenpage лучше отдельного WordPress

Если сайт почти целиком состоит из галерей, нескольких страниц и небольшого новостного раздела, отдельная CMS создаёт лишнюю сложность: две системы пользователей, две схемы обновлений, два набора тем и два места для резервного копирования. Zenpage устраняет это дублирование.

Если же редакционная часть доминирует, нужны сложные типы записей, визуальные конструкторы, развитая экосистема маркетинговых плагинов и интеграций, универсальная CMS может быть практичнее, а Zenphoto использоваться только как галерея.

Сценарий миграции с простой папочной галереи

Сначала скопируйте часть структуры в тестовый albums. Пусть Zenphoto обнаружит её и создаст записи. Затем настройте titles, теги и миниатюры. Только после проверки переносите весь архив.

Если старая галерея имеет внешние URL, составьте таблицу соответствия старых и новых адресов. Redirect 301 на уровне веб-сервера сохранит рабочие ссылки и поисковую историю.

Не переносите кэш старой системы. Zenphoto должен создать производные изображения в своём формате и с нужными именами.

Сценарий миграции между двумя Zenphoto

На целевом сервере установите ту же версию, что на исходном, или переносите данные до обновления. Скопируйте albums, пользовательские темы, плагины, uploaded и резервную копию базы. Запустите setup и восстановите данные.

После переноса очистите кэш, проверьте rewrite base и адрес сайта. Если домен изменился, найдите параметры, где абсолютные URL могли быть сохранены вручную в контенте.

Только после успешного переноса обновляйте CMS. Это разделяет две операции и делает проблему воспроизводимой.

Обслуживание базы данных

База Zenphoto хранит гораздо больше, чем список файлов. В ней находятся albums, images, tags, object-to-tag, comments, users, Zenpage и опции. Поэтому потеря базы превращает файловый архив в набор фотографий без редакторской структуры.

Регулярный дамп занимает значительно меньше места, чем копия оригиналов, поэтому его можно делать чаще. Для активного сайта разумно хранить несколько поколений.

Если база повреждена или импорт остановился, не продолжайте массовые операции. Сначала восстановите консистентное состояние на копии.

Практическая проверка новой темы

  • Главная галерея корректно выводит длинные и короткие названия альбомов.
  • Вертикальные, квадратные и панорамные изображения не ломают сетку.
  • Подальбомы доступны на нужной глубине.
  • Поиск отображает результаты и пустое состояние.
  • Защищённый альбом действительно требует пароль.
  • Изображение без EXIF не вызывает пустых декоративных блоков.
  • Страница 404 оформлена в том же стиле.
  • Zenpage страницы и новости работают, если расширение используется.
  • Навигация доступна с клавиатуры и на мобильном экране.

Подготовка галереи к нагрузке

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

Проверьте размер cache. Производные файлы могут занимать значительный объём, особенно если несколько тем или плагинов запрашивают разные размеры.

Если хостинг ограничивает CPU, не запускайте массовую генерацию в часы пикового трафика. Ленивый режим Zenphoto распределяет работу по запросам и часто оказывается стабильнее.

Наблюдение за проблемами после запуска

Регулярно просматривайте debug log, особенно после обновлений. Раннее предупреждение deprecated проще исправить, чем внезапный fatal error после следующего обновления PHP.

Следите за свободным местом. Галерея растёт не только за счёт оригиналов, но и кэша, backup, логов и uploaded.

Периодически проверяйте резервное копирование фактическим восстановлением на тестовом окружении. Наличие файла backup ещё не доказывает, что из него можно восстановиться.

Что Zenphoto не делает вместо фоторедактора

В административной карточке можно повернуть изображение при поддержке библиотеки, выбрать миниатюру, задать watermark и метаданные, но это не рабочая среда для художественной обработки. Нет слоёв, масок, инструментов локальной коррекции, пластики, удаления сложных объектов и проявки RAW.

Поэтому сравнение с ФотоМАСТЕР важно трактовать по задачам. ФотоМАСТЕР обрабатывает изображение до публикации: можно исправить экспозицию, заменить фон, убрать объект, применить ретушь и пакетно преобразовать файлы. Zenphoto получает готовый результат и управляет его жизнью на сайте.

Если пытаться использовать Zenphoto как редактор, получится неудобный процесс: CMS будет генерировать производные изображения, но не даст контроля над самой фотографией. Правильнее разделить этапы.

Что Zenphoto не делает вместо современного DAM

Zenphoto умеет теги, поиск, пользователей и метаданные, но не строит вокруг них корпоративный workflow согласования, юридические сроки лицензий, развитые коллекции для каждого пользователя и современные AI-функции распознавания лиц. Для большой организации Piwigo или специализированный DAM может соответствовать задаче лучше.

Преимущество Zenphoto — прозрачная файловая модель и относительно компактная CMS. Если это важнее сложного корпоративного процесса, решение остаётся уместным.

Разница с Piwigo на практике

Piwigo позволяет одному файлу участвовать в нескольких альбомах без дублирования, имеет сильный Batch Manager и современные сценарии командной медиатеки. Zenphoto ближе к папочной системе: физическая структура сервера играет ключевую роль.

Если вы уже храните архив в строгом дереве каталогов и хотите опубликовать почти ту же структуру, Zenphoto естественнее. Если сотрудники постоянно собирают временные подборки из одних и тех же файлов, Piwigo удобнее своей логической организацией.

Обе системы self-hosted и требуют серверного обслуживания. Разница не сводится к «одна проще»: выбор зависит от модели коллекции.

Разница с Coppermine на практике

Coppermine строит структуру как категории → альбомы → файлы. Категории могут быть вложенными, а альбомы — нет. В Zenphoto сам альбом может содержать подальбомы, что ближе к файловому дереву.

Для миграции это важно. Структуру Coppermine нельзя механически перенести папка-в-папку без решения, как категории станут каталогами или уровнями альбомов.

По интерфейсу обе системы относятся к классическим PHP-галереям, но Zenphoto сильнее связывает галерею с Zenpage и темами полноценного медиа-сайта.

Разница с ФотоМАСТЕР на практике

ФотоМАСТЕР — настольный редактор: он полезен до загрузки. Его подтверждённые функции включают автоматическую ретушь портрета, замену и размытие фона, удаление лишних объектов, замену неба, пакетную обработку, кадрирование, геометрию и поддержку RAW при открытии.

Zenphoto — серверная CMS: его сильные функции начинаются после подготовки файла. Он создаёт сайт вокруг изображений, а не меняет содержание изображения.

Если задача звучит «сделать кожу чище и заменить фон», Zenphoto не подходит. Если «показать клиенту закрытый альбом и дать редактору подписать изображения», ФотоМАСТЕР не решает её.

Рекомендуемая схема для фотографа

  1. Отберите и обработайте RAW в привычном редакторе.
  2. Экспортируйте веб-версии в стабильные папки с IPTC.
  3. Скопируйте папки в albums или загрузите через Upload.
  4. Проверьте импорт метаданных и исправьте теги.
  5. Назначьте обложки и порядок альбомов.
  6. Настройте права и гостевые пароли.
  7. Откройте сайт как обычный посетитель.
  8. Прогрейте кэш ключевых разделов.
  9. Сделайте резервную копию базы после редакторской работы.

Рекомендуемая схема для небольшой команды

  1. Создайте master-аккаунт только для владельца.
  2. Добавьте группы и пользователей с минимальными правами.
  3. Закрепите за каждым автором верхнеуровневый альбом.
  4. Определите единый словарь тегов и правила публикации.
  5. Используйте staging для обновлений тем и плагинов.
  6. Храните backup вне веб-сервера.

Передача сайта другому администратору

Документируйте, где находится база, как устроены backup, какие плагины сторонние, какая тема пользовательская и какие cron-задачи или серверные правила были добавлены. Без этого следующий администратор увидит только интерфейс и не поймёт, какие части относятся к Zenphoto, а какие — к окружению.

Отдельно зафиксируйте правила для .htaccess или nginx, потому что они не видны из панели CMS. То же относится к PHP limits и системным locale.

Финальный чек-лист устойчивой установки

  • HTTPS включён и административная часть не работает по случайному HTTP.
  • Setup защищён после установки.
  • Права на zp-data и конфигурацию ограничены.
  • PHP имеет GD или Imagick и нужные кодеки.
  • cURL, JSON, sessions и база работают без предупреждений.
  • mod_rewrite или эквивалент настроен и протестирован.
  • Есть отдельные пользовательские учётные записи.
  • Оригиналы и публичные версии разделены по политике проекта.
  • Image cache очищается только по необходимости.
  • Static HTML cache включён только если понятна его модель.
  • Сторонние темы и плагины не правят ядро.
  • Backup базы и файлов хранится вне рабочего сервера.
  • После обновлений просматривается debug log.

Локальная тестовая установка и staging

Для проверки темы, обновления или массового импорта необязательно экспериментировать на публичном сервере. Zenphoto можно развернуть локально в окружении вроде XAMPP, MAMP или аналогичного PHP-стека, а затем перенести файлы и базу на хостинг. Локальная копия особенно полезна, если предстоит переход между крупными версиями или используется нестандартная тема.

Staging должен быть максимально похож на production: та же ветка PHP, тот же обработчик изображений, те же плагины и аналогичные настройки rewrite. Иначе тестирование даёт ложную уверенность. Например, тема может отлично работать на PHP 8.2 локально и выдавать deprecated/fatal на сервере с другой сборкой.

Чтобы тестовая копия не попала в поисковую выдачу, закройте её HTTP-auth, firewall или хотя бы паролем на уровне Zenphoto. Простого robots.txt недостаточно для конфиденциального архива.

Docker и контейнерное размещение

Современные установки Zenphoto нередко запускают в контейнере, но контейнер не отменяет требования к данным. Папка albums, база, пользовательские темы, plugins и конфигурация должны храниться в постоянных volume, иначе пересоздание контейнера может уничтожить состояние.

При монтировании внешнего каталога с фотографиями проверьте UID/GID процесса внутри контейнера. Если файлы принадлежат другому пользователю, веб-интерфейс может видеть изображения, но не иметь права создавать подкаталоги или изменять метаданные.

Не храните database password в публичном compose-файле репозитория. Используйте переменные окружения, secrets или закрытую конфигурацию. Сам Zenphoto всё равно создаёт свой конфигурационный файл, поэтому защитите volume с zp-data.

Проблемы соединения с базой

Если setup не подключается к MySQL/MariaDB, последовательно проверяют host, порт, имя базы, пользователя, пароль и доступ с той машины, где выполняется PHP. На контейнерной установке localhost обычно означает сам контейнер Zenphoto, а не соседний контейнер базы.

Отдельная проблема — специальные символы в пароле базы. Если после смены пароля соединение ломается, проверьте, как значение записалось в конфигурационный файл и не было ли оно повреждено экранированием. Актуальная документация Zenphoto отдельно разбирает database password problems, потому что подобные случаи встречаются на реальных хостингах.

Не исправляйте ошибку созданием root-доступа к базе для веб-приложения. Лучше дать отдельному пользователю права только на конкретную базу Zenphoto.

Комментарии и антиспам

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

Для портфолио проще отключить комментарии, чем постоянно чистить автоматические сообщения. Для сообщества, наоборот, настройте политику хранения данных, согласие и уведомления.

Проверяйте папку логов и почтовую доставку после включения уведомлений о комментариях. Отсутствие письма не всегда означает, что комментарий не принят: проблема может быть в sendmail/SMTP.

Почтовые функции

Контактные формы, уведомления и часть пользовательских сценариев зависят от почтовой конфигурации. На shared hosting PHP mail иногда работает сразу, а на VPS его нужно настроить отдельно. Если письма не уходят, смотрят лог почтового транспорта и параметры плагина, а не только интерфейс Zenphoto.

Для стабильной доставляемости лучше использовать аутентифицированный SMTP через поддерживаемый механизм, если это предусмотрено выбранным плагином и окружением. Отправка напрямую с сервера без SPF/DKIM может попадать в спам.

Приватность и персональные данные

Self-hosting даёт контроль над данными, но не освобождает от обязанности понимать, что собирает сайт. Комментарии, формы, пользовательские аккаунты и журналы могут содержать IP, e-mail и другие сведения. Включайте только те поля, которые реально нужны.

Если сайт работает в юрисдикции с требованиями к consent, проверьте плагины комментариев, аналитики и внешних embeds. Zenphoto сам по себе не требует подключения сторонних трекеров, но тема или пользовательский код могут их добавить.

Для закрытой клиентской галереи избегайте отправки пароля в открытом письме вместе с прямой ссылкой, если материалы чувствительные. Лучше передавать данные доступа отдельным каналом.

Статистика галереи

В Zenphoto есть административная статистика и расширения для счётчиков. Она полезна для понимания популярных альбомов и изображений, но не заменяет полноценную веб-аналитику. Не делайте продуктовые выводы только по hit counter: кэш, боты и технические запросы могут искажать картину.

Если подключается Matomo или другая аналитика, вставляйте код через тему или поддерживаемый плагин, а не в файлы ядра. Так обновление не уничтожит интеграцию.

Удаление и восстановление объектов

Команда Delete для альбома или изображения потенциально удаляет физический файл. Перед массовой очисткой сделайте резервную копию albums. В CMS нет смысла рассчитывать на «корзину» как в настольной системе, если конкретная версия или плагин её не предоставляет.

При массовой уборке сначала снимите публикацию и убедитесь, что объект действительно лишний. Особенно осторожно с папками, которые используются как источник динамических альбомов или вставлены в Zenpage.

Перемещение и копирование

Move меняет физическое расположение объекта, а Copy создаёт отдельный файл и отдельную запись. Для одной фотографии, которая должна появляться в нескольких тематических подборках, копирование увеличивает объём и создаёт несколько независимых экземпляров. В таких случаях лучше tags и dynamic albums.

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

Организация оригиналов и публичных копий

Если сайт хранит только экспортированные веб-копии, резервное копирование проще и нагрузка меньше. Мастер-RAW остаётся в локальном архиве. Для большинства портфолио это наиболее рациональная схема.

Если Zenphoto должен быть единственным хранилищем оригиналов, увеличиваются требования к диску, backup и защите full image. Проверяйте, что оригинал не выдаётся без авторизации через прямой путь.

Смешивать в одном альбоме RAW, JPEG и служебные файлы без чёткой причины не стоит. Zenphoto ориентирован на публикуемые медиаформаты, а архивные исходники лучше хранить отдельно.

Проверка доступности после восстановления из backup

После восстановления недостаточно открыть главную. Проверьте административный вход, вложенный альбом, поиск, Protected album, Zenpage, загрузку нового файла и создание кэша. Ошибка прав может проявиться только при попытке записи.

Если восстановлен только SQL, а albums ещё не скопирован, не выполняйте массовое обновление базы: CMS увидит отсутствующие файлы и может изменить состояние. Сначала восстановите файловую часть.

Как оценивать производительность без выдуманных цифр

Скорость Zenphoto зависит от размеров исходников, числа подальбомов, выбранной темы, графической библиотеки, PHP и диска. Универсальное обещание «обрабатывает N тысяч фотографий за секунды» некорректно. Правильнее тестировать свой набор.

Создайте тестовый альбом из 100–300 типичных файлов, очистите image cache и измерьте первый и повторный обход. Затем повторите с включённым static HTML cache. Такой тест показывает именно вашу инфраструктуру и тему.

Если повторный обход быстрый, а первый медленный, узкое место — генерация производных изображений. Если оба медленные, ищите проблему в теме, базе, диске или серверной конфигурации.

Признаки неправильной архитектуры сайта

  • Одни и те же фотографии физически скопированы в десятки альбомов только ради разных подборок.
  • Все пользователи работают под master-аккаунтом.
  • Оригиналы 50–100 МП публикуются без необходимости.
  • Любое изменение делается в zp-core.
  • Сторонние плагины устанавливаются без проверки совместимости.
  • Backup существует только на том же диске, что и сайт.
  • После каждого сохранения очищаются все виды кэша.
  • Теги дублируются разными формами написания.

Когда Zenphoto рационален

Он хорошо подходит, когда медиатека — главная часть сайта, файлы уже организованы по каталогам, важен self-hosting и нужен обычный PHP/MySQL-стек без тяжёлой отдельной инфраструктуры. Особенно логичны портфолио, авторские архивы, клубные галереи и небольшие сайты с новостями.

Если требуется только разовая обработка фото на компьютере, CMS избыточна. Если нужна корпоративная DAM-платформа с AI, согласованиями и интеграциями, возможностей Zenphoto может не хватить.

Когда Zenphoto лучше не выбирать

Не стоит выбирать его, если у команды нет человека, который готов обновлять серверную CMS. Также он не подходит как замена RAW-конвертеру и не решает задачу сложного видеостриминга.

Если критична современная мобильная загрузка через официальные приложения и распределение одного файла по множеству логических коллекций, сравните Piwigo и другие DAM-системы до развёртывания.

Краткая схема диагностики

  1. Зафиксируйте точный URL и действие, которое вызывает ошибку.
  2. Проверьте debug log Zenphoto.
  3. Проверьте PHP/web server error log.
  4. Временно отключите недавно добавленный плагин.
  5. Переключитесь на простую тему, если проблема на фронтенде.
  6. Проверьте права каталогов и свободное место.
  7. Очистите только соответствующий кэш.
  8. Если проблема появилась после обновления, убедитесь в целостности zp-core.

Рабочая дисциплина редактора

Zenphoto становится удобнее, когда редакция соблюдает несколько простых правил: физические папки не переименовываются без необходимости, tags ведутся централизованно, Publish меняет ответственный человек, метаданные обновляются только осознанно, а тема и плагины тестируются до production.

Такая дисциплина важнее количества расширений. Основная ценность системы — предсказуемая связь файлов, базы и публичного представления. Чем меньше хаотичных ручных вмешательств, тем проще обновлять сайт и восстанавливать его после сбоя.

Контрольная публикация перед вводом сайта в эксплуатацию

Перед тем как отдавать адрес посетителям, создайте небольшой тестовый альбом с горизонтальным, вертикальным, панорамным и очень тёмным кадром. Проверьте, как тема строит миниатюры, где показывает подпись, какие EXIF-поля выводит и не появляется ли ссылка на оригинал там, где её не должно быть. Такой набор быстро выявляет проблемы в шаблоне и настройках размеров.

Затем создайте отдельного пользователя с ограниченными правами и войдите под ним в другом браузере. Убедитесь, что он не видит чужие альбомы и глобальные Options, но может выполнить свою рабочую задачу. Проверка прав только под master-аккаунтом ничего не доказывает.

Наконец, откройте сайт как анонимный посетитель: без cookies, без административной сессии и из приватного окна. Проверьте закрытый альбом, поиск, страницу отдельного изображения, RSS при его использовании и 404. После этого просмотрите логи. Если тестовый цикл проходит чисто, только тогда имеет смысл публиковать большой архив.

Итоговая практическая роль Zenphoto

Zenphoto лучше всего воспринимать как специализированную CMS для собственного медиа-сайта. Её сильная сторона — связка файловой структуры, альбомов, метаданных, тегов, прав и тем без обязательной привязки к внешнему облаку. На одном сервере можно держать публичное портфолио, закрытые клиентские альбомы и страницы с новостями, сохраняя контроль над исходными файлами.

Программа требует больше технической дисциплины, чем облачная фотогалерея: нужно следить за PHP, базой, кэшем, резервными копиями и совместимостью расширений. Взамен структура проекта остаётся под контролем владельца, а изображения не нужно переносить в чужую экосистему.

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

0 0 голоса
Рейтинг статьи

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные