
Drupal 7.0 выпущен в январе 2011 года. Минуло 3 месяца. Стоит ли мигрировать сайты с Drupal 6 на Drupal 7 в поисках лучшей производительности, лучшего интерфейса, больших возможностей?
ВНИМАНИЕ! Данная статья содержит массу технических терминов и предназначена исключительно для разработчиков.
Мнение основано на попытке смигрировать 3 различных наполненных контентом сайта, для которых у всех установленных модулей присутствовали версии для Drupal 7 хотя бы dev.
Из трех в итоге на Drupal 7 оставлен один – этот.
Drupal 7: #D7CX. I pledge...
На страницах большинства широко распространенных модулей красуется гордое "I pledge": релиз модуля для Drupal 7 будет в день релиза Drupal 7. Многие разработчики выполнили свои обещания – выпустили новые версии своих модулей. Только вот назвать большинство из них релизами на тот момент язык не поворачивался.
С тех пор прошло 3 месяца.
Fields (ex-CCK). До ядра доехали успешно.
Вкратце про Fields в Drupal 7:
- Все штатные типы полей, бывшие ранее в CCK, также есть в Fields в практически неизменном виде;
- Импорт полей CCK (drupal 6) в Fields (drupal 7) прошел успешно. Сохранены параметры полей и содержимое полей. Поля корректно распределены между типами контента. Хинт: импорт полей и их содержимого не тривиален: необходимо раскопать пункт Content Migrate в структуре управления сайтом;
- Интерфейс управления Fields гораздо приятнее предыдущего, хотя по сути это тот же CCK.
Процесс оценки переезда я начал именно с Fields, и они меня приятно удивили. По сравнению со следующими описанными мной модулями – очень удивили.
Views. Как много в этом слове...
Вкратце про Views 3 в Drupal 7:
- Импорта из Views 2 нет. Все, что будет импортировано, будет неработоспособно. 100 из 100. С валяющимся в issues патчем - 90 из 100;
- Все написанные ранее модули под Views 2 API необходимо переписывать: создание объектов, хуки, темизация;
- Большинство ранее созданных файлов темизации вывода Views придется переписывать или переименовывать как минимум из-за того, что поменялись названия многих полей Fields (ex-cck);
- AJAX в Views отвратительно работают при наличии на странице 2-х и более представлений;
Самый популярный модуль Views со скрипом выпустил первую альфу Views 3 с оговорками:
- There is NO upgrade path yet. There is a patch but it is very unstable.
- The search filter is completely broken and will not work.
- Sometimes AJAX does not bind to the preview and it opens in a new page (!)
- Probably lots of other little things.
Первый и третий пункты впечатляют. Вообще, JS в Drupal 7 крайне нестабильный (чтобы не быть голословным, позже напишу отдельную статью на эту тему).
Импорта из Views 2 в Views 3 нет. Именно так – его НЕТ. Имеется патч. Результат на боевом сайте: мигрировали названия представлений и типы представлений. Поля ex-CCK (то, ради чего, в основном, Views и затевался) в основной своей массе предстают как Broken/Missing handler: после переезда из CCK в Fields половину «незначащих» полей переименовали. Teaser, и тот умудрились потрогать: теперь это тот же body с представлением summary.
Token теперь в ядре. Хотели как лучше...
Вкратце про token в Drupal 7:
- Token раскололся на «token-который-в-ядре» и «token-который-допиливает-функционал-которого-нет-в-token-в-ядре». Это прекрасно;
- Токенов для полей Fields (CCK) нет. В «допиливающем» токене в одном из issues регулярно публикуются патчи на тему, но кардинально ситуацию это еще не исправило;
- Все токены, использующиеся в настройках (pathauto и проч.) придется менять;
- Собственные решения, работающие с токенами, придется переписывать;
Мигрировавший в ядро Token лишился львиной доли функционала: мигрировать мигрировали, а перенести функционал тоже замигрированного в ядро Fields (ex-CCK) забыли.
Токены заменены. У токенов появился контекст: page:title, url:alias.
Шаблоны Drupal 7, шаблоны Contemplate (content templates)
90% шаблонов придется переписывать. Объект ноды значительно изменился. Элементы таксономии в объектах ноды изменились кардинально, они интегрированы в объекты словарей. У объекта ноды нет path (всем застрелиться). У файлов в объектах ноды нет полного пути (всем внимать про изменения файловой системы, public://filename и проч.).
Слегка упрощает ситуацию превентивное применение темизационного фреймворка Zen. Там в основных шаблонах потребуются некоторые незначительные изменения (print $content -> print $page['content']).
Content templates к работе в семерке не готов: создание шаблона для body автоматически перекрывает собой шаблон для summary (ex-teaser). Автор модуля находится в активном поиске помощника, когда дело сдвинется с мертвой точки - неизвестно.
Включить overlay и ужаснуться
Drupal 7 позволяет административные элементы выводить по оверлею ("над контентом по оси Z"). При этом формируемый контент темизируется штатными средствами (в шаблон page.tpl по умолчанию). Темы, которые не готовы к такому повороту событий, нужно допиливать до кондиции. Есть еще вариант - использовать в качестве административной темы дефолтный Bartik. Он к оверлею готов.
Captcha failed
Captcha не мигрирует, хотя все возможности для этого есть. Одно из обновлений update.php (переименование таблицы, alter таблицы) не проходит. Совершенно не критично, так как у этого модуля нет вереницы зависимостей, и его можно без зазрения совести удалить через uninstall, затем установить обратно и настроить как было. Все будет работать.
Imagecache: из милиции в полицию
Вы уже видели новый Imagecache? Простите, Image styles?
Вкратце про Image styles (ex-Imagecache) в Drupal 7:
- Импорта пресетов Imagecache НЕТ. Миграция идет вручную. Структура данных существенно отличается от имевшей место в Imagecache.
- У некоторых Imagecache actions придется менять архитектуру: некоторые экшены не позволяют задавать относительное местоположение. Пример: ранее в Overlay (watermark) я мог указать координату X накладываемого изображения как "left + 50", теперь мне разрешено только ткнуть в один из девяти radios, чтобы указать, к какому краю лепить результат;
- Imagecache action TEXT отсутствует целиком. Автор обещает не ранее, чем представители Гваделупы высадятся на Марс;
Image styles - своевременная попытка объединить всегда пустовавшую тему Drupal 6 "Original - Thumbnail - Large" с успехом Imagecache. В общем и целом, если бы я не мигрировал с Drupal 6, я был бы удовлетворен.
CKEditor и прочие визивиги
Теперь использование визуального редактора назначается не на определенный путь/id поля, а на формат ввода, что, на мой взгляд, гораздо логичнее. В общем и целом, модуль переехал и заапгрейдился на ура. Исчезла необходимость обязательной простановки галочки роли на единственный профиль CKEditor.
Administration menu
Administration menu мигрировал успешно. После импорта локализации Drupal 7 поверх существующей с заменой строк панель стала выглядеть на отлично.
Принадлежащее модулю меню теперь называется Management. Потерявшиеся пункты "Создать содержимое" и подпункты типов нод я раскопал в Навигации, сиротливо разбросанными по всему меню. Бережно собрал, объединил, засунул в "Добавление материала", затем все это добро в Management. Работает.
Jquery update
Страница проекта обещает апгрейд до версии 1.5. Чуда не произошло: сплошные uncaught exceptions в файле jquery. При отключении всяческих Lightbox2/Colorbox/Jcarousel все работает. В итоге остался на дефолтном для семерки jQuery 1.4.4.
Masquerade
Маскарад «обрадовал»: не прошло одно обновление, после чего блок маскарада стал доступен даже гостям, которым предлагалось вернуться (Switch back) к правам uid=1 (правда, после клика ничего не происходило, да и в конце концов это были тестовые версии сайтов). Uninstall модуля и его установка обратно решила проблему.
Выводы по Drupal 7
На 23.03.2011 Drupal 7 не готов к приему серьезных сайтов, успешно и безотказно работавших на Drupal 6. Визитки перетаскивать на него нецелесообразно, т.к. от поддержки Drupal 6 еще не отказываются. Крупные же сайты ждет масса проблем, трудозатраты на решение которых вполне однозначно пересилят те призрачные плюсы, которые сайт может получить от семерки.
Дискламер
Дочитавшие до этого места, возможно, воспылают гневом: как можно это предлагать в качестве базовой системы управления для коммерческого проекта?
Отвечу. Это никто (пока еще) не предлагает. Лично я разрабатываю сайты с системой управления Drupal 6. Она стабильна и обкатана. Напоминаю, что Drupal – некоммерческая система управления сайтом, и все вышеперечисленные модули разрабатываются фактически энтузиастами (есть и исключения, но не суть).
Вопрос стабильности Drupal 7 в связке с широко распространенными модулями – вопрос всего лишь времени.



