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

MovableType - сосет

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

Pages

Subscribe to Movable Type