всего это Content Construction Kit (CCK), чрезвычайно гибкий инструмент для создания пользовательских типов данных, содержащих любое количество дополнительных полей: картинки, файлы, видеоролики, ссылки на внешние и внутренние ресурсы и т. д. (С технической точки зрения этот модуль представляет собой визуальный редактор для Node API, о котором уже говорилось.) Views – модуль для подготовки списков, содержащих документы, отфильтрованные по заданным параметрам (например, по рейтингу, автору, дате публикации или последнего комментария, наличию или отсутствию определенных тегов и др.). Фактически этот модуль можно рассматривать как редактор сложных пользовательских запросов к БД. Panels – модуль, позволяющий без знания HTML создавать страницы с нестандартной структурой. Он обычно используется для генерации главной страницы сайта, где необходимо выводить блоки с разнотипной информацией. Еще один важный модуль – ImageCache. Он обеспечивает функции автоматической обработки изображений на основе пользовательских сценариев правил обработки (preset). Например, при публикации документа на сайте можно настроить ImageCache таким образом, чтобы сразу изменить масштаб картинки, вырезать фрагмент нужного размера, изменить палитру, повернуть и т. п. Иными словами, из одной картинки автоматически могут быть получены, например, пиктограмма, миниатюра для предварительного просмотра и полноразмерное изображение.

Модуль ImageCache обеспечивает сценарии обработки изображений

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

Drupal: практический пример

Как использовать возможности Drupal на практике? Рассмотрим несколько примеров, для сборки которых требуются только существующие модули Drupal и не требуется знания языков программирования. Многие приведенные в примере задачи (и соответственно решения) можно рассматривать как типовые, так что они могут пригодиться для сайтов самого разного типа.

Полнофункциональные, настроенные и готовые к работе версии сайтов, речь о которых идет в этом разделе, можно найти на компакт-диске, прилагаемом к журналу (вместе с системными модулями пакета Denwer), а также в Интернете по адресам http://2start.ru и http://shvabrashvabr.ru. Примеры идут в комплекте с пакетом Denwer, поэтому вам не нужно заботиться об установке и настройке Web-сервера, СУБД и PHP, достаточно запустить инсталлятор и следовать инструкциям. После инсталляции и запуска Denwer станут доступны два сайта, сборка которых описана в этой статье, – http://shvabrashvabr.lc и http://intranet.lc. Имя пользователя/пароль администратора каждого из сайтов – admin/1111.

Корпоративный портал

Постановка задачи. Предположим, что имеется компания, которая занимается разработкой и интеграцией ПО. В ней работает несколько независимых групп разработчиков, каждая из которых занимается своим проектом. Задача секретаря компании – распределение входящих звонков между сотрудниками организации. Секретарь может не знать тонкостей работы отделов и технических терминов, а также кто из сотрудников занимается решением вопроса, с которым обращается позвонивший клиент, но при этом она должна направлять звонок в нужный отдел.

Решение. На основе CMS Drupal разрабатываем сайт, интегрированный с Active Directory. Благодаря такой интеграции пользователи могут для авторизации на сайте использовать логины и пароли от своих рабочих компьютеров. Для каждого сотрудника создается персональная страница с полями, частично доступными для редактирования самим сотрудником (краткая информация о себе, фотография), и частично доступными для редактирования сотрудниками отдела кадров (фамилия, имя, отчество, должность, контактный телефон и десяток ключевых слов – тегов). Аналогичные страницы создаются для каждого отдела, по каждому из них имеется описание, телефоны, список всех сотрудников и информация о руководителе. Страница отдела описывается несколькими тегами, характеризующими его работу. При наличии такой системы секретарю достаточно двух-трех слов в вопросе клиента, после чего с помощью системы поиска он находит человека, который с наибольшей вероятностью сможет ответить на вопросы звонящего. Достаточно простой, но наглядный пример. Возможны более сложные варианты, кроме телефонного справочника, корпоративный сайт может содержать модули CRM, Helpdesk, «Доска объявлений» или «Доска почета», корпоративный чат или форум и др.

Сначала определимся со структурой сайта. Основными типами контента у нас будут Отдел и Сотрудник. Управлять этими материалами смогут только пользователи с определенными правами доступа, например сотрудники отдела кадров. У каждого Отдела будут поля – название, описание, изображение, телефоны ответственных лиц, ссылка на страницу начальника отдела. В материале типа Сотрудник будут содержаться поля с информацией об имени человека, отделе, где он работает, контактные данные, а также поля, доступные для редактирования сотруднику, которому посвящена страница – фотография и текстовое поле с краткой информацией. Со страницы сотрудника автоматически будет проставляться ссылка на страницу отдела, где будут выводиться имена и ссылки на страницы всех сотрудников этого отдела. Кроме того, дадим возможность всем сотрудникам общаться на внутреннем форуме, вести свой дневник, закачивать изображения, а также разрешим определенному кругу лиц публиковать новости.

На главной странице будет выводиться список отделов, последние новости, форумные обсуждения и записи в дневниках. Если в сети компании настроен сервис каталогов 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.

Реализация. Загружаем с сайта drupal.org модули и CMS, следуя документации, инсталлируем их на сервер. Сначала изменим внешний вид сайта, выбрав в качестве активной темы Pixture Reloaded (при желании цветовую гамму). Активируем необходимые модули в меню Administer – Modules (/admin/build/modules):

• 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 – интерфейс для создания страниц, разделенных на блоки. Одна из задач, которая в нашем случае будет решаться при помощи этого модуля, – сборка главной страницы. Она будет разбита на четыре блока: верхний – заголовок страницы, левый средний – список отделов, ответственных лиц и их телефонов, правый средний – список последних сообщений в форумах и блогах и нижний – список последних новостей;

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

0

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

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