Drupal 7: Новые возможности для разработчиков

Ноябрь 20, 2010

Некоторые считают, что главное изменение в новой версии Drupal (Drupal 7) - то, что многие популярные модули были включены в ядро. Это ошибочное мнение. В новом релизе были приняты патчи от более чем 700 разработчиков и многое было сделано, чтобы облегчить жизнь разработчикам на Drupal. Однако главной целью при создании нового релиза было улучшение юзабилити – в первую очередь для редакторов, которые работают с системой и разработчиков, которые только осваивают Drupal. Тема данной статьи – новые возможности Drupal 7 с точки зрения разработчика; о юзабилити с точки зрения конечного пользователя советуем почитать здесь.

Небольшое предисловие. В 2007 Дрис Байтаерт (Dries Buytaert) предпринял исследование юзабилити Drupal, чтобы узнать пожелания пользователей и учесть их в новой версии Drupal. Разработчики - участники исследования - выбрали следующие возможности, которые они хотели бы увидеть в ядре (перечислено по степени важности - наиболее важные в начале списка)  

  1. улучшить производительность для зарегистрированных пользователей
  2. включить в ядро конструктор запросов из модуля Views
  3. усовершенствовать разграничение прав доступа к ноде
  4. усовершенствовать внутренние API
  5. усовершенствовать внешние API
  6. усовершенствовать API для файлов
  7. добавить семантичную тему (наподобие Zen)
  8. более удобная очистка кеша
  9. почтовая система
  10. поддержка конфигурации master-slave для MySQL
  11. дополнительные API для поддержки интернационализации
  12. улучшить качество кода

Список пожеланий конечных пользователей выглядел иначе. Когда обобщали результаты исследования, учли 7 пожеланий конечных пользователей и 3 – из списка разработчиков. Цели нового релиза были сформулированы так:

  1. улучшить обработку медиа файлов
  2. пользовательские типы контента в ядре
  3. редактор WYSIWYG
  4. улучшить производительность
  5. улучишь инструменты структурирования/организации контента
  6. включить модуль Views в ядро
  7. добавить возможность автоматического обновления
  8. усовершенствовать разграничение прав доступа к ноде
  9. усовершенствовать внутренние API
  10. усовершенствовать внешние API
  11. юзабилити

Теперь перечислим основные новые возможности Drupal 7.

«Поля для всего» (“Fields on everything” - фактически рекламный слоган Drupal 7)

  • То, что было в Drupal 5 и Drupal 6 в модуле CCK - пользовательские (custom) типы контента и пользовательские поля - включено в ядро в Drupal 7. Хотя установка модулей – простая задача для экспертов Drupal, это сэкономит ваше время.
  • Более существенно: создание пользовательских типов контента и пользовательских полей стало удобнее. Теперь все в Drupal – комментарии, пользователи, термины таксономии – называется «сущностью» (entity) и к любой сущности можно добавить поля. Любое созданное поле может быть использовано повторно и добавлено при создании нового типа контента.
  • Комментарии и Пользователи также стали «сущностями» (entity). В сравнении с Drupal 6, это значит, что не нужно, например, устанавливать модуль content_profile, чтобы настроить профили пользователей (Users profiles). В Drupal 6 у объекта Пользователь было 3 поля: емейл, логин, пароль. Теперь вы можете добавить другие поля как, например, адрес, личная информация и т.д. без установки дополнительного модуля.
  • Добавлены новые типы полей: поле для изображений и поле для закачки файлов (в предыдущих версиях файловые поля добавлялись модулем FileField, поля для закачки картинок – модулем ImageField)

