Восстановлена и реализована автоматическая фотогалерея портфолио из папки /images/page/portfolio/!pdf/ (~1200 фотографий, 198 каталогов). Создан сервис App\Services\PortfolioPdfGallery: сканирует папки !pdf рекурсивно, по URL категории/подкатегории подбирает соответствующий каталог и отдаёт все фото. Галерея с lightbox (GLightbox) автоматически выводится на страницах /portfolio/{category} (сборная из всех подкаталогов) и /portfolio/{category}/{subcategory} (фото конкретной подпапки) с lazy loading и кешированием списков на 24 часа. Версия платформы повышена до 4.29.18.
Что сделано в версии 4.29.18
от 04.09.2026Что сделано
- Сервис PortfolioPdfGallery — Создан класс App\Services\PortfolioPdfGallery: маппинг URL категорий портфолио на каталоги !pdf (sites→2-sites, video→3-video, design→4-design, it→7-it, marketing→1-marketing и др.), подкатегорий — на подпапки по числовому префиксу. Рекурсивный сбор .webp независимо от глубины вложенности.
- Автоматическая галерея категории — На странице /portfolio/{category} выводится сборная галерея всех фото из каталога категории (сборка из всех подпапок). Пример: design — 489 фото, sites — 95, marketing — 122, video — 155.
- Автоматическая галерея подкатегории — На странице /portfolio/{category}/{subcategory} выводятся все фото конкретной подпапки (например design/graphic — 340, it/calculator — 13, sites/vizitka — 12).
- Интеграция с lightbox — Галерея использует существующую библиотеку GLightbox: фото открываются в полноэкранном просмотре с листанием. Добавлено lazy loading для производительности.
- Производительность — Списки фото кешируются на 24 часа (Laravel Cache, file-драйвер), чтобы не сканировать ~1200 файлов при каждом запросе.
Проверка
- HTTP-статусы — Все страницы портфолио отдают 200: /portfolio/sites, /portfolio/design, /portfolio/sites/corporate, /portfolio/design/graphic, /portfolio/it/calculator и др.
- Счётчики фото — Количество ссылок lightbox на страницах совпадает с реальным числом webp в папках: design=489, sites=95, design/graphic=340, it/calculator=13.
- Пустые категории — Категории без папки !pdf (foto, engineering) корректно скрывают галерею (0 фото, блок не выводится).
Почему этому можно доверять
Платформа ipd.by развивается открыто: каждый пункт этой версии — реально выполненная работа с датой и описанием, а вся история изменений хранится в реестре версий на Laravel. Кейсы, на которые ведут ссылки выше, — реальные проекты, а не обещания.
Нужна такая работа над вашим проектом
Версии — это видимая история разработки: платформа растёт, а каждая страница объясняет, что и зачем сделано. Если ищете команду, которая так же профессионально развивает продукт — это как раз то, чем я занимаюсь.