Эгея 2.9

Готова Эгея 2.9 (сборка v3553) со значительной переписью старья под капотом, фоткой в «Настройке», тёмным режимом, входом через ВК, менюшками и подкастами (для платных пользователей). Эта заметка повторяет анонс беты, но с меньшим занудством. Хотите подробнее — читайте анонс беты.

2.9 — необычный релиз, такой «Снежный барс» среди Эгей. Я стремился к наведению порядка под капотом во многих местах движка, так что новых фич не очень много. См. заметки про альфу, альфу 2, альфу 3, альфу 4, бету и бету-2.

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

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

Настройка и темы

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

Можно перетащить файл, а можно ткнуть в большой кружок, и тогда появится обычный диалог выбора файла. Как и в предыдущих версиях, фотографию можно перетащить и напрямую в маленький кружок в углу (но если ткнуть в маленький кружок, перейдёшь на главную).

Эта фотка теперь автоматически используется в качестве фавыконки и эпл-тач-иконки.

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

В темах «Простая» и «Акут» появилась поддержка системного тёмного режима. То есть при переключении тёмного режима в ОС, блоги с этими темами будут тоже переключаться в тёмный режим. Если такое поведение вам не нужно, снимите галку «Поддерживать Тёмный режим»:

На этом скриншоте ещё видно новую галку «Показывать счётчики просмотров». Счётчики появились в 2.8, но их не все полюбили; теперь можно выключить.

В тёмных темах оформления подкручены цвета подсветки кода. Иконки, изображающие отстутствие фотографии у комментатора, теперь красятся подходящим к выбранной теме оформления цветом, в том числе, с учётом поддержки тёмного режима (раньше всегда были чёрными). В предпросмотре тем оформления теперь показываются этажи «Популярное» и «Теги» (в конце страницы).

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

При изменении настройки соединения с базой теперь выводятся конкретные сообщения об ошибке, а не просто «перепроверьте параметры».

Менюшки

Появились выпадающие меню управления комментариями:

И загруженными картинками:

В менюшке картинки теперь видны имя и размер файла — информативность! Ещё теперь если вдруг файл с картинкой пропал с сервера, в качестве его превьюшки будет показан аккуратный перечёркнутый квадрат, а не что там браузер показывает, когда не смог загрузить картинку.

Нормальная обработка фейлов

Благодаря большой переписи слоя общения с базой данных, если с доступом к базе возникли проблемы, Эгея больше не сыпет гору бессмысленных ошибок на страницу, а показывает аккуратный лимон:

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

Благодаря большому рефакторингу фронтенда, Эгея теперь умеет выводить аккуратные сообщения об ошибках при неудаче с аджакс-запросами:

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

Также стало проще включить ведение лога. Если вы мне пожалуетесь на необъяснимый баг, я смогу быстрее получить от вас лог и попытаться понять, в чём дело. (Поддержки движка по-прежнему нет, так что в общем случае помочь я вам не смогу.)

Практически всё, что касается фронтенда (включая настройку аватарки, новые менюшки, эти сообщения об ошибках и исправление кучи багов) сделал Женя Лазарев — мегаспасибо Жене!

Подкасты (для платных пользователей)

Теперь Эгею можно использовать для подкастов, правда поддержка этого сделана на уровне прожиточного минимума. В коде РССа теперь вставляются теги enclosure с аудиозаписями, если они использованы в заметке, и добавлены разные ещё теги, которые нужны для подкастов: язык, автор, описание. На обычную работу РСС это не влияет.

Чтобы сделать подкаст на Эгее, нужно завести какой-то тег, который будет стоять у всех заметок-выпусков. В каждую такую заметку должен быть загружен мп3-файл с выпуском. Например, вы выбрали тег «подкаст». В редакторе тега пропишите тегу нормальное название в урле (например, «podcast») и заполните поля «Заголовок страницы» и «Описание» — они станут названием и описанием подкаста.

У меня это выглядит так (на описание пока забил):

Теперь выпуски подкаста, как любые заметки по тегу, живут на его странице с урлом ваш-блог/tags/podcast/, а урл ваш-блог/tags/podcast/rss/ можно скормить любому подкастному приложению, и оно будет скачивать и играть выпуски. Этот же урл можно отдать Эплу, чтобы добавить подкаст в каталог Айтюнса.

