Перенос сайта с Mambo (Joomla) на Drupal

Есть у нас в хозяйстве несколько клиентских сайтов, сделанных в разное время (чаще не нами и очень давно) на CMS Mambo и ее наследнице Joomla. Mambo с некоторых пор канула в Лету, а Joomla обновилась до версии 1.5. На некоторых сайтах CMS не обновлялась годами, некоторые успели «намотать» «вредоносный код» — надо разбираться, чистить, обновлять, латать дыры.

И тут начинается самое веселое — обновить старинную Mambo с коллекцией столь же древних компонентов до свежей версии Joomla 1.5 оказалось сложнее, чем перенести сайт на Drupal. Никакой интеллигентной процедуры миграции для Joomla не предусмотрено, даже если наплевать на нестандартные компоненты.

Для Drupal существует модуль Joomla to Drupal, который сильно облегчает перенос сайта с большим количеством страниц на эту платформу. Модуль позволяет импортировать из базы данных Joomla пользователей, разделы и категории (из них создаются словари таксономии) и собственно само содержимое.

Процедура выглядит так:

1. Устанавливаем Drupal, ставим и включаем модуль Joomla to Drupal

2. Конфигурируем модуль — там нужно устроить доступ к базе данных Joomla.

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

4. Копируем картинки с сайта Joomla в нужную папку на Drupal (обычно, /images в /sites/default/files/images).

5. Переносим тему оформления. Мы редизайн не делали, поэтому перенесли старые шаблоны. Времени уходит часа 3 и более, в зависимости от количества и сложности используемых блоков (модулей в терминах Joomla)

6. Долго и нудно вычищаем в содержимом старые перекрестные ссылки, пути к картинкам и прочее — это самый трудоемкий процесс.

В последнем пункте сильно помогает прямой доступ к MySQL и запрос, о котором не все знают (удивительно, но факт).

mysql> UPDATE tbl
SET col = REPLACE(col, 'oldtext', 'newtext')
WHERE col LIKE '%oldtext%';

Очень удобно и быстро можно заменить пути к картинкам. С ссылками сложнее. Автоматически перевести сложную структуру URL из Joomla (что SEF, что нет) в Drupal почти нереально, то есть очень непросто. Самое простое и быстрое — убрать такие ссылки из текстов страниц вовсе. Если страниц немного, то можно попытаться поправить ссылки руками.

После переноса сайта на него еще долго будут переходить из поисковых систем по старым адресам. Документов с такими адресами на сайте не будет, а стандартная страница 404 у Drupal не слишком приветливая. Чтобы пользователь не испугался и не убежал сразу, можно поставить пару модулей: CustomError и 404 Blocks, они делают страницу с ошибкой более дружелюбной.

Последним пунктом программы можно удалить модуль Joomla, но только если вы не переносили пользователей. В силу разного формата паролей, без модуля Joomla старые пользователи не смогут войти на новый сайт. При первом входе пользователя модуль конвертирует формат и в дальнейшем для него не требуется.

На перенос этого и того сайтов ушло 2 дня. Не все еще гладко, но основная работа окончена, записи в DNS сменены, прощание с Joomla/Mambo состоялось и это здорово.

Популярные бесплатные CMS

Редкий сайт теперь обходится без CMS — системы управления содержанием. На самом деле содержанием обычно не ограничивается, подобные системы предлагают также наборы функций и механизмов для обеспечения интерактивности сайта.

Проблема в том, что термин CMS применяется с тем же размахом, что и «транспортное средство». Кому-то и велосипед транспорт, а у Абрамовича это яхта размером с дом или реактивный самолет. Причем все довольны — на самолете сложно полететь в булочную, а на велосипеде сложно совершать межконтинентальные путешествия. Каждый выбирает по запросам, возможностям и задачам.

Так получилось, что 9 из 10 сайтов в наших краях выполняют задачи, сравнимые скорее с поездкой в булочную, поэтому я буду рассматривать относительно простые и полностью бесплатные CMS. Приоритет отдам тем, с которыми идел дело, пусть и поверхностно в некоторых случаях.

