Перенос блога из Wordpress в .Net BlogEngine


Добрый день. Ранее я уже писал о том что у меня есть задумка заменить WordPress на какой-нибудь неплохой движок на платформе .Net. А тут мне на глаза подвернулась новость о том что прям перед новым годом вышла новая версия движка BlogEngine.Net И вот я решился попробовать этот движок. img

Первые впечатления

Каковы мои впечатления? Сайт стал работать ОЧЕНЬ быстро по сравнению с WordPress (Google показывает 89-90 из 100 баллов производительности). Новый дизайн админки и тема по умолчанию для сайта тоже мне понравились.Вот как выглядит админка:

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

Возможности расширения

К плюсам я отношу доступность исходного Asp.Net кода этого движка и возможность удобной кастомизации под себя для .net-программиста. Доступна также галерея расширений и тем для движка. Но, к сожалению, расширений там на порядок меньше, чем в WordPress. Однако это компенсируется легкостью создания плагинов. Я для себя сразу сделал пару плагинов:

  • Google PrettyPrint для подсветки кода
  • Yandex Share  для возможности поделиться в соц. сетях

они уже работают на этом сайте. Чуть позже, когда я доработаю их до приличного вида, я планирую выложить их в галерею. Пару слов о плагинах. Плагины помещаются с помощью cs-файлов с кодом на C# в директорию App_Code движка. Все файлы из этой директории подхватываются движком и компилируются при запуске приложения.Вот пример того что у меня получилось для Yandex Share:

[Extension("YaShare", "1.0", "<a href=\"http://mnazarov.ru\" target=\"_blank\">Nazarov Mikhail</a>")]
public class YaShare{

    public YaShare() 
    {
        Post.Serving += new EventHandler(Render); 
    } 

    private void Render(object sender, ServingEventArgs e) 
    {
        Post post = (Post) sender; 
        if (post == null) return;
        if (e.Location == ServingLocation.PostList) return; 
        string top = RenderButtons(); 
        e.Body = e.Body + top; 
    } 

    private string RenderButtons() 
    { 
        return @"<script charset="" type="text/javascript"></script></pre> <div data-yasharel10n="" data-yasharetype="" data-yasharequickservices="" data-yasharetheme=""></div> <pre> "; 
    }
}

Код  говорит сам за себя: подписываемся на событие обработки записи Post.Serving и в обработчике события приклеиваем к телу записи скрипт для кнопочек. Кидаем этот файл YaShare.cs  в каталог App_Code и у нас появляются кнопки «поделиться». Вот и все! Не правда ли очень просто?

Переход с WordPress

Для переноса моего контента с WordPress мне пришлось доработать скрипт Export.php вордпресса для выгрузки не в формат WordPress RSS а в формат BlogML. Так как WordPress не поддерживает экспорт в BlogML, а DotNetBlogEngine поддерживает только BlogML. За основу я взял скрипт http://wpblogml.codeplex.com/ однако для корректной выгрузки его пришлось немного доработать. Я не выкладываю пока скрипт, который получился у меня так как он немного не доделан и не полностью делает работу. После него я его делал несколько замен вручную в экспортируемом файле, кроме того я добавил там фильтрацию по только опубликованным записям, чтобы не переносить черновики. Думаю, что по хорошему нужно написать модуль для BlogEngine импорта из WordPress. Думаю, что если я не заброшу этот движок, то такой импорт напишу. Кроме, того для поддержки адресов записей мне пришлось подправить базовую библиотеку движка и заменить в Web.config .aspx на .html (нужно еще в настройках убрать галочку: убирать расширения). Измененная библиотека: BlogEngine.Core.dll (700,5KB)


Наверх