В качестве обложки подкаста будет использоваться обложка страницы этого тега (просто перетащите картинку в редактор, не обязательно использовать её в тексте описания тега). Эгея не проверяет, что это за картинка, так что убедитесь сами, что она квадратная и соответствует требованиям каталога Айтюнса. Если такой картинки нет, то в качестве обложки подкаста в каталоге будет отдана квадратная середина картинки, которая загружена в качестве фотки в «Настройке».

Другие подкастные поля для Айтюса вроде категории и наличия ненормативной лексики теперь можно настроить в конфиге через атрибуты rss_itunes_categories_xml (сюда надо прям XML-код атрибутов в формате Айтюнса) и rss_itunes_explicit (yes или no). Эти параметры — глобальные для блога. Если вы хотите публиковать несколько подкастов на разных тегах, вы не сможете прописать им разные значения этих атрибутов.

У меня прописано так:

$_config['rss_itunes_categories_xml'] = (
  '<itunes:category text="Arts">'. "\r\n".
  '<itunes:category text="Design" />'. "\r\n".
  '</itunes:category>'. "\r\n".
  '<itunes:category text="Society &amp; Culture">'. "\r\n".
  '<itunes:category text="Personal Journals" />'. "\r\n".
  '</itunes:category>'. "\r\n".
  '<itunes:category text="Technology" />'. "\r\n"
);

$_config['rss_itunes_explicit'] = 'no';

В результате в Айтюнсе мой видеоблог-подкаст выглядит так:

Разметка фрагментов аудио

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

В редакторе заметки это выглядит так:

[play] http://traffic.libsyn.com/atpfm/atp363.mp3 363: The Floor is Lava

<span class="e2-audio-seek jouele-control" data-href="http://traffic.libsyn.com/atpfm/atp363.mp3" data-type="seek" data-range="1:24:55...1:31:24">Разговор про Айпад начинается с 1:24:55</span>. Особенно здорово...

Как видите, приходится использовать АПИ Жуэля Про впрямую, в том числе, прописывать полный путь к файлу в атрибуте data-href. Класс .e2-audio-seek я определил в Эгее и использую, чтобы такие ссылки на места в аудиотреках выглядели как кликабельными и подсвечивались, когда эти фрагменты звучат.

Кроме того, появился упрощённый синтаксис для разметки частей длинного аудио, например диджейского микса или подкаста. Пример того, что с этим можно сделать — в недавней заметке о промомиксе «Аудио Санто». Пока играет микс, в плейлисте ниже подсвечен трек:

В редакторе заметки это выглядит так:

[play] http://promodj.com/download/6921656/ Ilya Birman: Audio Santo (Studio Mix)
0:00:00 0:02:44  Analog Pussy: Spooky Loops
0:02:45 0:04:34  Logic Bomb: Skrock
0:04:35 0:06:09  Krumelur: Understatement
...

Каждая строка имеет вид: от, пробел, до, два пробела, подпись. Тут важно, чтобы такие строчки с диапазонами и подписями шли без отступа после самого элемента [play]. Тогда Эгея поймёт, что это его разметка, и вам не придётся вручную описывать контролы Жуэля Про и верстать эту таблицу.

Остальное

Добавилась возможность представляться в комментариях через «Вконтакте» (спасибо Виктору Корейше):

«Роза» научилась английскому словоизменению (спасибо Роману Парпалаку). Кажется, меньше вероятность того, что поиск забудет проиндексировать некоторые заметки (был едва уловимый баг, попытался исправить).

Нисден стал поддерживать прямое указание языка программирования в коде: <code lang="php"> (спасибо Жене Степанищеву).

При редактировании тега теперь можно указать заголовок страницы этого тега. Я уже выше упоминал поле «Заголовок страницы» в связи с подкастами. Это новое поле в Эгее 2.9. По умолчанию в заголовке страницы тега написано что-то вроде «8 заметок с тегом кино». Теперь можно изменить, например, на «Обзоры кинофильмов», сохранив при этом сам тег «кино».

