Эгея 11.0

Готова Эгея 11.0 (сборка v4079).

Обновились страницы «Фичи» и «Стать пользователем».

Эта заметка подытоживает предыдущие анонсы: альфа, альфа 2, бета. В конце — про новые цены.

В прошлой версии 2.10 появились рекомендации и перебивки — крутейшие инструменты, благодаря которым читатели могут находить хорошие заметки в вашем блоге независимо от того, когда они были написаны. А что нового в 11.0?

Главное меню

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

А теперь ничего и верстать не надо — Главное меню есть в Эгее «из коробки»:

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

В этом примере в начале меню стоит Избранное, а потом — любимые теги автора. Можно походить по тегам и посмотреть, какие есть заметки по разным темам:

Смотрите, какое чистенькое и аккуратненькое меню! Но при этом умное и функциональное.

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

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

Меню включается в Настройке, вот так:

Как видите, гибкость довольно большая: в меню можно добавить разные системные страницы. Наконец-то до Избранного, Обсуждаемого, Популярного будет легко добраться. Страница с полным списком тегов раньше пряталась за иконкой внутри поля поиска, а теперь её тоже можно показать в меню.

Если включить вообще всё и добавить кучу тегов, меню может получиться длинным:

Предполагаю, что «вообще всё» мало кому понадобится, но это дело автора. Вам не нужно думать, влезет ли меню у читателей с узким экраном. Не влезет — будет красиво прокручиваться прямо в своей строке.

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

Чтобы тег попал в меню, его нужно «закрепить» вот этой кнопкой:

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

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

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

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

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

Немодальный поиск

Поиск стал немодальным! То есть не нужно сначала тыкать в поле поиска, а потом начинать писать запрос. Любой ввод на странице сразу интерпретируется как поиск. Просто жмёшь букву «щ», и она сразу оказывается в поле поиска.

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

Как вы могли заметить, когда есть меню, поиск показывается прямо в нём, и всё вместе выглядит очень опрятно:

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

Есть ещё одна мелкая приятность, связанная с поиском. Бывает, начинаешь писать заметку, а надо поискать что-то в предыдущих заметках. Раньше приходилось открывать ещё одну вкладку, и там уже искать, чтобы не «перебить» редактор заметки результатами поиска.

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

Заботушка.

Навигация по календарю

Один из возможных пунктов Главного меню — «Календарь». Он открывает доступ к навигации по датам:

На этом примере мы перешли в «Календарь» — открылся день, когда была написана последняя заметка (на момент снятия скриншота). Видны заметки за день, можно перейти к другому дню, а также вверх к любому месяцу или году. Видно, если в какие-то даты не было заметок. А снизу есть навигация влево-вправо по соседним датам. Она же работает по альт-стрелкам аналогично тому, как можно альт-стрелками ходить по заметкам.

Как ни странно, в каком-то виде это всё было и в предыдущих версиях. Давным-давно в Эгее заметки получали адреса вида /год/месяц/день/номер/. Соответственно, до любой части адрес можно было стереть, и открывался список заметок за соответствующий день, месяц или год. Когда Эгея перешла на текстовые адреса заметок, мало кто мог догадаться сходить по урлу типа /2019/05/. А теперь такое можно просто натыкать.

Вот страница 2018-го года, например:

Альт-стрелками тут можно листать годы. Строчки календаря сделаны из того же компонента, что и Главное меню, поэтому умеют прокручиваться, если в них всё не влезает. Я веду блог с 2002 года, поэтому годы у меня не влезают никуда.

Как видите, календарь работает и без Главного меню (если выключено или лайт-версия). Но придётся догадаться, как туда зайти.

Скрытые теги

Теперь теги можно делать скрытыми, как последний тут:

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

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

Чтобы тег стал скрытым, нужно его назвать с точкой в начале:

