Movable Type

Экспорт темплейтов Movable Type, вариант 2

Предыдущий вариант скрипта экспортирует только те темптейты, которые уже описаны в конфиг-файле от Template Installer

В некоторых случаях это неудобно, хочется экспортировать все, включая widgets, системные темплейты и так далее. Поэтому родился новый вариант (скачать tmpl_export_full.zip).

Использование предполагается совместно с Template Installer:

./tmpl_export_full.pl OutDir [BlogID] [DSN]
 OutDir - обязательный параметр, что-то вроде 
   cgi-bin/mt/plugins/TemplateInstaller/template_sets/mycatalog
   (mycatalog будет создан если не существует)
 BlogID - ID блога (можно подсмотреть в параметрах mt.cgi при администрировании
    конкретного блога.
 DSN - Data Source в терминах DBI (dbi:Pg:movabletype - умолчание)
После исполнения скрипта, в каталоге OutDir появится набор темплейтов, который будет доступен плагину Template Installer.

Movable Type 4: nofollow и noindex

К MT3 был отдельный плагин nofollow, который приписывал атрибут rel=nofollow ко всем ссылкам в комментариях.

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

Естественно, о российских реалиях и теге <noindex> в SixApart не знают. Прилагаемый

патч
решает эту проблему. На глаз - работает.

P.S. Если вы не знаете что такое "патч", то он вам не нужен

Как один мужик Calendar Widget починял

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

В то же время, иметь календарик в блоге — приятно, особенно если он не сильно пустой. По счастью, авторы Movable Type дают готовый Calendar Widget, который даже работает. И я даже им долгое время пользовался, но полного счастья не было:

  • Календарик - одинаковый на всех страницах. Включая, например, архив
  • ...

Экспорт темплейтов Movable Type

Как и обещал ранее, родил скрипт для упрощения работы по переносу темплейтов MT:
cкачать tmpl_export_lite.zip

Это не замена 97-баксового Template Exporter, а именно скрипт для легкой автоматизации работы (переносить через dump/restore не всегда удобно):

  • Предназначен для работы с Template Installer, в частности кормится его конфигурационным файлом.
  • Работает с командной строки, если у вас хостинг, то нужен shell-доступ, ftp недостаточно.
  • Назначение: сохранить результаты работы через интерфейс MT в виде, пригодном для установки TemplateInstaller (например, в другой блог). Сохраняются только темплейты, уже определенные в Template Set
  • Все настройки перевода (<__trans=..) естественно пропадают, ибо в базе данных оно сидит уже переведенное.

Апгрейд Movable Type (3.x -> 4.x), часть первая

После десятка экспериментов на кошках, была отработана (и проделана на данном блоге) процедура апгрейда на Movable Type 4.x с третьей версии. В общих чертах она совпадает с рекомендованой авторами MT4, хотя имеются, конечно, и всякие локальные отклонения.

В пошаговом виде процедура выглядит так: После десятка экспериментов на кошках, была отработана (и проделана на данном блоге) процедура апгрейда на Movable Type 4.x с третьей версии. В общих чертах она совпадает с рекомендованой авторами MT4, хотя имеются, конечно, и...

Голова нужна не только, чтобы в нее есть....

"Чисто случайно" выяснил, что Export в Movable Type 3.3 не экспортирует теги. Кучу всякой хрени экспортирует, а теги - нет.

Другими словами, процедура апгрейда в 4-ку будет примерно такой:

  • апгрейдим по стандартной процедуре (как-то даже будет работать) до 4.0
  • делаем экспорт
  • ставим рядом блог с нуля (меня, напоминаю, волнуют новые темлейты)
  • делаем импорт.
  • дальше перенастраиваем и все такое.

Мда, я конечно уже 20 лет в разработке софта и все такое прочее, но о людях был лучшего мнения.

MT: перенос темплейтов (боремся с чужой жадностью)

Разработчики MovableType, судя по всему, предполагают, что вся работа с темплейтами должна происходить внутри интерфейса системы. В ряде сортов колбасы потребности, очевидно, нет. В частности, нет способов сделать:
  • backup/restore только темплейтов;
  • использование темплейтов одного блога для другого;
  • редактирование внешним редактором, а не встроенным уебибожеством.

Понятно, что разработчики плагинов в стороне не остались и Mark Carey предлагает готовое решение в виде плагинов Template Exporter и Template Installer. Есть правда одна закавыка, Installer бесплатен для некоммерческого использования, а вот за Exporter автор хочет $97.

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

<b>pg_dump -E UTF8 -F c -t mt_template movabletype | ssh server pg_restore -d movabletype -c </b>

Это, естественно, для инсталляции MT на PostgreSQL. C MySQL я практически не знаком, но уверен что средства побэкапить-поресторить табличку есть и там. Для переноса Archive Mapping нужно таскать табличку mt_templatemap. Конечно, мы неявно предполагаем что:
  • blog_id на двух инсталляциях совпадает
  • нужно перенести все темплейты всех блогов.

Естественно, для чуть более сложной задачи: экспортировать не все, а только для одного блога, экспортировать в файлы (и импортировать из них) придется попрограммировать. На первый взгляд, экспорт в формате, пригодном для импорта через Template Installer должен уложиться строчек в 20.

Movable Type 4: апгрейду быть

Несколько дней поковырял в фоновом режиме на тестовом сервере 4-й Movable Type и таки решил апгрейдиться.

Причин тому несколько (из cписка новых фич перечислены только важные для меня):

  • Главная причина апгрейда.
    Новая система темплейтов хоть и не идеально соответствует моим желаниям, но все же гораздо ближе к ним, чем старая.
    Старые темплейты я последний раз проклинал пару дней назад, переводя RSS-фид на Feedburner: пришлось исправить всего то мест пять (в идеале должно быть одно).
  • Более человеческие средства кросспоста в ЖЖ, используемый сейчас MTLJPost чудовищен.
  • Возможность сделать ветвящиеся комментарии, этот плагин был и для версии 3.3, но заставить его работать я так и не смог.
  • Встроенная поддержка OpenID, отчего использование этой авторизации стало менее замысловатым.
  • Активные авторы плагинов будут делать их (и исправлять ошибки) под 4-ю версию, а на старые — очевидно забъют.

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

Помимо этого, не подходят и старые стилевые файлы. Т.е. любимый Cutline придется рихтовать самому.

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

Movable Type 4.0. Апгрейдиться или нет...

Вердикт после попытки пару часов поработать: глюкало. Пусть сначала 4.2 выпустят, потом поговорим

Посмотрел на 4-й Movable Type с точки зрения "апгрейдиться или нет".
Впечатления двойственные:

  • Очень красивая новая панель управления, кнопочки, все мигает и переливается.
  • Появился бэкап (как я понимаю, полный), а не только экспорт.
  • Переделана система темплейтов, явно учли мои замечания :).
  • Есть готовый плагин для кросспоста в ЖЖ, не такой уродский, как используемый мной MTLJpost. Немножко недоделаный, имя аккаунта не видно где должно, но пользоваться можно.
  • Preview - настоящие. Наконец то!
  • апгрейд на тестовой площадке прошел на ура.