Мелочи:

  • если загрузить файл с русским именем, его имя теперь романизируется;
  • немного изменился внешний вид инсталятора;
  • миграция будет выполняться быстрее благодаря меньшему числу лишних запросов;
  • теперь не только в заметках, но в описаниях тега и блога можно использовать аудио и фоторамы (следствие унификации кода для обработки больших текстовых полей);
  • всем страницам добавлен og:type="website";
  • движок больше не даст запланировать заметку на будущее, если ему не хватает прав доступа к папке user/, и объяснит, что надо его дать (без этого он не сможет сохранить инфу о том, когда нужно будет сбросить кеши);
  • в комплекте теперь идут Лайкли 2.4 с рабочим счётчиком Фейсбука и без Гугль-плюса (спасибо, Николай Рысь);
  • sitemap.xml стал правильнее;
  • теперь можно сделать свой кастомный шаблон для РСС (user/rss/rss.tmpl.php);
  • при редактировании тега, в названии которого были эмодзи, они слетали, а теперь выживают;
  • поправлены всякие другие баги.

Ещё появилась беспилотная инсталляция, но это я для себя просто пишу, чтобы не забыть.

Как обновиться

Отредактируйте и сохраните любую заметку или черновик (на всякий случай; это гарантирует, что сделается актуальный бекап базы).

Замените файл .htaccess в корне, папку /system/ и все подпапки в /themes/ (то есть уберите старые, положите новые, а не дозалейте в старые новые файлы).

Имейте в виду, что переделалось всё логирование. Вместо user/log.txt теперь в папке user/logs/ пишутся разные логи, так что если у движка не будет прав, чтобы создать эту папку и файлы в ней, логов не будет. Если у вас всё правильно установлено, таких проблем быть не должно, потому что у Эгеи должны быть полные права на запись всего внутри её собственной папки, но это повод вам перепроверить.

Если вы делали свою тему оформления, посмотрите, что изменилось в комплектной, и аккуратно повторите эти изменения у себя. Также изменились названия некоторых параметров конфига, добавились новые (ваш user/config.php может частично утратить актуальность; сверяйтесь с system/config.php);

Где скачать

Свежий дистрибутив — на сайте движка.

Если вы пользуетесь платной версией и хотите платную 2.9, напишите мне.

О предыдущей версии: 2.8

Дальше
20 комментариев
Сергій Пономаренко 2020

Здравствуйте, Илья! Пожалуйста, обновите движок на демке https://demo.blogengine.ru/

Илья Бирман 2020

Готово.

Mike Ozornin 2020

PHP 5.5.9-1ubuntu4.22 2020/02/26 20:53:33 [error] 1036#0: *31 FastCGI sent in stderr: «PHP message: PHP Warning: require(system/core.php): failed to open stream: No such file or directory in /usr/share/nginx/html/blog/index.php on line 1 2020/02/26 20:53:33 [error] 1036#0: *31 FastCGI sent in stderr: „PHP message: PHP Warning: require(system/core.php): failed to open stream: No such file or directory in /usr/share/nginx/html/blog/index.php on line 1
PHP message: PHP Fatal error: require(): Failed opening required ’system/core.php’ (include_path=’.:/usr/share/php:/usr/share/pear’) in /usr/share/nginx/html/blog/index.php on line 1“ while reading response header from upstream, client: 185.86.78.38, server: mikeozornin.ru, request: „GET /blog/rss/ HTTP/1.1“, upstream: „fastcgi://unix:/var/run/php5-fpm.sock:“, host: „mikeozornin.ru“

В чем может быть дело?

php: PHP 5.5.9-1ubuntu4.22

Илья Бирман 2020

Не понимаю, что тут написано. PHP Warning: require(system/core.php): failed to open stream: No such file or directory? А реально файл есть?

Апдейт: это починили.

Игорь 2020

Илья, спасибо за вашу работу!
Обновился, полет нормальный

Владимир 2020

В дейтпикере в темной теме Дуглас пропали названия месяцев. В светлой теме Простая — они наместе.

Владимир Н. 2020

А, как вернуть время загрузки страницы? Это где-то закомментировано или вообще убрано? А идеально было бы сделать это видимым только при входе по паролю.

Илья Бирман 2020
$_config['display_stat'] = 2; // показывать всегда
$_config['display_stat'] = 1; // показывать только при входе по паролю
$_config['display_stat'] = 0; // не показывать никогда (дефолт)
Сережа Мороз 2020

Можно ли будет когда-то вставлять скриншоты в заметки?

Также появилась проблема с добавлением фото. Когда добавляю, пишет «no-files», но когда обновлю вкладку, фотка уже добавлена. То же самое с удалением — когда удаляю пишет «ошибка на сервере», но по обновлению файла уже нет. Что- же делать?