Почему такой «программистский» интерфейс, а не красивый тумблер как-нибудь? А потому так намного удобнее писать в строчку — ничего настраивать не надо! При этом точка не является частью названия, это именно интерфейс скрытия такой. Нельзя, например, добавить два тега, отличающихся только точкой в начале.

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

Точно так же можно добавить точку уже существующим тегам, и они скроются.

Скрытые теги невозможно закрепить в Главном меню. Ленты заметок по скрытому тегу видны тоже только автору (остальным видна страница 404):

Безопасность

В Эгее появился фоновый мониторинг беззащитности. Подробно писал о нём, когда рассказывал про альфа-версию.

Ещё одно улучшение — в настройке параметров доступа к базе данных раньше был виден пароль от базы, а теперь нет:

Конечно, сам этот экран доступен только автору. Но вдруг злоумышенник подошёл к компьютеру автора, пока тот отошёл, и сфоткал себе пароль от базы? А ведь в базе кроме Эгеи может быть и что-то ещё. Короче, так надёжнее.

И ещё. В недавнем апдейте Эгеи 2.10 были устранены несколько уязвимостей. В 11.0 сделаны несколько внутренних изменений, которые сделают подобные уязвимости менее вероятными в будущем.

Остальное

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

Появилась фича «Случайная заметка», о которой давно просили. Работает, только если заметок хотя бы 10. Если есть избранные заметки, выбирать случайную будет из них. Это было просто сделать, но я не понимал, куда это поставить, а теперь для этого как раз есть Главное меню.

Новая тема оформления — Галь (голубенькая, это она на скриншотах выше). Поддерживает тёмный режим. Дизайн чекбоксов также осовременился.

Кстати, благодаря прокручиваемому дизайну Главного меню, на мобиле оно работает как родное:

Но обратите внимание, что отступ между пунктами меню чуть больше. Это сделано, чтобы в них было легче попадать пальцем. Зелёные иконки управления тоже «расступаются». Причём на самом деле тут дело не в мобиле, а именно в тач-экране. На 12-дюймовом айпаде тоже будут увеличенные отступы между пунктами меню и иконками управления.

А также:

  • добавилась поддержка изображений формата ВебП (если ваша версия ПХП собрана с библиотекой gd, которая его поддерживает);
  • по аналогии с тем, как @2x в имени файла подсказывает Эгее, что картинка ретиновая, @loop в имени файла видоса теперь подсказывает, что видос надо предзагрузить и играть по кругу без контролов (так вставлены видосы в этом посте);
  • в заметках теперь хорошо выглядят два уровня подзаголовков;
  • добавился итальянский язык интерфейса (автор — Роберт Блинов);
  • если оплаченный срок платной версии позади, показывается красная точечка в Настройке;
  • раньше при апгрейде до платной версии не сбрасывались кеши, потому что архитектурно Эгея не считала включение платности «обновлением», поэтому какие-то платные фичи могли проявиться не сразу, а теперь Эгея видит, что произошла подмена и сбрасывается кеш автоматически;
  • заодно изменения в config.php теперь тоже приводит к автоматическому сбросу кеша (разумеется, если вы просто что-то меняете в Настройке, то о кешах вам и раньше не нужно было заботиться);
  • до Эгеи 11.0 нельзя обновиться с Эгеи 2.6 или более старой (сначала обновитесь до 2.10, а уже потом до 11.0);
  • сообщение об успешном обновлении теперь чуток человечнее (кроме номеров билдов теперь есть номера версий);
  • Эгея больше не даёт поисковикам инструкций о том, что индексировать, а что нет — пусть сами разбираются;
  • все ссылки в комментариях теперь получают атрибут nofollow;
  • user/.htaccess теперь отдаёт файлы с расширениями svg, woff, woff2, eot, ttf, otf, так что вы можете подключать свои шрифты без дополнительной настройки;
  • теперь можно через конфиг настроить, через какие соцсети давать входить (sing_in_with), и если убрать оттуда какие-нибудь соцсети, через которые у вас оставляли комментарии к старым заметкам, то те заметки не ломаются;
  • джейсон-фид теперь версии 1.1;
  • в джейсон-фиде теперь отдаются теги заметки, а «Блоги» умеют их принимать;
  • в списках сниппетов заметок для автора блога больше не показываются по две звёздочки избранности, одна из которых — элемент управления;
  • дефолтный часовой пояс (/settings/timezone/) теперь обновляется при редактировании и публикации заметок;
  • обновление теперь работает «прозрачно», то есть открывается именно та страница, которую вы запросили без редиректа на главную;
  • обновились лайкли.

