Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Юзерпики в «Эгее»

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

В основном обращаться приходится к трём таблицам, имеющим довольно говорящие названия: Notes — сами заметки, Comments — комментарии к ним (там же хранятся и авторы комментариев, единого профиля у них нет) и Aliases — адреса, по которым доступны страницы (в моей схеме в этой таблице нет поля Alias, куда и записывается сам адрес).

Основные поля основных таблиц «Эгеи» версии 2.9

Назначения полей, в основном, понятны из названий, кроме разве что поля Stamp — это временная метка создания чего либо в секундах (timestamp) и поля с префиксом GIP, об этом чуть ниже.

Если вам интересны метки (теги), то понадобятся ещё две таблицы: Keywords — где хранится русское название метки и её урл и NotesKeywords, таблица, связывающая метки и заметки.

Теперь про GIP. Если флаг IsGIPUsed в таблице Comments установлен в ноль, то это прежняя схема хранения автора комментарий — без юзерпика, чтобы юзерпик появился, надо выставить IsGIPUsed в единицу, в поле GIP записать сервис, через который была проведена аутентификация (facebook, vk или twitter), а в GIPAuthorID записать некий идентификатор пользователя во внешнем сервисе.

Юзерпик нужно положить в pictures/avatar/ с именем, составленным из полей GIP и GIPAuthorID, записанных через дефисоминус. Например: vk-1.jpg — это был бы юзерпик Дурова, создателя «Вконтакте», если бы он зачем-то зашёл хоть на одну «Эгею».

Тут есть одна интересная деталь. Дело в том, что у меня в блоге, когда он ещё работал на самописном движке, уже были юзерпики, были они и у Олега Петровича, блог которого я переносил сегодня ночью. Причём и у меня, и у Олега авторизация была своя собственная, не обязательно через те сервисы, которые поддерживает «Эгея». Как же мне удалось перенести юзерпики?

«Эгея» в этом месте имеет простой механизм расширений — в принципе в неё несложно добавить любой внешний механизм аутентификации, что я и сделал. Подобрал в папке system/theme/images/, где движок ищет картинки внешних сервисов, подходящую картинку (email.svg) и написал фейковый плагин для сервиса email, который положил в файл system/gips/email.php:

<?php

class E2GIPEmail extends E2GIP {
  protected $type = 'email';

  private function _get_instance() {
    return (object) [];
  }

  public function get_auth_url() {
    return '';
  }

  public static function get_profile_url($id, $link) {
    return false;
  }

  public function callback() {
    return true;
  }
}

Файл плагина (и его тип) должны называться так же как и выбранная картинка — email и в базе его пользователи записываются с тем же значением поля GIP. В итоге, все свои старые комментарии я положил, как принадлежащие сервису email, а в качестве GIPAuthorID (это строка) взял хеш-сумму от сериализованной информации о пользователе.

Добавлено позднее: невероятно, но факт, оказалось, что GIP-плагины можно класть ещё и в users/gips/, что гораздо удобнее, так как в этой папке он не перетрётся при обновлении «Эгеи».

6 комментариев
Егор 2020

Евгений, привет. Подскажите, как настроить шрифты и фон в Эгее как на вашем блоге?
В стандартной теме они мелкие. В «Акуте» — цвет иной. Я так понимаю, где то в коде нужно что-то изменить? Может подскажете?

Евгений Степанищев 2020

Я просто создал свою тему (скопировал какую-то, они все лежат в themes/) и определил в ней свои стили.

Егор 2020

Странный ник вышел. Что за ерунда:))

Евгений Степанищев 2020

Поправил. Это у вас не в первый раз, один такой коммент я удалил уже.

Егор 2020

Что ж, ответ вы дали, но понятнее не стало.
(не в вашу сторону реплика, а мысли по поводу).
Скажем так, Эгея понравилась своей простотой, однако под капотом и в настройках возникают сложности (как настроить, как что то прикрутить, что то добавить). Иногда видишь реализованные решения у блогеров на Эгее. Иногда эти люди пишут посты, как и что они делали.
К сожалению, нет комьюнити (ну, форум там какой, нет развернутой документации (Бирман, привет!).
У вас один из отличнейших блогов (текста и стиль оформления), поэтому и решил спросить. Так как познаний для решения некоторых вопросов пока еще не хватает.

Евгений Степанищев 2020

Ну смотрите.

1) идёте в themes, берёте любую схему, которая вам больше подходит и копируете её папку в любую другую, например, в папку «egor»;
2) внутри редактируете theme-info.php, меняете «index», скажем на «0», в «display_name» прописывате имя своей темы на разных языках — «egor/егор»;
3) в styles/main.css вставляете нужные вам стили;
4) в настройках «Эгеи» (шестерня справа вверху) выбираете свою новую схему.

Егор 2020

Направление куда думать, понял. Спасибо за то, что уделили время. И хороших постов вам!

Валерий Котельников 2021

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

Евгений Степанищев 2021

Это вы лучше к автору движка обратитесь. На Эгее, думаю, нет, можете просто сверстать HTML, сделать его индексным, а с него уже ссылку на Эгею сделать.

Валерий Котельников 2021

Евгений, я спросил Вас, прочитав Ваш ответ Егору. Эгея притягательна не только для знатоков PHP, но и для простых юзеров. Я пишу книгу и для содержания нужна статическая страница. Индексный HTML файл в корне папки Эгея не видит. Пойду спрашивать Бирмана. Жаль, что по Эгее нет форума, как это было на заре русского Вордпресса.
С уважением, Валерий.

Евгений Степанищев 2021

Форума нет, есть чат в «телеграме»: https://t.me/aegea_community