Илья Бирман 2020

А что мешает вставлять скриншоты?

Про фото — тут точно речь о 2.9? Где пишет no-files?

Сережа Мороз 2020

Я делаю скриншот части экрана и сразу хочу вставить его при помощи ctrl+v в заметку, но так не работает. То есть нужно скриншот сохранить как файл и потом добавить, а на это уходит больше времени, что не удобно.

Да, 2.9. Вот скрин: https://ibb.co/DrdRrCW
«Ошибка на сервере» показывается точно также.

Илья Бирман 2020
Юрий 2020

Спасибо за ваши труды. Есть пожелание к будущим версиям. Очень не хватает в черновиках сортировки по тэгам. Когда много черновиков, поиск нужных заметок становиться сложным.

Александр Крайсветный 2020

У меня тоже ошибка «no-files», версия 2.9, Сафари

Илья Бирман 2020

И тоже в реальности всё закачивается? А какая версия ПХП? Пока не представляю, почему так может быть.

Апдейт. Исправлено:
https://ilyabirman.ru/meanwhile/all/aegea-v3565/

Иван Сурвилло 2020

И у меня «no-files», версия 2.9, 3559, Сафари. ПХП 5.6.4

Илья Бирман 2020
Денис Кодин 2020

Как сделать отображение записей в блоге блоками? с кнопкой «читать далее»

Andrey Zharkevitch 2020

Прочитал в комментариях, что в заметки можно вставлять скриншоты, не сохраняя их в файл.
Пробую, но не получается. Ctrl-V, Cmd-V — ничего не происходит.
Может быть, что-то в конфиге нужно включить?

Эгея 2.9 v3572

Илья Бирман 2020

Такой фичи пока нет (но будет в 2.10). Сейчас надо сохранить и загрузить файл.

Сергей Рушковский 2020

Илья, скажите пожалуйста, есть ли возможность быстро сделать «стартовую страницу»?
Такую страницу, где будут все статьи и они будут разделены по нужным мне темам. Аля, «работа», «личное».

То есть приветственная страница.

Илья Бирман 2020

Можно использовать для этого описания блога. Там можно использовать всё форматирование как в заметке.

Игорь Шерстнёв 2020

Илья, какая-то непонятная беда с отображением загруженной аватарки. Установил движок, развернулось без ошибок, дальше перетаскиваю аватарку, в превьюшке отображается, после сохранения настроек (кнопкой «Сохранить изменения») аватарка на сайте не отображается. В папке сайта/users/ файлы userpic лежат, по дате изменения свежие. Но почему-то не подгружаются на сайт. Картинки в заметках работают без проблем.

Эгея Версия 2.9, сборка 3576

Илья Бирман 2020

А не отображается как? Там иконка человечка? Или просто ничего? Если впрямую в браузере открыть картинку с сервера, открывается?

Игорь Шерстнёв 2020

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

Илья Бирман 2020

Чё-то не представляю, почему так может быть.

Anon 2020

Вставлять картинки из буфера обмена научилась?

Павел Черепнин 2020

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

Илья Бирман 2020

Не работает mod_rewrite.

A.Semiletov (18 ) 2020

Илья, спасибо за труды.
Обновляюсь с v3386 до v3576:

  • Редактирую запись (создание актуального бекапа)
  • Удаляю /system, .htaccess и все внутри themes
  • Заливаю /system, .htaccess и все внутрь themes (не папку themes, а именно папки с темами)
  • Захожу на главную и вижу надпись «Выполнено обновление с версии v3386 до версии v3576», но ни одного поста нет
Илья Бирман 2020

Ого. Приходите в телеграм разбираться: @ilyabirman.

A.Semiletov (18 ) 2020

Разобрался с обновлением. Все из-за того, что в 3348 в /system/default/config.php прописался префикс создаваемой базы, а в /users/config.php ничего не записывалось. Соответсвенно, при обновлении создавалась новая база с дефолтным префиксом, хотя в «Соединении с базой» отображается правильно.
Итого: вернул из бекапа 3348, прописал в /user/config.php $_config[’db_table_prefix’] и все отлично обновилось.

Илья Бирман 2020

«Прописался» — это в смысле вы прописали?

A.Semiletov (18 ) 2020

Я уже не помню, т. к. было давно. Главное, что проблема найдена и решена =)

Мои книги