Немного о работах
14-08-2024Время чтения ~ 6 мин.Albireo Framework / CMS 545
Несмотря на паузы, продолжаю «пилить» Albireo CMS.
Из крупных работ — доделал статистику посещений. Изначально статистика просто хранила адрес и дату. Такой подход хорош для анализа количества посещений страницы, но больше ни для чего не подходит. Поэтому я добавил ещё и поле «referer», с тем чтобы можно было отследить переходы посетителей.
Сама же страница статистики имеет несколько ссылок для разных отчётов:
- Статистика посещенных страниц на текущую дату.
- Статистика для всего периода.
- Аналогично для статистики за неделю и месяц.
- Последние посещения.
Каждая страница в статистики имеет ссылку «referer», кликнув на неё можно увидеть откуда и когда был переход на страницу. Понятно, то в статистику попадают только те, где эти данные есть.
Также есть страница «Where», которая выводит все «referer» и время посещения. Таким образом можно сразу посмотреть откуда был трафик. Поскольку в основном это гугл, то для него сразу сделал иконку.
Ну и каждый линк можно просмотреть в детализации по времени.
То есть смысл статистики в том, чтобы понять какие страницы сайта наиболее или наименее популярны, а также понять цепочку переходов.
Изображения в админке
Файлы в uploads
у меня выводятся в виде списков. Каждый каталог и подкаталог — это отдельный блок details. Я отказался от идеи выводить миниатюры, потому что это сильные накладные расходы.
В MaxSite CMS я использовал механизм, когда автоматом создаются миниатюры 100x100px в отдельном подкаталоге. Собственно они и выводятся вместо основного изображения. Минус такого подхода в том, что создаётся много лишних сущностей и ненадёжность работы. Например мы изменили исходного изображение, но миниатюра осталась прежней.
В Albireo CMS я полностью отказался от подобного способа, но, поскольку выводить полноценное изображение слишком большой трафик, то остановился на простой текстовой ссылке. Если на неё кликнуть, то открывается лайтбокс с полноценным файлом. Дальше можно скопировать его адрес или листать другие файлы здесь же. То есть достаточно типовое поведение.
Но часто стоит задача выбрать что-то из всего множества изображений. Например у меня есть каталог, где хранятся более сотни фоновых картинок. Их удобно выбирать, видя все сразу. Так что я придумал сделать ещё одну страницу, которая выводит все эти изображения скопом — в виде галереи. Работает автоматом — выводятся изображения из одного выбранного каталога. Поскольку в каталогах всё-таки не так много файлов, то трафик получается небольшой. Сама галерея выводит картинки в три колонки, но по клику выходит тот же лайтбокс.
Такой подход сохраняет быструю и удобную работу с файлами, но при необходимости можно выводиться и визуальной галереей.
«Удобный блогинг»
Для меня это что-то вроде концепции, которую я хочу максимально реализовать в Albireo CMS. Поскольку я не только программирую, но и часто пишу всякие статьи, но у меня всегда остро стоит вопрос удобного хранения и работы с текстовыми заметками.
Если по простому, то когда-то мне хватало обычного блокнота и текстовых файлов. Но постепенно я сместился в обычный Libre Office, потому что там можно уже использовать оформление и вставлять картинки.
Принципиально (для меня) есть две проблемы.
Первая — это то, что формат текста или офиса никак не подходит для web-записей. Например эту статью я набираю текстом, используя разметку TextSimple, которая близка в Markdown и TextLite. Мне это удобно и привычно. Эта же разметка работает на сайте, поэтому если мне нужно будет что-то опубликовать, то сам текст вообще не меняется. Использовать Libre Office для TextSimple будет как-то странно, не говоря уже о том, что это совершенно разные форматы файлов.
Вторая проблема — бардак с файлами. Когда файлов несколько десятков, то работать с ними не так просто. Ориентироваться по имени файла не всегда информативно, поэтому приходится открыть файл, посмотреть о чём там, закрыть, потом следующий и т.д. То есть не хватает элементарной структурированности данных.
Из-за этого периодически я «сваливаюсь» в другие программы. Последний мой фаворит — Obsidian. Хотя он крайне плохо работает со вставками кода, для обычного текста Markdown — отличный претендент. Кроме того он же работает со структурой файлов и тэгами.
Возвращаясь к блогингу, мне бы хотелось иметь в Albireo CMS подобную возможность. Поэтому я добавил к редактору правую боковую колонку, которая содержит php-файлы текущего каталога (тот который сейчас редактируется).
Сама колонка регулируется по ширине, что позволяет менять ширину текстового поля textarea. Для меня это тоже важно, поскольку я предпочитаю держать ширину текста равным бумаге A4. Но поскольку ширина браузера, как правило, намного шире, то текст получается «в одну строку». Полная ширина браузера нужна для быстрого просмотра страницы, поэтому постоянная «игра» с шириной браузера утомляет. Здесь же всё регулируется шириной колонки.
Боковая панель даёт возможность быстрой навигации по файлам, что намного удобней традиционного подхода, когда каждый файл нужно открывать отдельно. Скорее всего, рядом с именем файла я выведу какую-то дополнительную информацию, вроде title, рубрику, метки — благо всё это доступно в рамках системы.
Вывод страниц документации
В Albireo Framework входил шаблон doc — специально для создания документации. Это традиционная колонка меню слева и текст справа.
Сейчас же будет несколько вариантов, которые работают как layout-файлы (doc1.php, doc2.php и т.д.). В одном случае это будет что-то близкое к Albireo Framework, как например на сайте Berry CSS, а в другом в рамках текущего шаблона с сайдбаром, примерно как на MaxSite CMS.
Настройка doc-страницы указывается в отдельном конфигурационном файле. В него выносятся все css-классы оформления. Сама же страница настраивается достаточно просто:
layout: doc1.php type: doc doc.config: doc1.php doc.menu.title: Поля страницы doc.menu.path: 01_Основы.01
То есть указывается шаблон, тип, конфиг-файл и данные для меню. Причём иерархия меню задаётся как «path». Обслуживанием такого вывода занимается layout-файл, поэтому для пользователя всё работает как по волшебству.
Далее будет...
На самом деле особых планов нет. Когда чуть ли не каждую ночь рядом сбивают «шахеды», то понимаешь, что планировать даже на один день, одну ночь нет смысла. Поэтому есть скорее намерение, чем какой-то план действий.
Глобально сейчас двигаюсь в направлении блоков для шаблона. Там многое завязано на Berry CSS и с ним сейчас более-менее всё устаканилось. Основная идея в том, чтобы создать разные блоки, которые можно сразу же использовать для сайта. Это шапки, подвалы, а также всякие лэндинг-элементы. То есть клиент Albireo CMS сможет просто указать какие модули использовать без особых чудес. Пока в задачах использование компонентов шапок и подвалов из шаблона MF. Но я не хочу идти по пути MF, где каждый компонент имеет множество настроек. Здесь я хочу, чтобы всё размещалось в одном-единственном файле модуля. Если нужно что-то подправить, редактируется сам файл. Это сильно упрощает обслуживание шаблона.
В дальнейшем такие наборы модулей позволят создавать различные дизайны шаблона под разную тематику. По сути это довольно близко к существующим построителям страниц, вроде тильды, но не визуально, а явно прописывая что нужно в коде. То есть полностью контролируя результат.
Слава Украине! Смерть рашистам!
Таки Obsidian зачепив? ;о)
Дуже радий, що робота продовжується. Не згоден в тому, що мініатюри це накладні розходи. Я перший скрипт в Альбірео робив без картинки, був перебір .pdf і .jpg з простим виводом списку кожного разу, при звертанні до сторінки. Потім уже варіант зі скануванням і виводом по папках і т.д. Але пізніше, коли кількість документів перетнула відмітку 100шт і тормоза стали помітні, народилася ідея кешування списків для кожної папки. Після кешування мініатюри прописалися на сторінці, слідкувати за ними стало не важко й скорість віддачі не сильно зросла порівняно з "чистим" текстом.
п.с. у Obsidian є крутезний додаток - Share Note, який у поєднанні з Obsidian Dataview дає цікавий інструмент для роботи з примітками.
Да, Obsidian пока рулит, спасибо за наводку. :)
По миниатюрам. У тебя скорее идёт речь о превьюшках, а не о миниатюрах для просмотра в админке. Превьюшка в Альбирео делается автоматом — просто указывается нужный адрес, размеры и файл появится с суффиксом thumb.
Так, тут я схибив, бо дійсно, вів мову за прев'ю, зрозумів помилку пізніше, та месага вже була на розгляді.
Мені подобаються в цій статті підходи щодо адмінки, я практично не користувався попереднім варіантом, хоча й зробив окремий розділ користувачам, яким дозволено додавання/зміна файлів у аплоаді. Все інше експериментую напряму.
Хотілося б у layout мати варік з меню типу хлібних крошок, я робив такий, але це викликає необхідність фізичної адресації. Можливо, є й інші способи в рамках роутінга Альбірео, але я про них не знаю.
Странно, почему-то не приходят уведомления по email на твои комменты. :-)
Хлебные крошки сложно в том плане, что непонятно что в них нужно выводить. Самый простой вариант — это считывать структуру каталогов и по одному их выводить, но не по каждому адресу может быть страница. Поэтому пока ничего разумного не придумал. Но технически подключить любой модуль вообще не проблема.