дополнительных модулей, расширяющих возможности системы, занимается сообщество из нескольких тысяч программистов со всего мира. Кроме центрального англоязычного сайта drupal.org, общение на других языках обеспечивают около 20 национальных сообществ, в том числе drupal.ru – сообщество на русском языке.

Drupal в состоянии, что называется, из коробки, помимо ряда стандартных функций (публикация материалов, опросы, блоги, форумы, поиск, формы контактов, распределение прав доступа пользователей к функциям сайта и пр.), предоставлять несколько очень полезных и оригинальных возможностей, которые ставят эту систему в один ряд с лучшими коммерческими CMS. Прежде всего это чрезвычайно мощная подсистема классификации на основе пользовательских таксономий, когда каждому материалу может быть присвоено любое количество категорий (их называют также ярлыками, метками или тегами), с возможностью последующей фильтрации по заданным критериям (в том числе и весьма сложным). Иными словами, системными средствами Drupal легко реализуются, например, такие выборки, как показать «все документы, которым присвоены метки „футбол“, „Россия“, но не „поражение“ и „Испания“», или показать «все фотографии, которым присвоены метки „весна“ или „солнце“». Таксономия хранится в словаре, может быть иерархической, одиночной и множественной. Еще одна интересная особенность Drupal – встроенная система контроля версий материалов. При внесении изменений в элементы содержания (node) при соответствующих настройках будет сохраняться история версий документа; можно также сравнить любые две редакции и в любой момент откатиться к одной из них.

На уровне ядра Drupal обеспечивается возможность многоязычной работы. В сочетании с развитой подсистемой управления многосайтовыми конфигурациями это позволяет легко вести сайты на нескольких языках. Реализованы средства работы с OpenID, открытой децентрализованной системой аутентификации (используется, например, в LiveJournal), имеется подсистема автоматического оповещения об обновлениях модулей CMS, предусмотрено подключение различных систем для управления шаблонами страниц (template engines) и др. Используя дополнительные модули, можно значительно расширить возможности системы, например добавить функции авторизации по протоколу LDAP с использованием учетных записей Active Directory (это полезно для построения корпоративных интранет-порталов) или превратить сайт на Drupal в полноценный Интернет-магазин, интегрированный с отечественными (WebMoney и Яндекс. Деньги) и международными платежными системами (вроде PayPal). Имеются и специализированные модули, например, для интеграции с CRM-системами, создания социальных систем со сложной логикой рейтингования материалов, комментариев и пользователей (социальная модерация), развитый инструментарий поисковой оптимизации, средства интеграции с системами кэширования (Memcache, XCache, APC), причем в новейших версиях Drupal (7.0) эта интеграция возможна на уровне ядра. Еще одна из интересных особенностей Drupal – мощная подсистема создания составных типов данных.

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

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

В ядре Drupal реализован набор функций (API) для работы со всеми необходимыми компонентами: СУБД, формами, кэшем, пользователями и их правами. Для взаимодействия с СУБД используется абстрактный интерфейс DB API, ядро Drupal оперирует ANSI-совместимым SQL для работы с БД, а структуры (таблицы) для БД определяются программистом в массивах специального вида. При этом преобразование определений таблиц и запросов под особенности конкретной СУБД (официально система Drupal совместима с MySQL и PostgreSQL) выполняется специальной библиотекой, и разработчику не приходится заботиться об особенностях работы СУБД. Определив собственную библиотеку функций, можно подключить другие СУБД, – например, существуют библиотеки для IBM DB2, Oracle и MSSQL.

Не менее важная часть Drupal – интерфейс обработки экранных форм (Forms API). С точки зрения разработчика, форма Drupal – это определенным образом подготовленный массив данных, содержащий информацию об элементах формы и их параметрах. На основе этого массива системные функции генерируют HTML-код. Такой подход позволяет модулям модифицировать одну и ту же форму, а также с помощью функций темизации менять оформление отдельных элементов. Разработчики модулей могут добавлять дополнительные поля (например, защиту от автоматических публикаций – CAPTCHA) или заменять существующие (заменить текстовое поле WYSIWYG-редактором).

По умолчанию Drupal предоставляет пользователю базовый тип материала с минимумом стандартных полей и атрибутов: заголовок, текст, автор и ряд служебных полей. Программный интерфейс Node API позволяет дополнять базовый тип новыми полями: ссылками, картинками, файлами, списками и др.

Для управления правами доступа к материалам и службам сайта в Drupal реализованы два механизма. Первый обеспечивает проверку доступа к отдельным сервисам сайта – каждый модуль через специальный хук объявляет свои разрешения на использование тех или иных своих функций, затем администратор сайта может разрешить или запретить различным группам пользователей доступ к тому или иному функционалу. Второй механизм – права доступа к отдельным документам на создание, просмотр, изменение и удаление. Модули реализуют собственные интерфейсы проверки прав, основываясь на данном механизме. Например, есть модули, разграничивающие доступ пользовательских ролей к отдельным рубрикам сайта либо задающие права доступа непосредственно для отдельных пользователей, отдельных документов и даже отдельных полей документа.

Еще один важный элемент архитектуры Drupal – система темизации, позволяющая, во-первых, отделить логику работы программных модулей от представления данных; во-вторых, гибко настроить внешний вид каждого выводимого на экран элемента. Чтобы изменить внешний вид сайта, необходимо или скачать готовую, или разработать собственную тему оформления – набор особым образом сформированных HTML- шаблонов, в которые интегрированы PHP-переменные с данными.

Важно отметить, что подсистема темизации Drupal не принуждает разработчика применять один тип шаблонов. Drupal позволяет задействовать различные «движки» шаблонов, на базе которых строятся темы оформления. Стандартом де-факто для тем оформления в Drupal стал механизм PHPtemplate, но можно также использовать Smarty, PHPTAL, Easy Template System и др.

Темы оформления позволяют создать каркас сайта, который будет наполнен данными, генерируемыми модулями. При разработке модулей программисты, придерживающиеся принятых в Drupal стандартов кодирования, выносят весь код, связанный с выводом данных на экран, в отдельные, именованные специальным образом функции. Такие функции темизации обычно не реализуют никакой логики, а лишь принимают набор данных и возвращают HTML-код. Эти функции могут быть переопределены в теме оформления: таким образом, не изменяя код исходного модуля, разработчик может настроить внешний вид для задач конкретного сайта.

Модули Drupal С помощью модуля Content (CCK) создаются пользовательские типы материалов

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

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату