Pull to refresh

За что я люблю Drupal

Reading time11 min
Views26K
По моему скромному мнению, CMS Drupal наиболее близко подошла к понятию «идеальная CMS». Очень многое в Drupal сделано для облегчения жизни разработчиков. В этой статье мне хочется рассказать об основных моментах, которые мне нравятся в Drupal. Материал рассчитан на пользователей, мало знакомых с Drupal. Иногда мне придется говорить очень простые вещи, но именно из-за этих простых мелочей и складывается очень приятное впечатление от Drupal.

Сразу стоит предупредить, что Drupal это не готовое решение. После установки вы не получите настроенную и работающую социальную сеть, интернет магазин и т.д. В Drupal действует принцип «предоставление возможностей по мере необходимости». Именно поэтому на Drupal не делают сателиты и ГС в промышленном масштабе и, возможно, именно поэтому количество рабочих сайтов на Drupal уступает таким CMS как Joomla и Wordpress, любимым CMS строителей сателитов и ГС.

Drupal предоставляет удобные инструменты для разработки сайта, который нужен именно вам. Создатели Drupal понимают, что каждый сайт индивидуален и предоставление готового решения было бы не правильно, вместо этого они предоставляют инструменты для разработки. Весь Drupal и все его модули пропитаны этой идеей. Отсутствие ограничений и множество настроек позволяют разработать сайт под конкретную задачу легко и просто.

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

Ноды


Все типы материалов (Статья, Страница и т.п.) в Drupal являются дочерними от ноды (node) и имеются одинаковую базовую структуру. В отличии от многих других CMS в Drupal можно создавать свои типы материалов (например Товар, Видео и т.д.). Зачем это нужно? Такой вопрос может возникнуть только если представлять себе типы материалов как два поля: Заголовок и Содержание. Но это Drupal и, как некоторые наверно уже догадались, в нем можно создавать свои поля (стандартные: простая строка, список, файл, изображение и т.п., из сторонних модулей: e-mail, ссылка, телефон и т.п.). Причем все это создание осуществляется через удобный административный интерфейс. Разумеется у каждого поля есть множество своих настроек, что позволяет настроить их под свои нужды.

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

У каждой ноды есть системное имя, например node/105. Помимо этого к каждой ноде можно определить синоним, т.е. дополнительный адрес по которому данная нода будет открываться на сайте. Фактически это адрес страницы. Причем (мне это особенно хочется выделить, т.к. для меня это одна из самых важных функций), адрес синонима можно поменять на любой другой в любое время, в не зависимости от любых других условий (наличие материала в определенной категории например). Казалось бы такая простая возможность, как полное контролирование адреса страницы, реализована в других CMS очень плохо. Модуль Global Redirect делает 301 редирект с системных адресов на синоним, так что проблем с дублями материалов в поисковых системах не будет.

Любую ноду (читай любую страницу) сайта можно вывести на главную, закрепить на главной вверху, поменять дату публикации, автора, поменять настройки комментариев и т.д. Пиши об этом потому что, хоть это и элементарные возможности, не во всех CMS они реализованы нормально.

Таксономия


В плане создания категорий, тегов и т.д. Drupal не отстает от своих принципов предоставления не готовых решений, а инструментов для создания нужных вам решений. В Drupal разделение материалов по различным категориям называется страшным словом Таксономия, в котором, на самом деле, ничего сложного нет. В обычных CMS вам дается возможность создания одного набора категорий, тегов. Например в наборе категорий можно создать дополнительные категории и подкатегории, для тегов же предоставляется одна специальная категория, позволяющая добавлять множество произвольных тегов. Drupal, как обычно, стоит над этими решениями, предоставляя инструменты для создания неограниченного количества наборов категорий и их элементов с неограниченной вложенностью (в понятия Друпала это Словарь и Термин). Причем каждый такой набор категорий может быть выбран в качестве работы как теги (например поля для тегов про Софт, поле для тегов про Железо и т.п.). Разумеется, каждую категорию можно привязать к любому (нескольким или даже всем, напоминаю Друпал разработчика ничем не ограничивает) типам материалов. Просто для применения этих возможностей просто неограниченный.

Формат ввода


В Drupal есть такая удобная возможность, как Формат ввода. Он служит для ограничения разрешенных тегов при написании материалов и для автоматического преобразования определенной последовательности символов в код (например [videp: ссылка] в видео плеер). Можно создать сколько угодно форматов ввода, назначать ролям пользователям любое количество форматов ввода. Разумеется все это делается через админку и с широкими возможностями по настройке разрешенных фильтров.

Как известно, стандартно в Drupal нет визуального редактора, если вам он нужен, то с помощью модуля Wysiwyg можно к каждому формату ввода присоединить свой визуальный редактор (например сделать 10 форматов ввода и присоединить к каждому свой визуальный редактор). Пример с 10 разными редакторами надуманный, но на реальном сайте очень удобно пользоваться данной возможностью, например для комментариев отключить редактор, для модераторов новостей сделать простой редактор, а для админа полноценный).

Пользователи

В Drupal можно создать неограниченное количество пользователей, настроить им разнообразные права доступа (без всяких ограничений), в том числе доступ по материалам, по полям, по модулям.
В профилях пользователя можно создавать неограниченное количество своих полей (дата рождения, ссылки на профили в соц. сетях и т.п.).

Модули


Без сторонних модулей невозможно представить Drupal. Великолепное API, позволяющему создавать свои модули не влезая в код ядра, привело к созданию огромного количества модулей. Причем они, как и Друпал, предоставляют инструменты для решения проблем. Стоить отменить еще одну особенность модулей для Drupal — это их взаимосвязанность, удивительную взаимосвязанность. Это значит что модули не дублируют функционал друг друга, а работаю используя друг друга. При работе с Drupal вам не раз придется встретится со множеством ситуаций, что один модуль зависит от другого, а второй от третьего и т.д. Может сложиться впечатление, что таким образом придется устанавливать много «лишних» модулей, но это не так, обычно если вам нужен какой-то модуль, который зависит от еще двух, то эти два уже или установлены и используются или вы в скором времени их будете использовать. Drupal сильно зависит от сторонних модулей, сайт средней сложности использует более 30-40 модулей. Сейчас невозможно представить современный сайт на Drupal не использующие модули.

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

Views

Разговаривая о сторонних модулях никак нельзя обойти самый популярный, самый сложный и самых функциональный модуль для Drupal — Views. Гениальная и простая идея (как и все в Drupal) модуля состоит в том, чтобы предоставлять удобных инструмент для настройки вывода информации. Любой. В любом месте.

Модуль Views заменяет собой сотни других модулей в других CMS. Вам необходимо вывести последние пять новостей в блоке с возможностью настройки вывода именно так как вам нужно? Вам нужно создать страницу, на которой выводится все страницы с количеством комментариев больше 10 и датой публикации за три последних месяца? Вам нужно создать блок, в котором выводится 200 первых символов их последней страницы в определенном разделе? Вам нужно вывести информацию из специального типа материала в виде таблицы с 7 полям разбитой на страницы, отсортированной по определенному полу за период с январь по июль прошлого года? В других CMS вам пришлось бы искать модули под такие индивидуальные задачи или писать самому запросы к базе данных для выдирания информации. В Drupal для решения всех этих и множества других проблем связанных с выводом информации служит модуль Views. Просто выберите в административной странице какие поля вам нужны, настройте фильтры (по дате, по типу материала и т.д.), настройте сортировку (по дате, по каком-то полю и т.д.) и получите то что хотите.

Любой модуль может добавить дополнительные поля, критерии сортировки и т.д. во Views. Помните вначале был пример с отключением модуля комментариев? Так вот, при его отключении вы ни увидите поля связанные с комментариями во Views, соответственно, включив модуль комментариев поля, критерии сортировки и т.д. появятся на своих местах во Views. Таким вот простым способом модули взаимодействуют друг с другом.

Token

Модуль Token предоставляет токены — специальные маркеры, заменяющиеся своими значениями, например: заголовок материала, дата публикации, название поля, значение поля и т.д, их очень много (минимум 150), другие модули могут расширять их список своими токенами.
Этот модуль активно используются другими модулями, например для генерации адресов страниц, заголовком страниц, автоматического переименования файлов и т.д. Все это управляется через админку.

Panels

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

Rules

Модуль Rules позволяет создавать правила, срабатывающие при определенных условиях. Это могут быть самые различные правила, например перевод пользователя из одной роли в другую при достижении 100 добавленных комментариев или удаление нод, расположенных в какой-то категории, имеющих меньше 5 комментариев и опубликованные больше года назад. Все правила настраиваются через удобный административный интерфейс.

Описание отдельных модулей может занять не одну статью, ведь сторонних модулей создано более 12,5 тысяч. Важно одно: большинство из них предоставляют инструменты для разработчика, а не конкретное полностью готовое решение (это касается крупных модулей).
Найти модуль по ваши требования легко, ведь модули имеют ясно название, из которого четко понятно что для чего нужен модуль. Например, нужна капча — модуль CAPTCHA и его подмодули, нужно добавить Google Analytics — модуль Google Analytics к вашим услугам (с множеством настроек разумеется), нужно автоматически формирования названия нод — вам поможет модуль Automatic Nodetitles и т.п.

Написание своих модулей

Рано или поздно вам захочется написать свой модуль. В этом ничего сложного нет, вы даже поймете, что разрабатывать свои модули и предоставлять их сообществу выгодно, т.к. вы получаете дополнительных пользователей для тестирования вашего полезного модуля.
В разработке вам поможет документация api.drupal.org и модуль для разработчиков Devel. А модуль Coder даже автоматически проверит ваш код на соответствие принципам написания кода, принятым в сообществе Drupal (а он стандартизирован и его придерживаются все сторонние разработчики, в результате не сложно разобраться в коде других модулей). Ну а после, вам необходимо будет пройти песочницу, в которой ваш код более подробно осмотрят профессионалы. Особое внимание уделяют защищенности кода.

Локализация


Как вы переводите дополнительные модули/плагины/компоненты и т.п. в свой любимой CMS? Можно перевести самому, найти выполненный кем-либо перевод на просторах интернета, но когда дополнительных модулей/плагинов и т.д. становится много, то очень трудно уследить за обновлениями переводов (если их конечно делают). В Drupal данная проблема с поиском переводов отсутствует как класс, все переводы для всех языков (а их не мало) хранятся в одном месте на официальном сервере localize.drupal.org, причем не нужно даже вручную их переносить оттуда, с помощью модуля Localization update можно автоматически импортировать переводы в свой сайт на Drupal. Модуль автоматически проверяет наличие обновлений (по расписанию) и если хоть одна новая или обновленная строчка перевода появилась, он вам об этом сообщит. Представьте с какой легкостью вы можете создавать многоязычные сайты, теперь вам не придется искать переводы для всех модулей на множестве языков, особенно которых вы не знаете (вы когда нибудь делали многоязычный сайт на десяти языках, включая китайский и японский, с множеством модулей; представляете сколько времени потребовалось бы на поиск переводов? с Drupal такой проблемы нет вообще).

Темы


Поскольку Drupal создан для разработчиков, то и множество тем на drupal.org представлено для разработчиков. Существует так называемые чистые темы, в которых реализованы все стандартные страницы шаблонов темы и минимум необходимых CSS для нормального функционирования Drupal. Создание своих тем на их основе одно удовольствие. Мне особенно нравится чистая HTML5 тема Framework.

Темизации поддается все выводы информации, генерируемые другими модулями. Создатели модулей предусматривают специальные функции/файлы темы, которые можно переопределить в своей теме, настроив темизацию под свои нужды, т.е. не приходится править другие модули для настройки темы.

Drupal также предоставляет механизм создание под-тем, в которых переопределены только необходимые изменения по сравнению с основной темой, таким образом при обновлении основной темы, изменения сделанные в вашей под-теме не потеряются.

Стоит отметить, что админка в Drupal может иметь любую тему, хоть ту которая идет по умолчанию, хоть любую стороннюю тему для админки, хоть просто тему для основного сайта. Никаких ограничений.

Drupal.org


Drupal.org заслуживает отдельного упоминания. Особенно хочется упомянут структуру страниц модуля/темы/инсталяционного профиля. На каждой странице модуля представлено подробное описание возможностей модуля, ссылки для скачивания последней стабильной версии модуля и версии для разработчиков. У каждого модуля/темы/инсталяционного профиля показано количество рабочих сайтов (в действительности реально работающих сайтов будет больше, т.к. статистика учитывается только если включен модуль проверки обновлений), использующих данный модуль/тему/инсталяционного профиля. Сравните это с абстрактным количеством скачиваний в других CMS. Скачать модуль могут много раз, а вот в реальности его могут использовать в разы меньше. Drupal.org покажет вам реальную информацию о популярности модуля.

У каждого модуля/темы/инсталяционного профиля есть свой раздел Issues, своеобразный форум, в котором обсуждаются баги, предлагаются новые возможности и т.д. касательно только данного модуля/темы/инсталяционного профиля. Сравните это с форумами дополнительных модулей/плагинов и т.д в в других CMS. Обычно в них свалено обсуждение всех модулей в один форум, в котором очень трудно разобраться или, что еще хуже, обсуждение модуля вынесено на дополнительный сайт. На drupal.org таких проблем нет.

Литература


Для Drupal, в отличии от других CMS, представлено много литературы по разработке сторонних модулей, тем и т.д. В том числе и на русском языке. Хочется выделить два издания одной книги, подробно рассказывающее приемы написания дополнительных модулей, тем, инстраляционных профилей с использованием API Друпала. Также в них есть главы описывающие принятый в сообществе Drupal стиль написания кода, методы написания защитного когда и т.д.
  1. Тодд Томлинсон CMS Drupal 7. Руководство по разработке системы управления веб-сайтом 3-е издание
  2. Джон Вандюк CMS Drupal 6: система для создания сайтов и управления ими 2-е издание

Для начинающих можно порекомендовать следующие книги по использованию Drupal:
  1. Байрон А., Берри Э., Хог Н., Уокер Д., Роббинс Д., Итон Д. Drupal. Создание и управление сайтом
  2. Дэвид Мерсер Drupal 6. Создание надежных и полнофункциональных веб-сайтов, блогов, форумов, порталов и сайтов-сообществ

На английском языке книг вышло намного больше, смотрите Drupal.org/books.

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

Это небольшое описание того, что мне нравится в Друпале, призванное заинтересовать пользователей других CMS.

А что Вам нравится в Drupal?
Tags:
Hubs:
+30
Comments82

Articles