Технические дела

Эгея теперь поддерживает ПХП 8. Минимальные требования — ПХП 5.6, Майэскуэль 5.6 или МарияДБ 10.1.

Системные и пользовательские темы разделились. Папки /themes/ в корне больше нет, теперь есть /system/themes/ и /user/themes/. Если у вас были свои темы, перенесите их в /user/themes/.

Если у вас платная Эгея и вы использовали subscribe-sheet, то теперь вместо него — follow-sheet. Внесите в него нужные вам изменения.

Теперь заморочка для тех, у кого Эгея больше 9 лет. Перечитайте заметку об окончательном избавлении от Каллиопе в следующей версии. Начиная с Эгеи 11.0 Каллиопе не поддерживается ни в каком виде. Страницы /settings/calliope/ в 11.0 тоже нет. Если вы ещё не прошли через неё, рекомендую сначала поставить 2.10, и разгрести заметки оттуда. Прочитайте там.

Про улучшения в поддержке нескольких блогов на одном сервере, видимо, надо будет писать отдельно.

Благодарности

Самая большая благодарность в этот раз — Нине Папчене. Нина сверстала меню со всем его волшебным и прекрасным поведением.

Также спасибо Арсению Шароглазову за помощь с безопасностью.

Новые тарифы

Как и обещал, цена годовой лицензии вырастает с сегодняшнего дня.

Теперь есть два тарифа: на полгода за 2699 ₽ (~449 ₽ в месяц) и на год за 3999 ₽ (~333 ₽ в месяц). Также цена больше не зависит от того, ставите ли вы Эгею себе сами или пользуетесь нашим сервисом.

Раньше я относился к бесплатной версии как к основной, и считал, что «а ещё есть платная версия». Теперь основной, полной версией я считаю как раз платную. Бесплатная теперь будет называться «лайт».

Все варианты показаны на странице «Стать пользователем».

Если вы уже хоть раз платили за любую Эгею, для вас действуют специальные условия до конца марта. Даже если у вас уже и так оплачено с запасом, вы можете продлить сервис на год за 1900 ₽ или обычную лицензию на любое количество лет за 3000 ₽ в год. С апреля для вас будут действовать общие тарифы.

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

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

Если Эгея у вас оплачена, напишите мне, и я дам вам полную версию 11.0 с меню и другими платными фичами.

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

Свежий дистрибутив лайт-версии — в конце страницы «Стать пользователем».

Замените папку /system/ новой.

Если у вас были свои темы, перенесите их в /user/themes/. Теперь можно смотреть изменения с беты и  с 2.10.

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

Подписаться на блог
Отправить
Запинить
Дальше
7 комментариев
Ирина Горшнёва 2023

Всё круто, но почему тебе кажется нормальным размещать текст статьи слева, а не по центру экрана?

Я бы не парилась если бы это было только в твоём личном блоге. Типа такой дизайн. Но это сделано глобально для всех пользователей движка!

Миллионы читателей вынуждены страдать читая статьи из Эгеи, повернув голову налево. Абсурд.

Я считаю текст статьи должен быть размещен всегда по середине экрана.

Илья Бирман 2023

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

верни slug 6 дн

всё бы ничего, но почему-то часть slug съедает при формировании ссылки. я знаю, поддержка не оказываться,

верни slug 6 дн

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

Илья Бирман 6 дн

