всего это Content Construction Kit (CCK), чрезвычайно гибкий инструмент для создания пользовательских типов данных, содержащих любое количество дополнительных полей: картинки, файлы, видеоролики, ссылки на внешние и внутренние ресурсы и т. д. (С технической точки зрения этот модуль представляет собой визуальный редактор для Node API, о котором уже говорилось.) Views – модуль для подготовки списков, содержащих документы, отфильтрованные по заданным параметрам (например, по рейтингу, автору, дате публикации или последнего комментария, наличию или отсутствию определенных тегов и др.). Фактически этот модуль можно рассматривать как редактор сложных пользовательских запросов к БД. Panels – модуль, позволяющий без знания HTML создавать страницы с нестандартной структурой. Он обычно используется для генерации главной страницы сайта, где необходимо выводить блоки с разнотипной информацией. Еще один важный модуль – ImageCache. Он обеспечивает функции автоматической обработки изображений на основе пользовательских сценариев правил обработки (preset). Например, при публикации документа на сайте можно настроить ImageCache таким образом, чтобы сразу изменить масштаб картинки, вырезать фрагмент нужного размера, изменить палитру, повернуть и т. п. Иными словами, из одной картинки автоматически могут быть получены, например, пиктограмма, миниатюра для предварительного просмотра и полноразмерное изображение.
Все эти модули интегрированы с системой темизации Drupal и позволяют изменять внешний вид создаваемых ими документов и списков.
Как использовать возможности Drupal на практике? Рассмотрим несколько примеров, для сборки которых требуются только существующие модули Drupal и не требуется знания языков программирования. Многие приведенные в примере задачи (и соответственно решения) можно рассматривать как типовые, так что они могут пригодиться для сайтов самого разного типа.
Полнофункциональные, настроенные и готовые к работе версии сайтов, речь о которых идет в этом разделе, можно найти на компакт-диске, прилагаемом к журналу (вместе с системными модулями пакета Denwer), а также в Интернете по адресам http://2start.ru и http://shvabrashvabr.ru. Примеры идут в комплекте с пакетом Denwer, поэтому вам не нужно заботиться об установке и настройке Web-сервера, СУБД и PHP, достаточно запустить инсталлятор и следовать инструкциям. После инсталляции и запуска Denwer станут доступны два сайта, сборка которых описана в этой статье, – http://shvabrashvabr.lc и http://intranet.lc. Имя пользователя/пароль администратора каждого из сайтов – admin/1111.
Корпоративный портал
Сначала определимся со структурой сайта. Основными типами контента у нас будут Отдел и Сотрудник. Управлять этими материалами смогут только пользователи с определенными правами доступа, например сотрудники отдела кадров. У каждого Отдела будут поля – название, описание, изображение, телефоны ответственных лиц, ссылка на страницу начальника отдела. В материале типа Сотрудник будут содержаться поля с информацией об имени человека, отделе, где он работает, контактные данные, а также поля, доступные для редактирования сотруднику, которому посвящена страница – фотография и текстовое поле с краткой информацией. Со страницы сотрудника автоматически будет проставляться ссылка на страницу отдела, где будут выводиться имена и ссылки на страницы всех сотрудников этого отдела. Кроме того, дадим возможность всем сотрудникам общаться на внутреннем форуме, вести свой дневник, закачивать изображения, а также разрешим определенному кругу лиц публиковать новости.
На главной странице будет выводиться список отделов, последние новости, форумные обсуждения и записи в дневниках. Если в сети компании настроен сервис каталогов LDAP (например, сервер OpenLDAP или контроллер домена Windows Active Directory), авторизацию пользователей можно организовать по протоколу LDAP. Для решения задачи нам понадобятся собственно система Drupal 6, модули CCK, Views, LDAP Integration, Panels, Filefield, Imegefield, Imageapi, ImageCache, FCKEditor, IMCE, Token и тема оформления Pixture Reloaded. Эти файлы можно найти на сайте http://drupal.org в разделах Modules и Themes.
• Content – ядро модуля CCK;
• Content Permissions – по умолчанию в Drupal права на просмотр/редактирование/удаление материалов распределяются с точностью до документа. Этот модуль позволяет настраивать права доступа к каждому полю в документе;
• Fieldgroup – позволяет объединять поля документа в группы;
• Filefield и Imagefield – модули, позволяющие прикреплять к документу любые файлы;
• Node Reference – позволяет создавать связи между документами, в нашем случае документы типа Сотрудник будут привязаны к документам типа Отдел;
• Option Widgets и Text – позволяют добавить к материалам стандартные объекты типа переключателей списков текстовых полей и т. д.
Для работы с изображениями потребуются модули Image API, Image API GD2 (или Image API ImageMagick, в зависимости от конфигурации сервера), ImageCache, ImageCacheUI. В нашем примере эти модули будут использованы для масштабирования пользовательских фотографий до размеров аватара (100?100 пиксел) и пиктограмм (20?20 пиксел).
Создавать сложные списки документов (представления) мы будем при помощи модулей Views и Views UI, среди них будут списки отделов, сотрудников выбранного отдела, новостей и последних сообщений в форумах и блогах.
Чтобы получить возможность в визуальном режиме создавать страницы, имеющие сложную блочную структуру, необходимо активировать модуль Panels, а также:
• Panel pages – интерфейс для создания страниц, разделенных на блоки. Одна из задач, которая в нашем случае будет решаться при помощи этого модуля, – сборка главной страницы. Она будет разбита на четыре блока: верхний – заголовок страницы, левый средний – список отделов, ответственных лиц и их телефонов, правый средний – список последних сообщений в форумах и блогах и нижний – список последних новостей;