Новые возможности темизации.

  • Drupal 7 предоставляет новые возможности для front-end разработчиков; наиболее важная из них, возможно, то, что jQuery UI включено в ядро. Ранее надо было дополнительно устанавливать эту библиотеку.
  • Модуль Color в ядре.
  • Старые темы с табличной версткой исключены из ядра. В коробку добавлена новая тема "Stark", которая, по мнению разработчиков Drupal, может стать хорошим отправным пунктом для создания новых тем и упрощает понимание того, какой HTML и CSS Drupal предоставляет по умолчанию. В целом это отвечает требованиям, которые были высказаны в исследовании, упомянутом в начале статьи - добавить тему наподобие Zen.
  • Новая тема для админ-интерфейса под названием "Seven".
  • ID блоков поменяли, чтобы сделать названия более интуитивно понятными Например, ID блока навигации изменили с block-user-1 (в Drupal 6) на block-system-navigation (в Drupal 7). Многие переменные также переименованы: $picture заменили на $user_picture, переменные $left и $right – на $sidebar_first и $sidebar_second; некоторые функции переименованы и т.д. Новые имена выглядят достаточно логично и согласуются друг с другом, хотя разработчикам и потребуется некоторое время, чтобы привыкнуть к новым требованиям. Полный список изменений в темах для Drupal 7 можно найти на http://drupal.org/update/theme/6/7
  • Неудобство, вызванное тем, что нужно сверяться со справкой по поводу переименований и новых требований для Drupal 7, компенсируется некоторыми преимуществами, которые предоставляет новый Drupal при создании темы. Одно из преимуществ – более удобное использование функций-перехватчиков (хуки - hooks). Некоторые хуки, как то hook_page_alter, hook_form_alter, hook_js_alter, hook_css_alter можно использовать прямо из темы – не нужно создавать модуль для этого. Для некоторых хуков, например, hook_menu_alter по-прежнему надо использовать модуль.
  • В Drupal 7, $content стал отдельной областью (region) и является обязательным для всех тем. В Drupal 6 блоки можно было располагать только после основного содержания страницы в этой области и чтобы расположить блок выше основного содержимого, разработчики должны были создавать новую область. В Drupal 7 для основного содержимого страницы создан отдельный блок.

Работа с файлами и изображениями:

  • Файлы в Drupal 7 являются объектами с функциями file_load(), file_save() и file_validate() и соответствующими хуками.
  • Файлы используют обертку PHP, чтобы обеспечить поддержку как общедоступных, так и приватных файлов и обеспечить доступ к внешним хранилищам данных и сторонним ресурсам (например, S3 или фотографиям на Flickr)
  • Улучшена работа с изображениями, включая поддержку дополнительных библиотек.

Базы данных

  • Поддержка базы данных SQLite.
  • Добавлены конструкторы запросов для запросов INSERT, UPDATE, DELETE, MERGE и SELECT.
  • Поддержка master/slave репликации, транзакций, многопоточных запросов, отложенной вставки данных. По умолчанию используется InnoDB engine, а не MyISAM

Интернационализация

  • Новый интерфейс перевода
  • Модуль поиска поддерживает запросы в зависимости от выбранного языка
  • Поддержка контекста сообщений (msgctxt) упрощает перевод коротких слов, например “View” и аналогичных.

Прочее

  • Добавлена поддержка текстовых форматов по умолчанию в зависимости от роли пользователя.
  • Улучшена поддержка часовых поясов
  • Добавлена функция импорта OPML для RSS.
  • Инсталлятор можно запускать из командной строки
  • Запуск автоматических задач (cron) возможен с помощью конфигурации Drupal'а, без установки скриптов на веб сервере.
  • Улучшена поддержка мультидоменной установки
  • Добавлена поддержка RDF
  • Улучшены средства для поисковой оптимизации.

Новые минимальные системные требования:

  • База данных: MySQL 5.0.15 или PostgreSQL 8.3
  • PHP Version 5.2 или выше
  • PHP Memory: 40M - 64M

Вернёмся к списку требований для нового релиза Drupal, составленному после исследования 2007 года, которое мы упоминали в начале статьи. Какие из заявленных требований были реализованы в Drupal 7? Существуют ли требования, не принятые во внимание в этом релизе, возможно – отложенные для будущих релизов? Прежде всего, надо сказать, что многие требования, объявленные приоритетными, действительно реализованы (пользовательские типы контента в ядре, автоматическое обновление модулей, улучшение внутренних API). Редактор WYSIWYG не включен в Drupal версии 7 – хотя многие пользователи настаивали на этой возможности. Дрис Байтаерт высказался по поводу того, почему не был улучшен механизм разграничения доступа к ноде следующим образом: «В ядре Drupal нет UI для доступа к ноде, следовательно, дополнительные модули, а не ядро, предоставят такую возможность”. Мы должны также подчеркнуть, что самое важное изменение в Drupal – улучшение юзабилити: административный интерфейс Drupal 7 более понятен для новичков и нетехнических людей, которые работают с содержанием сайта. Даже если вы - разработчик на Drupal, и вас больше интересуют производительность и новые функциональные возможности, обратите внимание на тот простой факт, что ваши клиенты больше обращают внимание на понятный и красивый интерфейс, т.е. вашим клиентам больше понравится админ-интерфейс Drupal 7 и, соответственно, вместе с этим интерфейсом больше понравится работа, которую вы для них делаете. Поэтому еще раз советуем почитать статью о юзабилити Drupal 7.

 

Марина Муфель

Инженер по юзабилити