Это как?

верни slug 6 дн

Ну вот я пишу заметку, например: Meeting with Head of the United Russia party faction in the State Duma Vladimir Vasilyev
в идеале я ожидаю https://demo.blogengine.ru/all/meeting-with-head-of-the-united-russia-party-faction-in-the-state-duma-vladimir-vasilyev/
а Эгея мне делает обрезание зачем-то https://demo.blogengine.ru/all/meeting-with-head-of-the-united-russia-party-faction-in-the-stat/

менять руки не выходит, все равно обрезает

по поводу тегов, вот видео сделал https://imgur.com/a/AT5ZCvU

slug почти вернул 5 дн

нашёл в ядре (’ALIAS_MAX_LENGTH’,64) заменить нужно только тут или еще где-то? хотя поддержка ж не оказывается

slug почти вернул 5 дн

со ссылками разобрался

slug почти вернул 5 дн

function e2s_tag_edit() {
global $_strings, $_config;
od();

$fs = $ng = $bq = $lw = ’’;

if (array_key_exists(’tag-id’, $_POST)) $fs = $_POST[’tag-id’];
if (array_key_exists(’tag’, $_POST)) $ng = $_POST[’tag’];
if (array_key_exists(’page-title’, $_POST)) $il = trim($_POST[’page-title’], «\r\n»);
if (array_key_exists(’description’, $_POST)) $bq = trim($_POST[’description’], «\r\n»);
if (array_key_exists(’summary’, $_POST)) $bw = trim($_POST[’summary’], «\r\n»);
if (array_key_exists(’urlname’, $_POST)) $lw = trim($_POST[’urlname’], «\r\n»);

// Разделяем теги на массив
$tags = explode(’,’, $ng);

foreach ($tags as $tag) {
$tag = trim($tag); // Убираем пробелы вокруг каждого тега
if (!empty($tag)) {
list($gv, $sbv) = xa($tag);
$abv = 0;
$qbv = 1;

// Проверяем существование записи
sm(«SELECT * FROM `» . $_config[’db_table_prefix’] . «Keywords` » .
«WHERE `SubsetID`=» . $_config[’db_table_subset’] . « » .
«AND `ID` = » . ((int)$fs) . «„, ’get tag record to update’);
$zbv = qm();

if (count($zbv) != 1) die;

$wb = $zbv[0];

// Проверяем конфликт с другими тегами
sm(„SELECT * FROM `“ . $_config[’db_table_prefix’] . „Keywords` “ .
„WHERE `SubsetID`=“ . $_config[’db_table_subset’] . “ » .
«AND `Keyword` = ’» . lm($gv) . «’ » .
«AND (`ID` != » . ((int)$fs) . «)», ’make sure new tag name does not conflict with existing ones’);
$zbv = qm();

if (count($zbv) == 0) {
if ($qbv != $abv) {
cb();
}

e2_drop_caches_for_tag_($fs);

if ($gv === ’’) {
$gv = $wb[’Keyword’];
hb($_strings[’er—tag-must-have-name’], E2E_USER_ERROR);
}

$wb[’ID’] = ((int)$fs);
$wb[’Keyword’] = $gv;
$wb[’PageTitle’] = $il;
$wb[’Description’] = $bq;
$wb[’Summary’] = $bw;
$wb[’IsVisible’] = $sbv;

$v3 = qy(’neasden’, $wb[’Description’]);
if (count($v3) > 0) {
g2($v3);
w2($v3);
}

$databaseConfiguration = bl();
fm($databaseConfiguration, ’Keywords’, $wb);

$jy = d(USER_DIR, $databaseConfiguration, ’set’, ’t’, $wb[’ID’], $lw);
z1(eq(’e2m_tag’, [’tag-alias’ => $jy]));
} else {
hb($_strings[’er—cannot-rename-tag’], E2E_USER_ERROR);
k1();
}
}
}

die;
}

типо того

Мои книги