gladilov.org.ru gladilov.org.ua

Напильник для Эгеи

 Как можно заметить, мой блог ведётся на бесплатном (для личных блогов) движке  Эгея. Это отличный блого-движок, отличающийся своей простотой, элегантностью и дружелюбием к пользователю. Поэтому, после восстановления сбоя на сервере с моим сайтом, я опять решил настроить блог на Эгее. Правда, незадолго до сбоя я обновил систему до Debian 9, вычистив все упоминания о PHP5, остался только PHP7 (с FPM), но движок блога может работать как на пятом, так и на седьмом PHP.

Показать

Возможно, что из-за кривоватых настроек моего сервера Эгея из старого бэкапа сразу работать отказалась (нет баз, не известен пароль к базам и т. д.). Это было, вероятно, тяжкое наследие старой системы, я обновлял её через aptitude dist-upgrade.

Пришлось бэкапить MySQL-базы с наполнением блога, затем переустанавливать заново движок (скачал релиз 2.7, версию 3249), инсталлятор создал новые базы, поверх которых я вытащил из бэкапа мои блоговые статьи, комменты и прочее. Причём начальные таблицы в базе создаются с префиксом ’e2Blog’, нужно не забыть поменять на используемый мной префикс в файле system/defaut/config.php, строка

$_config['db_table_prefix'] = 'e2Blog';

Да, и user/settings.json желательно привести к такому виду

{  "db": {"server": "<узел>","user_name": "<имя>","passw": "<пароль>","name": "<база>"},
    "timezone": {"offset": 10800,"is_dst": false},
    "template": "plain",
    "language": "ru",
    "appearance": {"notes_per_page": 10},
    "comments": {"default_on": true},
    "site_title": "Блог ни о чём",
    "description": "Мысли, факты, цитаты, заметки.",
    "author": "Павел Гладилов",
    "user": {"email": "pavel@gladilov.org.ru"},
    "notifications": {"new_comments": true}  }

Затем выяснилось, что вместо статей открывается страница с ошибкой

Fatal error: Uncaught Error: Call to undefined function dl() in <файл> line <строка>

Пришлось погружать свои ручки в код движка... В результате просмотра кода было найдено решение — замена части кода в ядре движка system/core.php с

if (!extension_loaded('gd')) { if (!dl('gd.so')) { header('Content-type: image/gif'); return false; } }

на

if (!extension_loaded('gd')) { header('Content-type: image/gif'); return false; }

После этого блог заработал, но теперь пропала возможность быстрого сохранения в редакторе по комбинации клавиш Ctrl + Enter (в старых версиях — Ctrl + S) и при попытке движка сформировать или вызвать на редактирование страницу, на которой есть ссылки на несуществующие файлы картинок — открывалась страница с серым фоном и маленьким пустым квадратом посередине. Причём, если такая «кривая» страница открылась — то даже при устранении всех причин всё равно отображается ошибочная страница. Я думаю (но не проверял), что это связано с хранением сгенереных страниц (или их частей) в user/caches/*.psa. Возможно, мне повезло, что со временем истёк срок хранения кешированных «кривых» страниц, и они стали отображаться нормально. Или возникновение такой проблемы как-то связано с разными форматами таблиц старой и новой версии движка. А вообще эту проблему я обошёл с помощью прямой правки заметок в записях таблицы <префикс>Notes, затем там-же стал выставлять атрибут ’Null’ в поле «Uploads» и использовать полный путь к файлам картинок от корня.

В файле user/extras/header-pre.tmpl.php прописываю заголовок для блога — кнопки gladilov.org.ru и gladilov.org.ua.

В файле themes/<имя используемой темы>/templates/layout.tmpl.php рисую верхнее меню:

<?php if ($content['class'] == 'frontpage') { ?>
          <div id="e2-blog-description"><?= $content['blog']['description'] ?></div>
        <?php } ?>
<br />
<table width="650">
<tbody>
<tr>
<td><a href="<ссылка1>"><img src="<картинка1>" style="vertical-align:middle!important" />&amp;&nbsp;<пункт1></a></td>
<td width="15"></td>
<td><a href="<ссылка2>"><img src="<картинка2>" style="vertical-align:middle!important" />&amp;&nbsp;<пункт2></a></td>
<td width="15"></td>
...
<td><a href="<ссылкаN>"><img src="<картинкаN>" style="vertical-align:middle!important" />&amp;&nbsp;<пунктN></a></td>
</tr>
</tbody>
</table>
      </div>
    </div>

Ну и тоже выплывшую при правке system/core.php проблему с невозможностью определить новую картинку для юзера решаю изменением в этом же файле определений DEFAULT_USERPIC_FILENAME и DEFAULT_USERPIC_PLACEHOLDER_FILENAME на путь к моей картинке.

define('DEFAULT_USERPIC_FILENAME','<soul.png>'); define('DEFAULT_USERPIC_PLACEHOLDER_FILENAME','<soul.png>');

Теперь мой блог выглядит приблизительно так:

3 комментария
Валерий Котельников

Павел, добрый вечер. Про файл settings.ison на Эгее нашёл только у Вас. Мне нужно, что бы Эгея выводила одну страницу. Если я ставлю в {
«appearance»: {
«notes_per_page»: 1, (вместо 3)
«show_sharing_buttons»: false
},
settings.ison ломается,
после перезагрузки исчезает часть файла, которая отвечает за связь с базой и Эгея больше не работает.
Как быть?

Павел Гладилов

Валерий, добрый день!

Трудно что-либо посоветовать, так как не я пилил движок блога, а используемый мной давно не правил (да и то это было скорее по необходимости, чтобы заработало)... Как паллиатив, могу посоветовать Вам попробовать вынести определения параметров связи с базой в начало json-файла, вдруг поможет. Но настоятельно советую обратиться к автору движка, ЕМНИП, он оказывает техподдержку своему детищу...

P. S. Ещё как вариант — проверить валидатором JSON-файл на наличие ошибок, вдруг синтаксис где-то нарушен, незаметная запятая потерялась...

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

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

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

Павел, Вы правильно навели меня на мысль проверить, что происходит с файлом settings.json при редактировании. Нашёл ошибки! Благодаря Вам, проблема решена.

Павел Гладилов

От всей души поздравляю!

Популярное
Наверх