Drupal

drupal

Drupal — система старая, историю ведет от 2000 года. Написан на PHP, использует MySQL или PostgreSQL (реже). Гибкий, но «тяжелый» и требовательный к ресурсам. Множество модулей и огромное сообщество, система очень быстро развивается — за месяц может выйти пара версий ядра, не считая постоянных обновлений модулей. А без модулей — никуда.

При всех недостатках, это на данный момент мой фаворит, поскольку сложно найти что-то более универсальное для не самых маленьких проектов. Относительно высокий уровень необходимых знаний для использования этой CMS удерживает сообщество Drupal от «замусоривания» малолетними «хакерами» энтузиастами.

MODx

modx cms

Относительно новая CMS, хотя актуальная версия радикально не изменяется уже пару лет. Разработчики и пользователи ждут перехода на MODx Revolution, поэтому активность вокруг текущей версии несколько снизилась.

Если потратить неделю на изучение системы, CMS вполне удобная (речь о версии 0.9.x), но только для небольших сайтов. Тысяча страниц в одном разделе полностью исключает удобство дальнейшей работы с административным интерфейсом MODx.

Joomla

joomla

Joomla попала в этот список по двум причинам: я когда-то с ней работал (сайты на Joomla приходится сопровождать и сейчас) и она сверх-популярна. Система старая, если учесть тот факт, что она когда-то отпочковалась от Mambo.

Популярность объясняется простотой и удобством — типовой сайт на Joomla создается за пару часов, а административный интерфейс по силам освоить и секретарше. Плюс неимоверное количество компонентов, разного назначения и качества. Сейчас практически не используем, замена в виде MODx (или Drupal, зависит от задачи) вполне устраивает.

WordPress

wordpress

WordPress — старая и очень популярная CMS для блогов. С минимальными доработками может использоваться для небольших корпоративных сайтов, различных портфолио, фотогалерей и так далее. Работает на этом сайте.

Особых восторгов по поводу WordPress я не разделяю, но как рабочий инструмент под конкретную задачу — весьма достойно выглядит. Дополнений — на любой вкус, причем большинство бесплатны. Недавно вышла новая версия WordPress 2.8, которую я пока не видел — жду русскую сборку от Lecactus.

SilverStripe

silverstripe

Приятная новая CMS из далекой Новой Зеландии. Я смотрел одну из ранних версий SilverStripe, сейчас система развилась во вполне взрослый продукт, который используется на раде крупных и серьезных сайтов.

Concrete5

concrete5

Система ведет историю с 2003 года, но я бы отнес ее к новым CMS, поскольку до прошлого года о ней ничего не было слышно. Одна из самых простых в использовании для неспециалистов CMS — страницы редактируются непосредственно на сайте очень наглядным и удобным способом.

Я попробовал сделать на Concrete5 небольшой сайтик, мне понравилось. К сожалению, не могу много сказать о разработке дополнений и расширений для этой CMS — глубоко не разбирался.

Старые CMS против новых CMS

Я выделял жирным возраст различных систем чтобы написать это замечание. Старые и новые CMS имеют ряд специфических достоинств и недостатков, о которых хочется сказать отдельно.

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

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

С новыми ситуация не проще. За 15 минут можно найти 15-20 CMS, которые появились относительно недавно, выглядят симпатично, но: команда разработчиков CMS состоит из 1-3 человек; сиатема не имеют документации вовсе или ограничена простым readme; вокруг системы нет сложившегося сообщества; у CMS откровенно набор функций и т.д.

Дальше все как в шоу-бизнесе. Кто-то завоюет популярность, поднимется и со временем перекочует в разряд старых, а кто-то затухнет или вовсе исчезнет.

О платности бесплатных CMS

По-настоящему бесплатными от начала и до конца можно назвать совсем не все бесплатные CMS. На ум сейчас приходит только Drupal да MODx — я не вспомню нужного мне модуля для этих систем, за который просили бы деньги. С большинством других CMS ситуация иная.

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

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