Попробовал проапгрейдить тестовую площадку....

Синхронизация MTЖЖ(beta.ya.ru) ? А как ?

А мне вот тут дали добрый совет. Дескать разрешить комментировать во всех зеркалах моего блога, и в ЖЖ-шном и в бетаярушном и чтобы везде были одинаковые ветки и все такое (и все транслировалось бы туда-сюда)

И мне даже в порядке эксперимента оно было бы интересно. BUT HOW ?

Есть ли готовое или частично-готовое решение ? Ну хрен с ним с я.ру пока, но даже двусторонняя синхронизация MTЖЖ похоже малореальна. Как, например, вылить дерево комментариев из ЖЖ ?

Update. В силу излишнего AI у скрипта синхронизации с ЖЖ, пришлось комментирование тут запретить (синхронизации то нету :). Комментируйте ЖЖ-шную копию пожалуйста

Кросспост из MT в LJ

Продолжаем патчить MovableType.

Многим, вероятно, удобнее читать мои упражнения через френдленту ЖЖ. Следовательно, нужен кросспост туда. Коллективный разум предлагает два решения:

  • ljcrosspost — сделан неудобно, предполагает публикацию через выполнение тега, что означает перепубликацию при любой перевыкатке отдельных статей. Не понравилось.
  • MTLJpost сделан более человечно, публикация происходит при нажатии кнопки Save в редакторе т.е. вместе с trackback pings, нотификациями блог-поисков и еще один RPC call погоды не сделает.
Берем и ставим второй. Выясняется:
  1. Машинка глючит, если нет картинки (юзерпика), соответствующего категории. Но править это соответствие после каждого редактирования категорий - мучительно.
  2. Не хватает пары мелочей:
    • постинга тегов в ЖЖ
    • запрещения комментариев (с комментариями хочется всех загнать к себе)
Впрочем, пять минут работы напильником и готов очередной патч. Этот патч:
  1. Передает в ЖЖ теги
  2. Чуть лучше разбирается с ситуацией, когда не найден юзерпик
  3. запрещает комментарии.
Если запрещение комментирования не нужно, то из патча нужно удалить строчку
+   $lj->Setprop_nocomments($event,1);
upd: после ряда экспериментов, я матчинг юзерпика и категории вообще убрал нафиг. Странное оно и дикое

Темплейты MovableType

Меняя, в очередной раз, много темплейтов MT, задумался об более человечной их структуре.

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

На мой вкус, человеческая темплейтная система должна строиться от других принципов:

  • Нужны layout-темплейты. Т.е. задание структуры (количество колонок, их состав и пр.) и общих по всему блогу элементов (header, footer, навигация) в одном месте. Конечно, в сложных случаях layout-ов будет много, но почти гарантированно один layout распространяется больше чем на одну страницу. Редактировать одно и то же в нескольких местах - глупо.
  • Нужны блоковые темплейты. Очевидный пример блока - это представление первых строк записи в индексах. Оно повторяется во всех архивах, в результатах поиска и так далее. Редактировать такую кучу мест - не менее глупо, чем править заголовки по всему блогу

Русификация MovableType

Русификация MovableType состоит из таких шагов
  1. Русификация дат
  2. Русификация имен файлов для dirify
  3. Перевод темплейтов и системных сообщений
Первые два пункта требуют правок кода, каковые правки и были сделаны. Все действия производились над MovableType 3.33

UTF-8 и только он

Мы живем в 21-м веке, когда передача лишних байтов через всю планету не стоит вообще ничего. Работа с многобайтовыми кодировками сейчас поддержана везде, на очень старые версии браузеров закладываться смысла нет (примечание от меня, как от автора Russian...

MovableType - сосет

Попытка разобраться с MovableType оставила двойственное впечатление:
  • Штука, несомненно, очень хорошая, вложена масса труда
  • Но при этом, сосет не нагибаясь
и ведь чем ближе рассматриваешь, тем больше хочется ругаться. Ужос просто!

Сначала о хорошем:

  • Штука - работает.
  • Поддерживается UTF-8, причем без глупостей. PostgreSQL-ю UTF8 ставят насильно, за что авторам MT большое спасибо - у меня в силу исторических причин default client encoding другая (скажем, багзиллу пришлось недавно дохакивать в этом месте).
  • Можно поставить и сразу начать
  • ...

Pages

Subscribe to Movable Type