«Анжела Байрон, Эддисон Берри, Натан Хог, Джефф Итон, Джеймс Уокер, Джефф Роббинс Санкт-Петербург – Москва 2010 Анжела Байрон, Эддисон Берри, Натан Хог, Джефф Итон, Джеймс Уокер, Джефф Роббинс Drupal: создание и ...»
Using
Drupal
Angela Byron, Addison Berry,
Nathan Haug, Jeff Eaton,
James Walker, Jeff Robbins
Drupal
Создание и управление сайтом
Анжела Байрон, Эддисон Берри,
Натан Хог, Джефф Итон,
Джеймс Уокер, Джефф Роббинс
Санкт-Петербург – Москва
2010
Анжела Байрон, Эддисон Берри, Натан Хог,
Джефф Итон, Джеймс Уокер, Джефф Роббинс
Drupal: создание и управление сайтом Перевод А. Киселева А. Галунов Главный редактор Н. Макарова Зав. редакцией П. Щеголев Выпускающий редактор Ю. Бочина Редактор С. Минин Корректор К. Чубаров Верстка Байрон А., Берри Э., Хог Н., Итон Дж., Уокер Дж., Роббинс Дж.
Drupal: создание и управление сайтом. – Пер. с англ. – СПб.: Символ-Плюс, 2010. – 576 с., ил.
ISBN 978-5-93286-174- Drupal – это открытая система, которая используется для создания веб-сайта, а также платформа управления его содержимым с помощью дополнительных модулей расширения. Ценность Drupal заключается в том, что он позволяет разработчикам легко и быстро комбинировать модули, создавая эффективные и богатые возможностями сетевые ресурсы, практически не написав ни строчки программного кода.
С помощью этой книги читатель сможет не только составить общее представление о системе Drupal, ключевых модулях и их настройке, но и разобраться, как среди всего их многообразия выбрать тот, который оптимально соответствует стоящей перед разработчиком задаче. В книге рассматривается создание сайтов следующих типов: каталог вакансий, wiki-проект, фотогалерея, интернетмагазин, сайт с коллективным информационным наполнением и поддержкой мультиязычных версий. Рассказ о каждом проекте сопровождается пошаговыми инструкциями и подробным описанием действий.
Как начинающий пользователь, так и профессионал смогут почерпнуть из книги массу полезной информации и с помощью Drupal приступить к созданию сайта своей мечты.
ISBN 978-5-93286-174- ISBN 978-0-596-51580-5 (англ) © Издательство Символ-Плюс, Authorized translation of the English edition © 2009 O’Reilly Media Inc. This translation is published and sold by permission of O’Reilly Media Inc., the owner of all rights to publish and sell the same.
Все права на данное издание защищены Законодательством РФ, включая право на полное или частичное воспроизведение в любой форме. Все товарные знаки или зарегистрированные товарные знаки, упоминаемые в настоящем издании, являются собственностью соответствующих фирм.
Издательство «Символ-Плюс». 199034, Санкт-Петербург, 16 линия, 7, тел. (812) 380-5007, www.symbol.ru. Лицензия ЛП N 000054 от 25.12.98.
Налоговая льгота – общероссийский классификатор продукции ОК 005-93, том 2; 953000 – книги и брошюры.
Подписано в печать 28.12.2009. Формат 70100 1/16. Печать офсетная.
Объем 36 печ. л. Тираж 1200 экз. Заказ № Отпечатано с готовых диапозитивов в ГУП «Типография «Наука»
199034, Санкт-Петербург, 9 линия, 12.
Оглавление Об авторах
Предисловие
Введение
Глава 1. Обзор системы Drupal
Что такое Drupal?
Кто ею пользуется?
Возможности, которые поддерживает Drupal
Краткая история систем управления содержимым
Исторический экскурс в процесс создания веб-сайта.................. Эпоха сценариев и баз данных
Революция в управлении содержимым
Как работает Drupal
Модули
Пользователи
Содержимое (узлы)
Способы организации содержимого
Типы содержимого поддержки
Получение справки
В заключение
Глава 2. Запускаем Drupal
Задача
Примечания к реализации
Основы
Простота редактирования и обработки изображений.................. В центре внимания: управление содержимым
Содержимое
Комментарии
Навигация
Блоки
Практика: управление содержимым
Создание содержимого
Управление навигацией по сайту
Настройка блоков
В центре внимания: модули
Страница администрирования модулей
Поиск и установка модулей
Удаление модулей
Практика: работа с модулями
Модуль Path
Модуль Administration Menu
В центре внимания: права доступа
Настройка прав доступа пользователей
Профили пользователей
Настройки пользователей
Блокирование пользователей
Практика: создание ролей
Практика: настройка разрешений
Практика: форма с контактной информацией
В центре внимания: модуль Taxonomy
Практика: блог
В центре внимания: инструменты модерирования содержимого..... Инструменты автоматизированного определения спама........... Инструменты модерирования содержимого вручную............... В центре внимания: темы оформления
Поиск тем оформления
Установка тем оформления
Настройка тем оформления
Блоки и области
Настройка темы оформления административного раздела
Практика: придание сайту неповторимого внешнего вида............. В центре внимания: редактирование содержимого и работа с изображениями
Редактирование содержимого
Работа с изображениями
В центре внимания: форматы ввода и фильтры
Практика: настройка модуля FCKeditor
В заключение
Глава 3. Каталог вакансий
Задача
Примечания по реализации
Нестандартные формы ввода
Отображение содержимого
Выгрузка файлов
Оглавление В центре внимания: CCK
Поля
Виджеты
Форматтеры
Практика: CCK
Практика: тип содержимого Job (вакансия)
Практика: настройка отображения поля
Практика: тип содержимого Job Application (заявка)
В центре внимания: модуль Views
Отображения
Элементы представления
Практика: модуль Views
Представление Jobs (вакансия)
Представление Job Applications (заявки)
Дополнительно
В заключение
Глава 4. Обзоры продуктов
Задача
Примечания к реализации
Информация о продукте
Оценка продуктов
Реализация поиска
Первый шаг: основные описания продуктов
Создание типа содержимого Product Review
В центре внимания: модуль Amazon
Что включено?
Региональные настройки
Настройки ссылочной информации
Практика: добавление поля Amazon
Добавление поля Product ID
Поиск идентификаторов продуктов
В центре внимания: Voting API и Fivestar
Практика: добавление оценок
Добавление поля Rating
Включение оценок посетителей
Практика: создание представления со списком продуктов............. В центре внимания: модуль Search
Важность выполнения регулярных процедур
Поиск с помощью модуля Views
Практика: добавление возможности поиска в список продуктов
В центре внимания: модуль CSS Injector
Практика: улучшение внешнего вида
Настройка параметров отображения полей CCK
Настройка модуля CSS Injector
Дополнительно
В заключение
Глава 5. Wiki
Задача
Примечания к реализации
Функциональные возможности Wiki
Простота форматирования текста
Простота создания ссылок
Отслеживание изменений
Удобочитаемые адреса URL
Список изменений
Практика: первые шаги
Создание типа содержимого Wiki
Удаление информации об авторе при отображении.................. Настройка прав доступа
Практика: формат ввода wiki
Настройка фильтров
Создание формата ввода wiki
Настройка разрешений формата
Добавление содержимого
В центре внимания: модуль Pathauto
Практика: модуль Pathauto
Настройка параметров
В центре внимания: отслеживание редакций в Drupal.................. Практика: редакции и модуль Diff
Включение механизма редакций по умолчанию
Настройка разрешений
Просмотр редакций и переключение между ними
Использование модуля Diff
Практика: создание представлений New pages и Recent edits......... Список Recent posts
Список Recent edits
Дополнительно
В заключение
Глава 6. Управление процессом публикации
Задача
Примечания к реализации
Процесс публикации
Оглавление Извещение по электронной почте
Обзорные страницы
Практика: первые шаги
В центре внимания: действия и триггеры
Практика: действия и триггеры
Настройка действий
Назначение триггеров
В центре внимания: модуль Workflow
Практика: определение процесса публикации
В центре внимания: модуль Workspace
Практика: создание рабочих пространств
В центре внимания: модуль Views Bulk Operations
Практика: создание страницы администрирования
Создание действий процесса публикации
Настройка представления
Дополнительно
В заключение
Глава 7. Фотогалерея
Задача
Примечания к реализации
Выгрузка фотографий
Создание миниатюр
Фотогалереи
В центре внимания: модуль ImageField
Настройка
Практика: выгрузка фотографий
Тип содержимого Photo
Галереи изображений
В центре внимания: модуль ImageCache
Наборы правил и операции
Использование наборов правил
Разрешение проблем с модулем ImageCache
Практика: модуль ImageCache
Создание наборов правил для ImageCache
Настройка отображения поля Photo (Фотография)
Улучшение качества изображений
Практика: представление gallery
Практика: блок с последними фотографиями
Практика: модуль Custom Pagers
Дополнительно
В заключение
Глава 8. Многоязычные сайты
Задача
Примечания к реализации
Форумы
База знаний
Перевод пользовательского интерфейса
Перевод содержимого, созданного пользователями.................. В центре внимания: средства интернационализации в ядре........... Модуль Locale
Перевод содержимого
Практика: установка перевода
Практика: настройка модуля Locale
Настройка механизма выбора языка
Переключатель языка
Практика: переводимое содержимое
В центре внимания: модуль Localization Client
Практика: перевод интерфейса
Использование модуля Locale
Использование модуля Localization Client
Практика: перевод содержимого
Перевод
В центре внимания: Internationalization
Выбор содержимого
Модуль Strings
Переменные сайта, зависящие от языка
Вспомогательные модули
Синхронизация
Практика: особенности пакета Internationalization
Выбор содержимого
Переменные сайта
Типы содержимого
Таксономия
Дополнительно
В заключение
Глава 9. Управление событиями
Задача
Примечания к реализации
Управление событиями
Слежение за численностью участников
Практика: первые шаги
Создание типа содержимого Event
Права доступа
Оглавление В центре внимания: модуль Date
Модуль Date Timezone
Типы полей для хранения дат
Виджеты ввода дат
Настройки модуля Date
Практика: добавление дат
Настройка модуля Date
Добавление поля даты
Практика: представление для отображения предстоящих событий
В центре внимания: модуль Calendar
Тип представления Calendar
Практика: представление Calendar
В центре внимания: модуль Flag
Практика: настройка модуля Flag
Практика: представление Attendee
Дополнительно
В заключение
Глава 10. Интернет-магазин
Задача
Примечания к реализации
В центре внимания: пакет Ubercart
Ubercart – core
Ubercart – core (optional)
Ubercart – extra
В центре внимания: панель администрирования Ubercart............. Практика: настройка магазина
Начальная настройка
В центре внимания: модули Products, Product Classes и Attributes
Практика: создание продуктов
Начальная настройка
Настройка классов продуктов
Настройка атрибутов продуктов
Настройка параметров продуктов
Настройка каталога
В центре внимания: процесс оформления заказа
Практика: обработка заказов
Покупательская корзина
Налоги
Доставка
Оплата
Размещение тестового заказа
Исполнение заказа
Управление доступом
Дополнительно
В заключение
Глава 11. Оформление сайта
В центре внимания: механизм поддержки тем оформления........... Файлы.info
Области
Свойства
CSS
JavaScript
Файлы шаблонов
Файл template.php
Практика: создание собственной темы
Создание копии темы
Изменение CSS
В центре внимания: файлы шаблонов
Практика: работа с файлами шаблонов
Модификация файла шаблона
Оформление отдельных типов содержимого
Переопределение файла шаблона модуля
Создание новой области
В центре внимания: дополнительные возможности переопределения
Переменные шаблона
Функции темы оформления
Практика: использование файла template.php для переопределения
Переопределение переменной шаблона
Переопределение функции темы оформления
Дополнительно
В заключение
Ссылки
Приложение A. Установка и обновление Drupal
Приложение B. Выбор модулей
Приложение C. Модули и темы оформления, использованные в этой книге
Алфавитный указатель
Анжела Байрон (Angela Byron) – убежденная сторонница движения за распространение программного обеспечения с открытыми исходными текстами; она живет и дышит проектом Drupal. Для нее все началось в студенческом лагере Google Summer of Code в 2005 году, и с тех пор она полностью отдала себя работе в сообществе Drupal. В ее обязанности входит разработка нового программного кода и оценка исправлений, создание и передача в проект новых модулей и тем оформления, тестирование и проверка программного кода, работа над документацией и поддержка пользователей в форумах и каналах IRC.
Анжела входит в состав совета директоров ассоциации Drupal и является членом группы сопровождения Drupal 7. Она способствует дальнейшему росту сообщества, выдвигая инициативы по привлечению новых добровольцев, например представляет проект Drupal в программах Google Summer of Code и Google’s Highly Open Participation (GHOP).
Анжела пользуется популярностью как лектор по многим темам, особенно это относится к теме «Женщины в движении за открытые исходные тексты». На сайте Drupal.org Анжела известна под псевдонимом «webchick».
Эддисон Берри (Addison Berry) принимает участие во многих направлениях развития программного обеспечения Drupal и сообщества. Она вносит исправления в ядро Drupal, поддерживает несколько модулей и активно участвует в нескольких программах, таких как группа Drupal Dojo и программа GHOP.
В проекте Drupal Эддисон является руководителем команды документирования, помогает поддерживать сайт Drupal.org и является постоянным членом генеральной ассамблеи ассоциации Drupal. Она создала множество учебных печатных и видеоруководств, охватывающих все аспекты Drupal – от участия в жизни сообщества до создания программного кода. На сайте Drupal.org Эдди известна под псевдонимом «add1sun».
Натан Хог (Nathan Haug) – один из ведущих разработчиков пользовательского интерфейса в проекте Drupal. Интерес к дизайну интерфейса и разработке программного обеспечения привел его к получению степени бакалавра по специальностям «визуальные взаимодействия» и «информатика». Он внес существенные улучшения в пользовательский интерфейс версии Drupal 6, включая реализацию механизма буксировОб авторах ки (drag-and-drop) в Drupal и фреймворк для поддержки простых Ajaxподобных операций.
В проекте Drupal Натан считается ведущим разработчиком сценариев JavaScript. В 2007 году он возглавил группу разработки компании SonyBMG, занимавшейся созданием семейства веб-сайтов на платформе Drupal для всех музыкантов, сотрудничающих с SonyBMG. Большую часть своего времени он тратит на работу над популярными модулями, такими как Fivestar и Webform, или над улучшениями в ядре Drupal.
На сайте Drupal.org Нат известен под псевдонимом «quicksketch».
Джефф Итон (Jeff Eaton) более десяти лет занимается разработкой обычных и веб-приложений. Принимал участие в самых разных проектах, от веб-порталов для сообществ и некоммерческих организаций до клиент-серверных приложений для предприятий розничной торговли и масштабируемых веб-приложений для таких компаний, как Dow AgroSciences и Prudential Real Estate.
В 2005 году он начал заниматься разработкой решений на основе открытой платформы управления содержимым Drupal. За прошедшие с тех пор годы он стал в проекте Drupal одним из основных разработчиков, специализирующимся на разработке архитектуры и прикладного программного интерфейса. Занимая должность консультанта в компании Lullabot Consulting (LLC), он помогал проектировать и создавать программную инфраструктуру сайтов на основе Drupal, включая музыкальный портал MTV UK, платформу сайтов для музыкантов SonyBMG и сайт инновационной компании Fast Company. На сайте Drupal.org Джефф известен под псевдонимом «eaton».
Джеймс Уокер (James Walker) заведует отделом образования в компании Lullabot – курирует общественные симпозиумы и семинары, проводимые компанией, и частное обучение системе Drupal, соединяя в себе страсть к решению технических проблем и обучению. Будучи лидером сообщества Drupal, Джеймс является одним из основных членов некоммерческой ассоциации Drupal и группы безопасности Drupal. Как давний член сообщества Drupal Джеймс занимается поддержкой более чем десятка модулей и внес бесчисленное множество исправлений в ядро Будучи давним сторонником идеи открытых исходных текстов и открытых стандартов, Джеймс уже длительное время координирует деятельность проекта Drupal с деятельностью других сообществ, таких как Jabber/XMPP и появившийся совсем недавно OpenID. Как талантливого лектора Джеймса часто приглашают в качестве докладчика на самые разнообразные технические конференции. Его содержательные и наполненные юмором лекции являются самыми посещаемыми на конференциях DrupalCons, начиная с самой первой из них, которая проводилась четыре года тому назад. На сайте Drupal.org Джеймс известен под псевдонимом «walkah».
Об авторах Джефф Роббинс (Jeff Robbins) является сооснователем и президентом компании Lullabot. В 1993 году Джефф основал одну из самых первых компаний по разработке веб-приложений и разрабатывал сайты для Ринго Старра (Ringo Starr), MTV и Нью-Йоркского музея современного искусства. Кроме того, большую часть 1990-х годов Джефф занимался продвижением музыкального коллектива Orbit, участвовал в музыкальном фестивале Lollapalooza и сочинил рок-композицию, вошедшую в лучшую десятку.
Джефф отвечает за поддержку популярного подкаста Drupal компании Lullabot и снискал заслуженную известность в сообществе. Кроме того, он создал множество широко используемых модулей и тем оформления Drupal, включая модули ConTemplate, LoginToboggan, тему Zen и инструмент Theme Developer. На сайте Drupal.org Джефф известен под псевдонимом «jjeff».
Предисловие Модульная архитектура и открытость Drupal – прикладной платформы на языке PHP и системы управления содержимым – обеспечивают ей высокую популярность среди сотен и тысяч веб-разработчиков по всему миру. Более 900 человек способствовали выходу версии Drupal 6, поставляя программный код и идеи, еще больше разработчиков занимаются разработкой и сопровождением более 2000 модулей, которые могут использоваться для расширения функциональных возможностей этой системы.
Численность и активность сообщества пользователей и разработчиков Drupal в комбинации с ее мощью как платформы позволяют творить чудеса. Каждый день появляются новые и усовершенствуются существующие модули. Эти модули создаются, чтобы соответствовать последним тенденциям развития Интернета, и реализуют совершенно новые парадигмы – одним словом, проект Drupal продолжает развиваться в самых разных направлениях.
Ценность всего этого множества модулей заключается в том, что они позволяют разработчикам легко и быстро создавать эффективные и богатые возможностями веб-сайты, не становясь при этом программистами. Миллионы людей используют Drupal для создания личных блогов, корпоративных веб-сайтов, фотогалерей, справочных ресурсов, сайтов для размещения объявлений о поиске работы, веб-конференций и многих других.
К сожалению, основную сложность для многих администраторов сайтов и даже для опытных разработчиков системы Drupal представляет невозможность опробовать и понять назначение всего набора модулей и постоянно расширяющихся возможностей Drupal. Какие модули необходимы для построения новостного веб-сайта? Какие модули следует использовать для построения сайта в локальной сети? Какими модулями лучше не пользоваться, потому что имеются более удачные варианты? Какие модули можно использовать при создании действительно крупных веб-сайтов, обслуживающих миллионы запросов в день? Путешествие по миру Drupal может оказаться делом весьма нелегким.
Эта книга сэкономит время, необходимое на начальном этапе для вхождения в курс дела, и поможет сразу же погрузиться в удивительный мир Drupal. Она послужит вам прекрасным помощником, подсказываПредисловие ющим, как быстро создавать различные веб-сайты с использованием некоторых наиболее распространенных модулей Drupal. Независимо от того, являетесь ли вы опытным программистом или начинающим вебразработчиком, эта книга содержит массу полезной для вас информации. Я обещаю, что к концу чтения этой книги вы будете гораздо лучше подготовлены для постройки сайта вашей мечты. И все это благодаря Drupal.
Введение Для кого предназначена эта книга?
• Если вы ведущий разработчик и никогда раньше не слышали это странное слово «Drupal», но хотите понять, что оно означает, эта книга для вас.
• Если ваш босс сказал вам: «Нам необходимо создать быстродействующий сайт X!», где «X» – это фотогалерея, каталог товаров, сайт электронной коммерции или любой другой проект из числа тех, что рассматриваются в этой книге, эта книга для вас.
• Если вы уже имели дело с Drupal, но испытываете трудности при выборе из огромного многообразия модулей и нуждаетесь, чтобы кто-то подсказал, на какие из них стоит обратить внимание, тогда эта книга для вас.
• Если вы считаете себя знатоком системы Drupal, но стремитесь больше узнать о малоизвестных модулях и познакомиться с передовыми приемами создания мощных веб-сайтов на основе Drupal, эта книга для вас.
Если вы совершенно ничего не знаете о том, как создаются веб-сайты и устанавливаются сценарии веб-приложений, то эта книга, вероятно, не для вас. Мы предполагаем, что в ваш рабочий лексикон входят такие незамысловатые аббревиатуры, как PHP, FTP, URL, ZIP и HTML. Эта книга не для вас, если вы интересуетесь внутренним устройством ядра системы и особенностями работы функций прикладного программного интерфейса Drupal, поскольку основное внимание в этой книге уделяется не созданию новых модулей, а комбинированию существующих с целью построения функциональных веб-сайтов.
Если вы не относите себя ни к новичкам, ни к профессионалам, мы рассчитываем, что эта книга послужит ценным руководством по созданию работоспособных веб-сайтов на основе Drupal.
Исходные требования для работы с книгой Вам необходимо иметь доступ к компьютеру или серверу, где установлены и настроены PHP, веб-сервер (предпочтительнее Apache) и база данВведение ных (рекомендуется MySQL). Для разработки на локальном компьютере существует несколько пакетов программного обеспечения, включающих необходимые Apache/MySQL/PHP, такие как WAMP для Windows (http://www.wampserver.com) или MAMP для Mac (http://www.mamp.info).
В списке http://drupal.org/hosting приводится перечень компаний, предоставляющих услуги веб-хостинга и обеспечивающих поддержку Drupal, а на странице http://drupal.org/requirements подробно описываются требования системы Drupal.
Кроме того, вам потребуется установить систему Drupal, а в практических разделах глав предполагается, что вы используете исходный программный код, распространяемый вместе с книгой. В приложении A даются некоторые базовые инструкции, но если вам придется столкнуться с какими-либо проблемами или потребуются более подробные инструкции, загляните в руководство по установке Drupal 6 по адресу http://drupal.org/getting-started/install. Если вы не используете исходный программный код, поставляемый вместе с книгой, в приложении C вы найдете полный список всех модулей и тем, использовавшихся в каждой главе, что позволит создать код самостоятельно.
О модулях, использованных в книге Система Drupal находится в постоянном движении, а круг модулей, созданных ее пользователями, постоянно расширяется. В тексте книги упоминаются версии, которые имелись на момент ее написания, но время идет, и версии, доступные на сайте Drupal (http://drupal.org), наверняка изменятся. Одни изменения не настолько серьезны, чтобы оказать влияние на работу примеров, но другие могут оказаться более существенными.
Во многих главах практические разделы содержат примеры, которые будут сохранять свою работоспособность еще очень долгое время или изменения будут не настолько значительными, чтобы они потеряли свою актуальность. Даже если пользовательский интерфейс модуля изменится, после работы с этой книгой и знакомства с различными параметрами настройки вы сможете самостоятельно заняться исследованием модулей.
В дополнение к практическим рецептам вы познакомитесь с советами и приемами, рассказывающими о самой «кухне», то есть о том, как самостоятельно изучать модули.
Кроме того, разделы под заголовком «В центре внимания», где обсуждаются особенности модулей и проводятся сравнения с другими модулями, а также приложение B, где рассказывается, как оценить тот или иной модуль, призваны обеспечить прочный фундамент, на основе которого вы сможете самостоятельно оценивать модули. Вы сможете сравнивать новые модули по мере их появления и принимать наиболее оптимальные для пользы дела решения.
Эта книга послужит не только руководством, но и трамплином к обретению мастерства для вхождения в сообщество разработчиков проекта Drupal.
Содержимое книги За исключением начальных глав, подготавливающих почву для последующего обсуждения, эта книга организована как последовательность рецептов, каждый из которых имеет следующую структуру:
Введение Краткий обзор используемых модулей и общая цель главы.
В этом разделе описываются потребности вымышленного клиента, заказывающего разработку веб-сайта, который может быть сайтом wiki, фотогалереей или каталогом товаров. Здесь приводятся некоторые вводные сведения о таком клиенте и подробно рассматриваются его возможные конкретные требования.
Примечания к реализации Здесь обсуждаются различные решения на основе Drupal, удовлетворяющие требованиям клиентов, а также детально рассказывается, какие модули были выбраны и почему. В этом разделе мы будем сравнивать и противопоставлять модули и выяснять, в каком случае лучше использовать модуль A или почему применение модуля B непродуктивно.
В центре внимания В каждой главе представлены один-два основных модуля или концепции Drupal, а в разделах «В центре внимания» в общих чертах рассказывается о назначении каждого из них и о том, как они функционируют. Эти разделы являются своего рода «техническим паспортом», подчеркивающим особенности и возможности указанного модуля.
Практика После описания возможностей модуля в общих чертах в практическом разделе демонстрируется, как модуль настраивается, и предоставляется пошаговый «рецепт» точного воспроизведения функциональности, необходимой клиенту.
Дополнительно Существует масса полезных дополнительных модулей, которые могут применяться в каждом конкретном случае для достижения более широких возможностей. В этих разделах будут представлены ссылки на дополнительные модули, расширяющие функциональные возможности модулей, использованных в практических разделах.
Введение В заключение В этих разделах подводится итог тому, что было изучено в главе, а также даются ссылки на использовавшиеся модули и на другие ресурсы, где можно найти дополнительную информацию.
Ниже перечислены главы этой книги. Первые три главы содержат необходимые сведения для тех, кому не приходилось раньше использовать систему Drupal. Остальные главы предполагают знание основ Drupal, а также модулей Views и CCK. Если вам приходилось использовать Drupal 5, но нет опыта работы с Drupal 6, вам также может потребоваться прочитать эти главы (в частности, главу 3, так как в версии Drupal 6 модуль Views претерпел существенные изменения).
Глава 1. Обзор системы Drupal Эта глава отвечает на главные вопросы о системе Drupal, ответы на которые необходимо знать: что такое система Drupal, кто и почему ею пользуется и как она действует? Здесь также приводится краткое описание истории развития Drupal, вводится основная терминология и предоставляются остальные сведения, необходимые для быстрого освоения системы.
Глава 2. Запускаем Drupal Первая практическая глава, в которой описываются и демонстрируются основы использования базовой функциональности системы Drupal, а также некоторых сторонних модулей на примере создания простого веб-сайта. К концу этой главы вы должны достаточно комфортно чувствовать себя в административном разделе Drupal и знать, как добавлять простое информационное наполнение с помощью визуального интерфейса модулей FCKeditor и IMCE. Здесь также обсуждаются модули, которые помогут решить проблемы в случае неправильного обращения с сайтом, включая модуль Mollom.
Глава 3. Каталог вакансий В этой главе в процессе создания веб-сайта каталога вакансий будут представлены модули Content Construction Kit (CCK) и Views.
Вы узнаете, как создаются нестандартные типы информационного наполнения и добавляются поля форм и как обеспечить совместное использование списков, содержащих информационное наполнение любого типа, которые составляют основу всех последующих Глава 4. Обзоры продуктов В этой главе мы построим веб-сайт каталога продуктов с использованием модуля Amazon для представления данных о продуктах, а также модулей Voting API и Fivestar, реализующих графические элементы отображения рейтинга.
В этой главе рассматриваются несколько инструментов, которые могут использоваться для создания wiki в системе Drupal и для других целей. Подробно будут рассмотрены: система ревизий узлов (в паре с интересным модулем Diff), фильтр Markdown, упрощающий ввод разметки HTML, модуль Freelinking, позволяющий автоматически создавать и связывать ссылками страницы wiki, и модуль Pathauto, автоматически создающий адреса URL, удобные для поисковых систем.
Глава 6. Управление процессом публикации Обсуждается организация собственного процесса публикации с помощью системы Actions, объединенной с модулем Workflow, а также рассматриваются модули Views Bulk Operations и Workspace, используемые для создания собственных административных страниц.
Глава 7. Фотогалерея Эта глава поможет создать семейный фотоальбом с помощью модуля ImageField, а также расскажет о модуле ImageCache, используемом для автоматического создания миниатюр изображений заданного размера.
Глава 8. Многоязычные сайты В этой главе рассказывается, как создавать многоязычные сайты, используя комплект модулей Locale, Content Translation и Internationalization.
Глава 9. Управление событиями Эта глава посвящена вопросам управления событиями в системе Drupal. Демонстрируется использование модулей Date и Calendar для хранения и отображения информации о событиях и модуля Flag для сохранения информации о посетителях.
Глава 10. Интернет-магазин Демонстрируется применение мощного комплекта модулей Ubercart на примере создания интернет-магазина по продаже футболок с поддержкой каталога товаров, корзины с покупками и обработки платежей.
Глава 11. Оформление сайта В этой главе представлена обзорная информация о системе визуального оформления и некоторые основные приемы, которые можно использовать для изменения внешнего вида сайта Drupal. Прочитав эту главу, вы сможете приступить к изменению файлов шаблонов и придать своему сайту, созданному на основе Drupal, неповторимый внешний вид!
Введение Приложение A. Установка и обновление Drupal При отсутствии опыта работы с системой Drupal это приложение поможет установить систему и расскажет, как выполнять ее обновление в будущем.
Приложение B. Выбор модулей Оценка модулей часто становится камнем преткновения при создании сайтов на базе Drupal. В этом приложении разбираются стратегии и даются советы о том, как выбрать модули для создания сайта.
Приложение C. Модули и темы оформления, использованные в этой Перечисляются все модули и темы оформления, использовавшиеся в главах, которые позволяют самостоятельно создать код из практических разделов.
Типографские соглашения, используемые в книге В этой книге приняты следующие типографские соглашения:
Используется для выделения имен файлов, каталогов, новых терминов, адресов URL и важных фрагментов текста.
Моноширинный шрифт Применяется для фрагментов программного кода, содержимого файлов, команд и результатов работы команд.
Таким способом выделяются советы, предложения и примечания общего характера.
Таким способом выделяются предупреждения и предостережения.
Любые перемещения по страницам Drupal оформляются, как показано ниже:
AdministerSite buildingModules (admin/build/modules).
В этой строке сообщается, что следует щелкнуть на ссылке Administer в блоке навигации, затем на ссылке Site building и затем на ссылке Modules. Помимо этого можно ввести путь, указанный в круглых скобВведение ках, в строку ввода URL броузера: http://www.example.com/admin/build/ modules.
Использование программного кода примеров Данная книга призвана помочь в решении ваших задач. Вы можете свободно использовать примеры программного кода из этой книги в своих приложениях и в документации.
Весь программный код, включая код системы Drupal 6, доступ к которому можно получить на сайте издательства O’Reilly (как, будет описано чуть ниже), распространяется на условиях GNU General Public License версии 2. Вы можете использовать программный код Drupal, включая копирование, изменение и распространение, в соответствии с условиями этой лицензии. Кроме того, название «Drupal» является торговой маркой, зарегистрированной Дризом Байтаертом (Dries Buytaert), основателем проекта Drupal. Информацию о правах на использование программного кода и торговой марки можно найти на веб-сайте Drupal (http://drupal.org), где также можно узнать, какие ограничения накладывает лицензия GNU General Public License на использование программного кода. Дополнительную информацию о лицензии можно найти по адресу http://www.gnu.org/licenses/old-licenses/gpl-2.0.html#SEC3.
В отношении программного кода примеров из этой книги вам не нужно обращаться в издательство за разрешением, если вы не собираетесь воспроизводить существенные части программного кода, не являющегося составной частью Drupal. Например, если вы разрабатываете программу и используете в ней несколько отрывков программного кода из книги, вам не нужно обращаться за разрешением. Однако в случае продажи или распространения компакт-дисков с примерами из книг издательства O’Reilly вам необходимо получить разрешение от издательства.
Для цитирования данной книги или примеров из нее при ответе на вопросы не требуется получение разрешения. При включении существенных объемов программного кода примеров из этой книги в вашу документацию вам необходимо будет получить разрешение издательства.
Мы приветствуем, но не требуем добавлять ссылку на первоисточник при цитировании. Под ссылкой на первоисточник мы подразумеваем указание авторов, издательства и код ISBN книги. Например: «Using Drupal by Angela Byron, Heather Berry, Nathan Haug, Jeff Eaton, James Walker, and Jeff Robbins. Copyright 2009 Angela Byron, Heather Berry, Nathan Haug, Jeff Eaton, James Walker, and Jeff Robbins, 978-0-596За получением разрешения на использование значительных объемов программного кода примеров из этой книги обращайтесь по адресу [email protected].
Введение Загрузка Drupal На веб-сайте этой книги по адресу http://usingdrupal.com/source_code приводятся ссылки для загрузки копии Drupal 6, а также всех модулей, рассматриваемых в этой книге, и тем оформления, задействованных в примерах веб-сайтов в практических разделах глав. В каждом практическом разделе главы также имеется «профиль установки» (набор сценариев, выполняющих начальное определение параметров настройки по умолчанию), который воспроизводит начальный сайт. Эти профили установки могут задействоваться в начале процесса установки Drupal, например «Глава 4: каталог вакансий».
Для перехода от примеров из практического раздела одной главы к примерам из другой необходимо создать новый сайт, используя тот же исходный программный код. Сделать это можно с минимальными усилиями, выполнив следующие шаги:
1. Создать новую базу данных для установки Drupal для нужной главы или удалить и вновь создать существующую базу данных.
2. Скопировать файл sites/default/default.settings.php в файл sites/ default/settings.php, перезаписав существующий файл settings.php.
3. Изменить права доступа к файлу sites/default/settings.php, чтобы он стал доступен для записи.
4. Запустить сценарий установки http://www.example.com/install.php.
Дополнительная информация об установке Drupal приводится в приложении A.
Помимо настройки некоторых базовых параметров, таких как имя сайта, выбор темы оформления и других, профили установки в каждой главе (кроме главы 2) также настраивают следующие учетные записи:
имя пользователя: admin, пароль: oreilly Первый пользователь, которому дается роль «администратора сайта». Этот пользователь может выполнять на сайте любые действия.
имя пользователя: editor, пароль: oreilly Пользователь, которому дается роль «редактора»; используется в главах, где требуется наличие пользователей с повышенными правами имя пользователя: user, пароль: oreilly Обычный пользователь, которому дается роль «зарегистрировавшего пользователя».
Это и есть те типы пользователей, на которые инструкции ссылаются как на пользователя, зарегистрированного с правами «editor» или с иными. Если не указано иное, предполагается, что действия должны выполняться с правами пользователя «admin».
Safari® Books Online Если на обложке книги есть пиктограмма «Safari® Books Online», это означает, что книга доступна в Сети через Safari предлагает намного лучшее решение, чем электронные книги.
Это виртуальная библиотека, позволяющая без труда находить тысячи лучших технических книг, вырезать и вставлять примеры кода, загружать главы и находить быстрые ответы, когда требуется наиболее верная и свежая информация. Она свободно доступна по адресу http:// safari.oreilly.com.
Отзывы и предложения С вопросами и предложениями, касающимися этой книги, обращайтесь в издательство:
1005 Gravenstein Highway North Sebastopol, CA 800-998-9938 (в Соединенных Штатах Америки или в Канаде) 707-829-0515 (международный) 707-829-0104 (факс) Список опечаток, файлы с примерами и другую дополнительную информацию вы найдете на сайте книги:
http://www.oreilly.com/catalog/ Свои пожелания и вопросы технического характера отправляйте по [email protected] Дополнительную информацию о книгах, обсуждения, Центр ресурсов издательства O’Reilly вы найдете на сайте:
http://www.oreilly.com Благодарности Команда Lullabot выражает свою благодарность техническим редакторам книги, включая Роберта Дугласа (Robert Douglass), Аджая Галлвейла (Ajay Gallewale), Джеффри Макгуайра (Jeffrey MacGuire), Дэвида Мура (David Moore) и Мэтта Уэстгейта (Matt Westgate). Благодарим Татьяну Апанди (Tatiana Apandi) и Джулию Стил (Julie Steele) – сотрудников издательства O’Reilly, руководивших процессом создания нашей первой коллективной книги. Мы также благодарим наших коллег Лизу Киндред (Liza Kindred), Хейли Скарпино (Haley Scarpino) и Тима Мак Дормана (Tim McDorman), которые помогли нам скорректировать рабоВведение чий график так, чтобы мы могли закончить эту книгу. Спасибо Джеффу Итону (Jeff Eaton), предоставившему фотографии для главы, описывающей создание сайта фотогалереи. Также спасибо Кенту Байю (Kent Bye) из Lullabot за разработку визуализации в модуле Views и Джону Вандику (John VanDyk) за его бесценные советы по некоторым главам.
И особое спасибо Ивану Зугеку (Ivan Zugec), любезно предоставившему нам домен usingdrupal.com. И, конечно же, спасибо Дризу Байтаерту (Dries Buytaert) за изобретение и открытость Drupal – без него все это было бы невозможно.
Анжела Байрон (Angela Byron) в первую очередь выражает горячую благодарность своей спутнице Марси Маккей (Marci McKay), проявлявшей необычайное терпение и понимание по отношению к работе за полночь и чрезвычайно терпимо и даже благосклонно относящейся к навязчивой идее Анжелы, каковой является для нее система Drupal. Также огромное спасибо она говорит своей семье – матери Дженни и отцу Майку, сестрам Кейт и Саре – за их поддержку в процессе работы над книгой.
Джон Уайт (John Wait) и Дебра Уильямс-Каули (Debra Williams-Cauley) также заслуживают благодарности за их помощь воплотить мечту Анжелы написать книгу. Майкл Кокс (Michelle Cox) и Мэтью Харрисон (Matthew Harrison) помогли выполнить первую «чистку» рукописи книги. Моше Вейтцман (Moshe Weitzman), Брендон Бергрен (Brandon Bergren) и Дриз Байтаерт (Dries Buytaert) выполнили техническое редактирование некоторых ранних версий глав книги, при этом Дриз особенно вдумчиво отнесся к этому и во всем поддерживал Анджелу.
Эддисон Берри (Addison Berry) хотела бы выразить благодарность своему супругу Коллину Макграву (Colleen McGraw), который стоически относился к пропадающим выходным и отсутствию помощи по дому и вдохновлял ее во всех жизненных перипетиях. Ричард Барфорд (Richard Burford), Алекс Дергачев (Alex Dergachev), Джоэл Фаррис (Joel Farris), Джей Макдональд (Jay McDonald), Дон Палмер (Don Palmer), Хосе Рейеро (Jose Reyero) и Брайан Вуик (Brian Vuyk) любезно дали свои отзывы к ее главам, а Уим Лирс (Wim Leers) оказал существенную помощь в переводе на голландский язык. Все сообщество Drupal всемерно поддерживало ее в постижении Drupal и в создании этой книги. И то, и другое было бы невозможно без их помощи. Наконец, она говорит спасибо своим родителям Джоан и Мерлин Берри за поддержку всех ее замыслов и веру в нее.
Натан Хог (Nathan Haug) хотел бы поблагодарить своих замечательных родителей Джеймса и Аледу Хог, а также воодушевлявшего его деда Тома Анберга. Он благодарен техническим редакторам Дэвиду Муру (David Moore) и Брайану Вуику (Brian Vuyk), а также выражает особую признательность всем создателям платформы Drupal и дополнительных модулей. Нат благодарит Эрла Милза (Earl Miles) за помощь с модулем Views, Джонатана Чаффера (Jonathan Chaffer), Карен Стивенсон (Karen Stevenson) и Ив Чедмуа (Yves Chedemois) за помощь с модулем CCK. Платформа Drupal никогда бы не стала тем, что она представляет собой сейчас, без эффективного сотрудничества многих личностей.
Джефф Итон (Jeff Eaton) хотел бы поблагодарить свою супругу Кэтрин за величайшее долготерпение и поддержку. Романтический ужин не включает в себя тестирование модулей и вылавливание неполадок, и следует признать, что то, с каким юмором и пониманием отнеслась Кэтрин к вторжению высоких технологий в семейную жизнь, сыграло важную роль в доведении этого проекта до конца. Дуг Грин (Doug Green), Эрл Майлз (Earl Miles) и многие члены сообщества Drupal давали превосходные советы и указывали на сложности, которые легко могли бы сбить с толку новых пользователей. Джейсон Скотт (Jason Scott) и Джефф Бенсон (Jeff Benson) проявляли бесконечное сочувствие и поздней ночью, и ранним утром, а родители Джеффа, Дуг и Синди, не пожалели лучшей части двух десятков лет, чтобы оказать поддержку в его увлечениях.
Джеймс Уокер (James Walker) очень признателен своим детям Эндрю и Камрин за их любовь, терпение и прогулки в парке. Карен Стивенсон (Karen Stevenson), Райан Шрама (Ryan Szrama), Эрл Майлз (Earl Miles) и Нат Хог (Nate Haug) помогали ему с программным кодом, который оказался чрезвычайно полезным для раскрытия сути вопросов, поднимаемых в его главах. Он благодарен своей маме Линде, которая всегда верила в него и давала пристанище для Lullabot.
Джефф Роббинс (Jeff Robbins) благодарен своей супруге Дженнифер за ее любовь, поддержку и редакторское мастерство и сыну Арло за его умение все превращать в увлечение. Спасибо издательству O’Reilly Media, которое создавало ощущение большой и дружной семьи в 90-х годах, когда Джефф и Дженнифер там работали и где они познакомились.
Джефф хотел бы выразить свою благодарность Мэтту Уэстгейту (Matt Westgate), который стал его лучшим, насколько это только можно вообразить, деловым партнером и, кроме того, обеспечил атмосферу надежности, безмятежности и благополучия, в которой процветала компания Lullabot и ее сотрудники. Джефф также выражает свою благодарность и признательность Лайзе Киндред (Liza Kindred), которая обеспечивала работу компании, и остальным членам команды, у которых всегда находилось, чем поразить его, а также все сообщество пользователей Drupal – за щедрость и изумительный программный код, который мы и называем Drupal.
Эта книга покажет вам, как создаются самые разнообразные веб-сайты с использованием веб-платформы Drupal. Независимо от того, занимаетесь вы продвижением своей рок-группы или создаете сайт в локальной сети компании, некоторые решаемые задачи окажутся общими для всех случаев. Одно из базовых понятий – информационное наполнение, или содержимое, которым обладает любой сайт; это могут быть аудиоматериалы, текст, анимированные изображения в формате GIF, и вебсайт представляет это содержимое окружающему миру. Кроме того, необходимо реализовать управление этим информационным наполнением. Обладая достаточными знаниями основных веб-технологий, вы можете создать такую систему самостоятельно, однако система Drupal существенно облегчит создание веб-сайта, а также расширение его возможностей и повседневное добавление, редактирование и удаление содержимого. Наконец, у вашего сайта будут посетители, а в этой книге представлены разнообразные способы, основанные на использовании Drupal, применяя которые вы сможете привлекать пользователей и взаимодействовать с ними.
Эта глава начинается с основных сведений о системе Drupal: что это такое, кто ею пользуется, почему разработчики выбирают именно эту систему. Затем приводится обзор, который начинается с объяснения того, что понимается под неоднозначным термином «управление содержимым» и как с применением этой концепции создаются веб-сайты.
А в заключение будут даны определения и описания основных концепций Drupal, знание которых необходимо для понимания принципов обработки содержимого в системе Drupal.
Что такое Drupal?
Drupal – это открытая система управления содержимым (Content Management System, CMS), которая используется сотнями тысяч органиГлава 1. Обзор системы Drupal заций и отдельных людей для создания привлекательных веб-сайтов с богатым информационным наполнением.1 Создание веб-сайта на основе Drupal заключается в комбинировании различных «строительных блоков», о которых будет говориться ниже в этой главе и которые позволяют точно настроить функциональность конкретного веб-сайта. Будучи один раз создан, веб-сайт на платформе Drupal позволяет обеспечить управление посредством форм без необходимости что-то перепрограммировать вручную. Система Drupal распространяется бесплатно; она обладает огромной библиотекой постоянно развивающихся инструментов, которые могут использоваться для улучшения веб-сайта.
Drupal также является платформой управления содержимым (Content Management Framework, CMF). В дополнение к инструментам построения веб-сайтов для веб-мастеров она предоставляет программистам и разработчикам возможность настраивать сайты с помощью дополнительных модулей расширения, которые позволяют регулировать поведение практически всех элементов Drupal. В мире существуют тысячи модулей, реализующих функциональные возможности, от фотогалерей до корзин с покупками и переводчиков на «пиратский язык». Большинство модулей было передано сообществу Drupal, они доступны для загрузки и могут использоваться в вашем сайте, построенном на базе Drupal. Все функциональные возможности, рассматриваемые в этой книге, реализованы за счет объединения «ядра» Drupal и модулей, созданных сообществом.
Особого упоминания заслуживает сообщество Drupal; человеческий фактор в системе Drupal обоснованно считается одним из самых важных и ценных ее активов. На момент выхода версии Drupal 6 в феврале 2008 года в разработке основных программных компонентов принимали участие более 700 членов сообщества. В сопровождении модулей было задействовано более 2000 разработчиков, еще больше было занято в тестировании, документировании, поддержке пользователей, переводах и других важных областях проекта. Те, кто понимает значимость открытых платформ, подтвердят важность наличия активно живущего сообщества.
Кто пользуется Drupal?
На протяжении последних лет популярность Drupal росла взрывообразно, что не могли не заметить некоторые крупные компании. Многие медиакомпании, такие как MTV UK, Lifetime и Sony BMG Records, используют Drupal как основу для создания сообществ вокруг своих продуктов. Такие издательства, как New York Observer и The Onion, Дополнительную информацию о движении за распространение программного обеспечения с открытыми исходными текстами можно найти на сайте http://opensource.org, который по случайности также построен на основе Что такое Drupal?
журналы Popular Science и Fast Company используют Drupal для предоставления своим читателям интерактивного информационного наполнения. Организации Amnesty International, Организация Объединенных Наций и Electronic Frontier Foundation используют Drupal для координации своих действий, направленных на решение важных проблем. Открытые проекты Ubuntu Linux, Eclipse, Firefox и jQuery используют Drupal для организации своих сообществ разработчиков. Такие блогеры, как Тим Бернерс-Ли (Tim Berners-Lee), Хизер Б. Армстронг (Heather B. Armstrong) (известный также как Dooce), сообщество BlogHer и Мерлин Манн (Merlin Mann) используют Drupal как платформу для своих публикаций. На рис. 1.1 показаны некоторые из широко известных веб-сайтов, построенных на базе Drupal.
Все эти сайты объединяет потребность в мощных средствах публикации и высокая коммуникативность.
Рис. 1.1. Главные страницы наиболее известных веб-сайтов, построенных на базе Drupal В Интернете существует несколько мест, где можно получить дополнительную информацию о том, кто на сегодняшний день использует Drupal. Дриз Байтаерт (Dries Buytaert), основатель проекта Drupal, веГлава 1. Обзор системы Drupal дет список наиболее известных веб-сайтов, построенных на базе Drupal, в своем блоге http://buytaert.net/tag/drupal-sites. На веб-сайте проекта Drupal имеется раздел, содержащий подробные исследования различных ситуаций и истории успеха (http://drupal.org/cases). Кроме того, по адресу http://www.drupalsites.net находится каталог, содержащий тысячи веб-сайтов на платформе Drupal, найденных в Интернете, – от маленьких персональных веб-сайтов до крупных сайтов социальных сетей с миллионами активных пользователей.
Возможности, которые поддерживает Drupal Система Drupal предоставляет весьма широкий круг возможностей, которые более подробно обсуждаются в главе 2. В их число входят:
Гибкая модульная система Модули и расширения, способные изменять существующие и добавлять новые возможности в сайты на базе Drupal. Практически для любой функциональности имеется либо точно реализующий ее модуль, либо она может быть реализована путем объединения нескольких модулей, либо существует некоторый программный код, который способен послужить основой реализации.
Настраиваемая система визуального оформления Вывод любой информации в Drupal может настраиваться в широких пределах, благодаря чему вы можете привести внешний вид своего сайта в соответствие со своими желаниями (или, точнее, в соответствие с желаниями дизайнера).
Расширенные возможности создания информационного наполнения Вы можете определять новые типы информационного наполнения (блог, событие, фраза дня) на лету. Дополнительные модули дают возможность шагнуть в этом направлении еще дальше и позволяют администраторам создавать собственные поля внутри вновь созданных типов содержимого.
Встроенная оптимизация под поисковые системы Система Drupal предлагает «коробочную» поддержку системы удобочитаемых адресов URL, а вся выходная информация Drupal соответствует стандартам. Обе эти особенности обеспечивают дружественность веб-сайтов по отношению к поисковым системам.
Система прав доступа на основе ролей Собственные роли и изобилие различных разрешений дают возможность организовать высокую избирательность прав доступа к компонентам системы. А существующие модули способны повысить эту избирательность еще больше, вплоть до уровня каждого отдельного Краткая история систем управления содержимым Средства общения и совместной работы Система Drupal имеет такие встроенные инструменты, как блоги, поддержка возможности оставлять комментарии, форумы и настраиваемые профили пользователей. Чтобы добавить практически любую возможность, какую только можно себе представить, например систему рейтингов, группировку пользователей или инструменты модерирования, достаточно лишь загрузить соответствующий модуль.
Краткая история систем управления содержимым Прежде чем перейти к более близкому знакомству с системой Drupal, совершим небольшой экскурс в прошлое, в дни, предшествовавшие появлению систем управления содержимым. Чтобы понять, как действуют Drupal и другие CMS, упрощающие нашу работу, мы посмотрим, как была организована работа сайтов во времена молодости Интернета.
Исторический экскурс в процесс создания веб-сайта В туманном прошлом (в 1990-х годах, для тех, кто помнит цеппелины и автомобили Форд-T) веб-страницы были ни чем иным, как простыми текстовыми файлами, сложенными в папки на сервере где-то в недрах Интернета. Эти файлы, с такими именами, как index.html, news.html, about_us.html и так далее, были доступны любому для просмотра с помощью веб-броузера. Используя язык разметки HTML, эти файлы могли ссылаться друг на друга, включать информацию в виде изображений и в других форматах и вообще представлять себя. Веб-сайты тех дней, как джинсы в обтяжку, представляли собой всего лишь набор таких файлов в определенном каталоге, как показано на рис. 1.2.
Такая система прекрасно зарекомендовала себя, и она не была лишена смысла. Каждому адресу URL в Интернете, который мог посетить пользователь, соответствовал уникальный файл.html, находящийся на вебсервере. Если возникала необходимость организовать их в виде разделов, просто создавался новый каталог и соответствующие файлы перемещались в этот каталог, например адрес http://www.example.com/news/ мог быть адресом раздела «Новости» на сайте, а информационный бюллетень за 1997 год мог находиться по адресу http://www.example.com/ news/fall_1997_ products.html. Когда веб-мастеру (или другому специалисту) требовалось исправить какую-либо проблему, он мог просто просмотреть страницу с помощью своего веб-броузера, а затем открыть соответствующий файл на веб-сервере и исправить его.
К сожалению, по мере увеличения веб-сайтов в размерах стало очевидно, что такой подход плохо поддается масштабированию. Примерно чеГлава 1. Обзор системы Drupal Рис. 1.2. Традиционная структура веб-сайта 90-х годов рез год добавления новых страниц и перетасовки их по каталогам многие сайты могли насчитывать десятки, сотни, а иногда даже тысячи страниц. И это, друзья мои, приводило к появлению серьезных проблем:
Любое изменение дизайна сайта требовало выполнения огромного объема работ.
Форматирование информации, ее размещение и другие дизайнерские творческие решения воплощались в каждой отдельной странице. Каскадные таблицы стилей (Cascading Style Sheets, CSS) еще не взяли Интернет штурмом, поэтому такие простые задачи, как изменение шрифта, используемого сайтом по умолчанию, требовали (что совершенно очевидно) внести изменения в каждый отдельно Структура сайта приводила к множественному дублированию содержимого.
Большинство проектов веб-сайтов предусматривало наличие на страницах стандартного нижнего колонтитула с упоминанием авторских прав и контактной информации, изображения в заголовке или навигационного меню некоторого вида и так далее. Если что-то изменялось, приходилось вносить изменения во все файлы. Если какому-то веб-мастеру очень повезло и все, кто работал до него, очень добросовестно относились к своему делу, то изменения можно было реализовать с помощью сценария. Но большинству не повезло, и они по сей Краткая история систем управления содержимым день с ужасом вспоминают сайты, построенные с помощью FrontPage, PageMill, Dreamweaver или Notepad.
Было невозможно обеспечить единообразие и своевременное обновление Большинство сложных веб-сайтов было организовано в виде каталогов и подкаталогов, что обеспечивало разумную структуру. Добавление новой статьи в каталог news подразумевало необходимость изменить страницу «краткий обзор новостей», где перечислены все статьи, и, возможно, дополнить краткой ссылкой на главной странице веб-сайта, и (ужас!) не забыть переместить ссылку вниз, когда новость перестанет быть «свежей». Крупный сайт с множеством разделов и с большим объемом содержимого одними такими обновлениями мог обеспечить полную занятость веб-мастера.
Эпоха сценариев и баз данных Поиск решения этих проблем привел к первой настоящей революции в веб-дизайне: использованию сценариев и программ CGI (Common Gateway Interface – общий интерфейс шлюза). Первый шаг заключался в использовании специальных тегов с именем «вставка на стороне сервера»
(Server-Side Includes, SSI) в каждом файле HTML. Эти теги позволили веб-дизайнерам вставлять содержимое одного файла (например, стандартную информацию об авторских правах или список последних новостей) в текущую страницу на стороне сервера, как если бы оно было частью самого файла HTML. Это существенно упростило обновление фрагментов информации, так как теперь они хранились в одном месте.
Второй шаг заключался в использовании простых баз данных для хранения однотипных фрагментов содержимого. Все новости на сайте CNN.
com (http://www.cnn.com) имеют похожую структуру, даже если их содержимое отличается. То же справедливо для всех страниц с описаниями продуктов на сайте Apple.com (http://www.apple.com), для всех записей на сайте Blogger.com (http://www.blogger.com) и так далее. Вместо того чтобы хранить каждый фрагмент в отдельном файле HTML, вебмастера стали использовать программы, работающие на стороне вебсервера, которые отыскивали содержимое каждой статьи в базе данных и отображали его, обертывая разметкой HTML, соответствующей макету сайта. Такие адреса URL, как http://www.example.com/news/1997/ big_sale.html, заменились адресами типа http://www.example.com/news.
cgi?id=10. Теперь вместо того чтобы отыскивать в каталоге news и в подкаталоге 1997 и возвращать файл big_sale.html, веб-сервер должен был запустить программу news.cgi, позволить ей извлечь из базы данных статью с номером 10 и вернуть броузеру пользователя текст, который выведет запущенная программа.
Все эти отличия требовали изменения подходов к созданию веб-сайтов.
Но преимущества были более чем очевидны: десятки и даже сотни файГлава 1. Обзор системы Drupal лов можно было заменить одним или более сценариями, управляемыми базой данных, как показано на рис. 1.3.
about.shtml contact.pl news.cgi Рис. 1.3. Переход от отдельных файлов к использованию сценариев, управляемых базами данных Но даже с этими улучшениями оставались нерешенными серьезные проблемы:
Где следует вносить изменения?
Крупные сайты с множеством разнообразных типов информационного наполнения (информация о продуктах, биографии служащих, пресс-релизы, файлы для загрузки и так далее) все еще состояли из разнообразных сценариев, отдельных баз данных и других элементов, которыми требовалось управлять. Веб-мастеру, выполняющему обновление, необходимо было определить, следует ли изменять файл HTML, запись в базе данных или программный код сценария.
Слишком большое число маленьких фрагментов, собранных вместе Динамическое содержимое, такое как форумы или гостевые книги, с которым посетители могли взаимодействовать, потребовало организации собственной инфраструктуры, причем нередко каждая из этих систем проектировалась отдельно. Объединение их в общий веб-сайт было далеко не самой простой задачей.
Революция в управлении содержимым Постепенно появились программы, предназначенные для управления этими различными видами содержимого, и возможность использовать единообразный пользовательский интерфейс. Прежние поколения проКраткая история систем управления содержимым граммного обеспечения концентрировались на выполнении определенной задачи, тогда как новейшие реализации CMS представляют собой унифицированные инструменты для создания, редактирования и организации информационного наполнения веб-сайта. Кроме того, большинство систем предоставляют разработчикам механизмы создания расширений и реализации новых функциональных возможностей, не заставляя их при этом заново изобретать колесо. На рис. 1.4 показано, как система управления содержимым, использующая единственную базу данных и сценарий, совмещает все эти возможности.
Рис. 1.4. Структура интегрированного веб-сайта, управляемого Drupal – это одна из таких систем управления содержимым следующего поколения. Она позволяет создавать и организовывать содержимое самых разных видов, предоставляя инструменты управления содержимым как для эксплуатационного персонала, так и для посетителей сайта, и открывает доступ к тысячам сторонних расширений, добавляющих новые возможности. Дриз Байтаерт (Dries Buytaert), основатель проекта Drupal, сказал в своей речи на саммите Open Source CMS Summit в 2007 году, что главная цель системы Drupal в том, чтобы «убрать веб-мастера». Если вы являетесь веб-мастером, эти слова могут показаться угрожающими, но стоит немного поразмыслить, и они приобретут совершенно иной, захватывающий дух смысл. При использовании системы Drupal исчезает трудоемкая необходимость в организации и обновлении тысяч страниц: вы можете сосредоточиться на реализации особенностей, необходимых вашему сайту и учитывающих желания ваших пользователей.
Как работает Drupal С концептуальной точки зрения стек Drupal выглядит, как показано на рис. 1.5. Drupal – это своего рода промежуточный уровень между внутренней реализацией (обеспечивающей работу Интернета) и интерфейсом (который видят посетители в окне веб-броузера).
На нижних уровнях находятся операционная система, веб-сервер, база данных и PHP. Операционная система обеспечивает работоспособность веб-сайта: здесь решаются такие низкоуровневые задачи, как обработка сетевых подключений, файлов и разграничение прав доступа к файлам. Веб-сервер обеспечивает доступность вашего компьютера в Интернете и служит для предоставления требуемой информации, когда посетитель выполняет переход по адресу http://www.example.com. База данных хранит данные: все содержимое веб-сайта, учетные записи пользователей и параметры настройки – в одном месте. А PHP – это язык программирования, который динамически генерирует страницы и перемещает информацию от базы данных к веб-серверу.
Сама система Drupal также состоит из множества слоев. На самом нижнем уровне она реализует дополнительные возможности поверх PHP, добавляя некоторые подсистемы, такие как обработка сеансов пользователей и механизм аутентификации, фильтр подсистемы безопасности и подсистема шаблонов отображения. Над этим слоем находится уровень дополнительных функциональных возможностей, называемых модулями, которые будут обсуждаться в следующем разделе этой главы. Модули расширяют возможности Drupal и могут воспроизводить содержимое любой страницы. Но, прежде чем страница появится перед пользователем, она пройдет через систему тем оформления, которая позволяет модифицировать оформление страниц и способна удовлетворить запросы самых взыскательных дизайнеров. Подробнее о системе тем оформления рассказывается в главе 11.
Система тем выводит содержимое страницы, обычно в формате XHTML, хотя поддерживаются и другие форматы. Для управления расположением элементов, цветом и шрифтами для заданной страницы используются каскадные таблицы стилей, а работоспособность динамических элементов интерфейса, таких как сворачиваемые наборы полей в формах и буксируемые строки таблиц в административном интерфейсе Drupal, обеспечивается с помощью JavaScript.
Мы рассказали вам о «старом» способе создания веб-сайтов с использованием статических файлов HTML, о переходе к использованию коллекций сценариев и о «новом» способе: создании полнофункциональных веб-приложений, которые управляют целыми веб-сайтами. Этот третий способ, реализованный системой Drupal, требует использовать новую концепцию строительных блоков. Они будут использоваться любым веб-сайтом, построенным на основе системы Drupal!
Как работает Drupal Рис. 1.5. Расположение концептуальных уровней системы Drupal относительно других уровней веб-сайта Модули Практически все в системе Drupal вращается вокруг понятия модуля, который является файлом с программным кодом на языке PHP, реализующим функциональные возможности, с которыми система Drupal умеет работать. Все функциональные возможности Drupal, доступные администратору или конечному пользователю, от фундаментальных особенностей, таких как возможность выполнять вход в систему, доГлава 1. Обзор системы Drupal бавлять новое содержимое в динамические фотогалереи и сложные системы голосования, – все они реализованы в виде модулей. Примерами модулей могут служить: модуль Contact, который реализует форму с контактной информацией, и модуль User, который реализует процедуру аутентификации пользователя и проверку прав доступа. В других системах управления содержимым модули также называются дополнениями или расширениями.
Существует два типа модулей: «базовые» модули, которые включены непосредственно в состав системы Drupal, и «сторонние» модули, которые создаются сообществом Drupal и могут загружаться и устанавливаться по отдельности. Кроме нескольких обязательных базовых модулей все остальные модули могут подключаться и отключаться, в зависимости от потребностей веб-сайта.
Несмотря на то, что существуют модули c функциональностью «под ключ», тем не менее разработчики из сообщества Drupal обычно отдают предпочтение разработке модулей, которые выполняют единственную функцию, но делают это хорошо и при этом допускают возможность комбинирования с другими модулями. Это означает, что у вас имеется практически неограниченный контроль над внешним видом и поведением вашего веб-сайта. Возможности вашей галереи изображений не ограничены представлениями разработчика о том, как она должна выглядеть и как действовать. Вы можете добавить систему рейтингов или возможность оставлять комментарии, при желании – сортировать изображения по типу фотокамеры, а не по дате. Однако для достижения этой гибкости вам придется «построить» функциональность в системе Drupal, объединив несколько различных модулей и выполнив настройку их параметров, а не просто щелкнуть на флажке «галерея изображений» и оставить его отмеченным. Мощь системы Drupal порождает сложность ее изучения, с которой вы не столкнетесь в других пакетах CMS, а изобилие доступных модулей может отпугнуть при попытке определить, чем же стоит воспользоваться в конкретном случае. В приложении B приводятся советы и рекомендации, которые помогут оценить качество модуля и его необходимость для вашего проекта.
Пользователи Следующий строительный блок веб-сайта на базе системы Drupal – это понятие пользователя. В случае простого веб-сайта брошюрного типа, который будет сопровождаться единственным администратором и посещаться только потенциальными клиентами, можно создать единственную учетную запись пользователя – для самого администратора.
При создании сайтов, подразумевающих общение членов сообщества, вам придется настроить систему Drupal, чтобы позволить всем желающим пользоваться сайтом регистрироваться на нем и создавать свои учетные записи.
Как работает Drupal Первый пользователь, который создается при построении нового сайта на базе Drupal, пользователь № 1, – это специальный пользователь. Подобно пользователю root на сервере UNIX, пользователь № 1 обладает правом выполнять любые действия на сайте Drupal. Поскольку для этого пользователя не выполняются обычные проверки безопасности, он легко может по неосторожности уничтожить информационное наполнение или как-то иначе нарушить работу сайта, если позволить использовать эту учетную запись в повседневной работе. Поэтому лучше использовать эту учетную запись для выполнения специальных административных задач и настройки, а для работы с содержимым создать дополнительную учетную запись.
Каждому добавляемому пользователю может быть присвоена настраиваемая роль, такая как «редактор», «платный клиент» или «важная персона». Каждой роли могут быть присвоены права на выполнение различных действий на веб-сайте: посещение определенных страниц, просмотр содержимого определенного вида, разрешение оставлять комментарии к существующему содержимому, заполнять профиль пользователя и даже создавать новые учетные записи и управлять их правами доступа. По умолчанию в системе Drupal имеются две предопределенные роли: зарегистрированный пользователь и анонимный пользователь. Любой создаваемой учетной записи на сайте автоматически присваивается роль «зарегистрированный пользователь», а любому посетителю, для которого еще не создана учетная запись (или который еще не прошел процедуру аутентификации со своим именем пользователя и паролем), присваивается роль «анонимный пользователь».
Содержимое (узлы) Узлы – это следующий строительный блок в системе Drupal, причем один из самых важных. Одна из важнейших составляющих проектирования любого сайта на базе Drupal заключается в выяснении, с какими конкретными видами содержимого (которые в Drupal называются «типами содержимого») вам предстоит работать. Практически в каждом конкретном случае будут присутствовать узлы различных видов.
Все узлы независимо от типов содержимого, хранящегося в них, обладают несколькими общими базовыми свойствами:
• Автор (пользователь сайта, создавший содержимое) • Тело содержимого Вам требуется создать страницу с конфиденциальными сведениями о вашей компании? Это узел. Вам требуется дать пользователям возможность оставлять сообщения в блоге? Каждое такое сообщение – это узел. Пользователи будут оставлять ссылки на интересные материалы, размещенные где-то в Интернете? Каждая такая ссылка, как и следовало ожидать, будет храниться как узел.
В дополнение к общим базовым свойствам все узлы могут обладать определенными особенностями, встроенными в систему Drupal, такими как флаги, указывающие, будут ли публиковаться данные узлы, и настройки, управляющие способом отображения узлов каждого типа.
Права на создание и редактирование содержимого узлов каждого типа также могут быть присвоены различным пользовательским ролям, например пользователи с ролью «blogger» могли бы создавать содержимое с типом «Blog entry» (Сообщение в блоге), но только пользователи с ролями «administrator» (администратор) или «editor» (редактор) могли бы создавать узлы с типом «News» (Новости).
Узлы могут также хранить информацию о ревизиях, описывающих каждое изменение, внесенное с момента создания узла.
Если вы допустили ошибку (например, удалив важный параграф на странице «About Us» (о компании)), это позволит легко восстановить предыдущую версию узла.
В состав системы Drupal входят два предопределенных типа узлов:
«Page» (Страница) и «Story» (Статья). Они не играют какую-то специальную роль – они просто предлагают стандартный набор особенностей для всех узлов и ничего больше. Единственное отличие между этими двумя типами узлов заключается в параметрах настройки по умолчанию. Узлы «Page» не отображают информации об авторе или дате создания. Они отлично подходят для размещения такого содержимого, как «About Us» (О компании) и «Terms of Service» (Условия обслуживания), у которого не может быть определенного автора. Узлы типа Story отображают эту информацию, а кроме того, настроены так, чтобы появляться на главной странице сайта в случае их публикации. Результатом является блог-подобный список последних статей на сайте.
Посредством административных инструментов Drupal управления содержимым можно создавать другие «простые» типы узлов. Многие администраторы создают типы «news» (новости) или «announcement»
(объявление) – для публикации официальных объявлений, тогда как другие пользователи могут публиковать узлы, содержащие статьи. Однако как быть, если вам потребуется хранить больше информации об узле, чем его заголовок и тело? Дополнительные модули могут привносить в систему содержимого Drupal новые виды узлов, обладающих более широкими возможностями. Одним из таких модулей (поставляемым в составе Drupal) является модуль «Poll». Когда пользователь создает новый узел типа «Poll», вместо обычного «тела содержимого» он создает список вопросов для голосования. Узлы типа «Poll» при отображении выглядят как форма для голосования и автоматически отображают число голосов по каждому пункту.
Как работает Drupal Рис. 1.6. Все узлы в системе обладают набором общих базовых свойств;
узлы могут определять дополнительные поля, а модули могут придавать узлам дополнительные функциональные возможности Кроме того, другие модули могут реализовывать новые свойства узлов, такие как комментарии, рейтинги, поля выгрузки файлов и другие. Из панели управления вы можете определить, узлы каких типов будут обладать этими особенностями. Эта концепция иллюстрируется на рис. 1.6.
Возможность добавления новых свойств с помощью новых модулей поверх существующей системы узлов означает, что все виды содержимого в системе Drupal относятся к одной базовой платформе, которая является одной из самых сильных сторон Drupal. Такие возможности, как поиск, рейтинг и комментарии, являются готовыми к использованию компонентами в любых новых типах узлов, которые вы только сможете определить, потому что за кулисами система Drupal всегда знает, как обращаться с базовыми элементами этих компонентов – узлами.
Использование дополнительных модулей для добавления новых типов узлов или для добавления новых полей к существующим типам является распространенной задачей в Drupal. Продвигаясь по книге, мы рассмотрим некоторые из имеющихся сотен дополнительных модулей, и вы узнаете, как создавать сложные типы содержимого, используя базовые инструменты.
Способы организации содержимого Еще одним важным строительным блоком является весь комплекс инструментов и приемов организации узлов, составляющих информациГлава 1. Обзор системы Drupal онное наполнение сайта. Веб-сайты первого поколения группировали страницы с помощью папок и каталогов. Сайты второго поколения для отображения содержимого различных типов использовали отдельные сценарии. В свою очередь, система Drupal практически все содержимое представляет как набор узлов. Как можно разбить сайт на отдельные разделы по темам, на блоги конкретных пользователей или реализовать некоторую иную организационную схему?
Во-первых, каждый отдельный узел на сайте получает свой собственный адрес URL. По умолчанию этот адрес URL выглядит примерно так: http://www.example.com/node/1. Эти адреса URL можно преобразовать в более дружественный для пользователя вид, например: http:// www.example.com/about, с помощью модуля Path, встроенного в систему Drupal. В организационных целях все эти узлы интерпретируются как единый «пул» содержимого. Любые другие страницы на сайте – тематические обзоры, последние новости и другие – создаются посредством извлечения списков узлов, соответствующих определенным критериям, и отображаются различными способами. Ниже приводится несколько примеров:
Главная страница По умолчанию главная страница сайта, построенного на базе Drupal, представляет собой обзор 10 самых последних статей. Для его создания Drupal отыскивает в пуле содержимого узлы с флагами «Published» (Опубликовано) и «Promote to front page» (Представить на главной странице), установленными в значение true. Кроме того, этот список сортируется так, чтобы узлы с флагом «Sticky» (Закреплен) всегда находились на самом верху; эта возможность особенно удобна для публикации горячих новостей или важных объявлений, которые должны быть видны каждому пользователю.
Модуль Taxonomy Выше упоминалось, что модули могут добавлять к узлам новые элементы информации; именно это и делает модуль Taxonomy. Он позволяет администратору сайта определять категории тем, с которыми могут быть связаны узлы при их создании, а также ключевые слова для облака тегов в стиле блогов. Этот модуль можно использовать для создания предопределенного набора «Regions» (Регионы), представленного в виде поля в новостях или поля «Tags» (Теги) для блогеров, которое они будут заполнять вручную при отправке сообщений. Все это в терминах модуля Taxonomy называется «рубриками» и позволяет отнести страницу к той или иной рубрике на сайте. Когда посетитель просматривает одну из таких страниц, система Drupal извлекает список всех узлов, отнесенных к этой рубрике.
Как работает Drupal Модуль Blog, встроенный в систему Drupal, реализует многопользовательскую систему блогов, делая всего три вещи. Во-первых, он добавляет новый тип узлов, который называется «Blog post» (Сообщение в блоге). Во-вторых, с адресом http://www.example.com/blog он ассоциирует страницу со списком, в котором отображаются узлы типа «Blog» (Блог), для которых флаг «Published» (Опубликовано) установлен в значение true. (Если сообщение в блоге имеет флаг «Published to front page» (Публиковать на главной странице) со значением true, оно будет также отображаться на главной странице; система Drupal никогда не скрывает содержимое одной страницы только потому, что оно отображается на другой.) В-третьих, для каждого пользователя сайта он предоставляет отдельную страницу, где отображаются сообщения блога, принадлежащие только этому пользователю. Например, на странице http://www.example.com/blog/1 будут отображаться все узлы с записями в блоге, которые были созданы и опубликованы пользователем 1, то есть администратором.
В составе системы Drupal поставляется ряд других модулей, которые обеспечивают возможность организации узлов различными способами, а кроме того, существуют сотни дополнительных, доступных для загрузки, модулей, позволяющие организовать сайт разными способами.
Важно запомнить, что практически все «страницы» в Drupal представляют собой одну из двух вещей: определенный узел содержимого или список узлов, обладающих определенным общим набором свойств.
Типы содержимого поддержки Помимо содержимого и списков содержимого существуют также различные способы дополнения содержимого страницы. Двумя такими способами поддержки содержимого, включенными в ядро Drupal, являются комментарии и блоки.
Комментарии – это обычные отклики пользователей на некоторые фрагменты содержимого, они существуют только в привязке к этому содержимому. Пользователи могут отправлять комментарии, чтобы представить свои мысли относительно темы узла, как это часто делается, когда в сообщении блога или на форуме поднимается спорная тема. Подобно узлам, хотя и в меньшей степени, комментарии могут с помощью сторонних модулей расширяться дополнительными свойствами, такими как рейтинги или выгружаемые файлы.
Комментарии имеют большое число параметров настройки: комментарии могут отображаться в виде древовидной структуры или в виде плоского списка; комментарии могут сортироваться по дате и времени создания как в прямом, так и в обратном порядке; анонимным пользоваГлава 1. Обзор системы Drupal телям может быть предоставлена возможность оставлять комментарии, причем в последнем случае можно сделать предоставление контактной информации обязательным.
Блоки – это виджеты, которые присутствуют в таких областях страницы, как боковые меню, нижние колонтитулы и заголовки. Обычно они используются для отображения полезных ссылок или динамических списков, таких как «Most popular content» (Наиболее читаемые статьи), «Latest comments» (Последние комментарии), и похожих элементов. Блок пользователей управляет доступностью информации для посетителей вашего сайта; узлы отвечают за отображение содержимого;
а блоки помогают встроить отдельный элемент содержимого в контекст структуры вашего сайта.
В большинстве случаев блоки отображают различное содержимое для разных зарегистрировавшихся пользователей: например, блок «Comments by your buddies» (Комментарии ваших друзей) будет отображать список сообщений, оставленных теми пользователями, которых текущий пользователь добавил в список своих друзей. Обычно все пользователи, выполнившие вход, видят различные списки. Кроме того, блоки можно настроить так, что они будут появляться только на определенных страницах или, наоборот, будут скрыты только на определенных страницах.
Получение справки Легко полагаться на ту функциональность, которую можно получить бесплатно, используя открытое программное обеспечение. Но не стоит забывать, что само сообщество пользователей Drupal может стать важным строительным блоком вашего веб-сайта!
По мере изучения практических примеров в этой книге вы можете столкнуться с некоторыми проблемами, характерными для вашего окружения. Проблемы могут также возникать при переходе на использование новых версий модулей. К счастью, у сообщества Drupal имеется богатый выбор ресурсов, где можно получить помощь в исследовании самых противных ошибок, с которыми вы только можете столкнуться:
• Руководства Drupal, расположенные по адресу http://drupal.org/ handbooks1, содержат массу информации обо всем, начиная от философии сообщества и заканчивая подробными сведениями, касающимися разработки Drupal.
• Руководство для начинающих, по адресу: http://drupal.org/gettingstarted, содержит некоторую информацию, которая будет вам особенно полезна в первые два часа знакомства с Drupal.
Существует русскоязычный сайт Drupal.ru, где имеется похожий раздел http://drupal.ru/book. – Примеч. перев.
Получение справки • Сборник вопросов и ответов по устранению проблем – по адресу:
http://drupal.org/Troubleshooting-FAQ содержит полезные советы и рекомендации с расшифровкой сообщений об ошибках, с которыми вы можете столкнуться.
• За персональной помощью по любому вопросу, от подготовки к установке до проблем, связанных с обновлением, можно попробовать обратиться на форум «Support» (Поддержка), по адресу: http://drupal.
• Если ваш вопрос касается определенного модуля, можно послать «запрос на поддержку» (или «отчет об ошибке», если это явная проблема) в очередь вопросов, который будет передан лицу, сопровождающему модуль. Полезный видеоурок о том, как использовать очередь вопросов на сайте Drupal.org, находится по адресу http://drupal.
org/node/273658. Кроме того, очередь вопросов обсуждается также • На сайте irc.freenode.net имеется канал IRC #drupal-support для тех, кто предпочитает общаться в диалоговом режиме.
В отличие от #drupal-support канал #drupal на сайте irc.freenode.net не является каналом поддержки. Этот канал служит местом сбора разработчиков, где они предоставляют помощь друг другу, обмениваются информацией и обсуждают вопросы дальнейшего развития проекта Drupal в целом. Старайтесь участвовать в этих обсуждениях, чтобы быть в гуще событий сообщества, и задавайте свои вопросы, имеющие отношение к программированию, но помните, что такие вопросы, как «Какой параметр нужно включить, чтобы сделать то-то и то-то?» и «Какой модуль следует использовать для таких-то целей?» может При составлении своего вопроса всегда желательно предварительно провести самостоятельные исследования и только потом задавать прямые и недвусмысленные вопросы. Вопрос: «Модуль Foo дает мне ошибку “Invalid input” (Неверный ввод), когда я пытаюсь отправить слово “Steve” в качестве имени поля. Я попытался найти существующие решения и обнаружил сообщение http://drupal.org/node/1234, описывающее эту проблему, но приведенное там решение не устранило мою ошибку. Мог бы кто-нибудь дать мне какие-либо указания?», – выглядит намного лучше, а ответ на него придет гораздо быстрее и будет более содержательным, чем если бы вы задали вопрос: «Почему модуль Foo не работает? От вас, разработчиков, мало проку!» или: «Как мне построить сайт на базе Drupal?». Нередко в процессе подготовки вопроса к отправке при вводе подробного описания проблемы для того, чтоАналогичная ветка форума на русскоязычном ресурсе Drupal.ru: http:// drupal.ru/forum/support. – Примеч. перев.
бы кто-то другой смог разобраться в ней, вы сможете самостоятельно найти решение!
В заключение В этой главе вы узнали, что такое Drupal. Вы познакомились с историей веб-сайтов и систем управления содержимым, чтобы лучше понять проблемы, связанные с поддержкой растущего сайта. Мы исследовали концептуальные строительные блоки, используемые системой Drupal при построении сайтов нового поколения, и то, как они соотносятся друг с другом. Мы также познакомились со множеством способов получения помощи в случае появления проблем. В следующей главе мы объединим все это вместе и создадим наш первый веб-сайт на базе Drupal!
Эта глава предназначена для тех, кто только начинает знакомство с Drupal. В ней дается обзор возможностей системы, а также вводятся определения иногда не совсем понятных терминов и демонстрируется, как можно с помощью Drupal построить простой веб-сайт. Читатели, уже знакомые с Drupal, также могут просмотреть эту главу, так как последующие главы опираются на сведения, которые приводятся здесь.
К концу главы вы будете знать, как выполнять в Drupal такие задачи администрирования, как настройка модулей, работа с типами содержимого и настройка системы навигации по сайту.
В этой главе предполагается, что вы уже установили и запустили Drupal. За помощью по этому вопросу обращайтесь к приложению A, а также к руководству для начинающих по адресу: http://drupal.org/gettingstarted.
В этой главе будут представлены следующие модули:
Node (базовый) Позволяет добавлять новое содержимое и создавать свои типы содержимого.
Comment (базовый) Дает пользователям возможность оставлять свои комментарии к элементу содержимого.
User (базовый) Обеспечивает возможность регистрации пользователей, а также реализует надежные системы ролей и прав доступа Block (базовый) Добавляет динамические боковые врезки и другое дополнительное содержимое.
Menu (базовый) Обслуживает систему навигации по веб-сайту на базе Drupal.
Path (базовый) Обеспечивает поддержку дружественных адресов URL, таких как http://www.example.com/about, вместо http://www.example.com/node/1.
Administration Menu (http://drupal.org/project/admin_menu) Реализует динамические раскрывающиеся меню для ускорения доступа к выполнению административных задач.
Contact (базовый) Простая форма, которая может использоваться посетителями сайта для отправки своих вопросов владельцам веб-сайта.
Blog (базовый) Реализует простой и быстрый многопользовательский блог Taxonomy (базовый) Мощная система классификации.
Filter (базовый) Важный и часто недооцениваемый модуль, который является ключевым в системе безопасности Drupal.
FCKeditor (http://drupal.org/project/fckeditor) Визуальный редактор («What You See Is What You Get», WYSIWYG – что вижу, то и получаю), который позволяет тем, кто не знаком с языком разметки HTML, создавать содержимое веб-сайта, применяя элементы форматирования.
IMCE (http://drupal.org/project/imce) Дополнительный модуль, который может работать с такими редакторами, как FCKeditor, и позволяет легко добавлять изображения в содержимое веб-сайта.
Построенный веб-сайт будет выглядеть, как показано на рис. 2.1 и по адресу: http://jumpstart.usingdrupal.com.
Рис. 2.1. Законченный веб-сайт «Mom and Pop, Inc.»
Задача Задача Компания «Mom and Pop, Inc.» – это небольшой продуктовый магазин на Среднем Западе США, которым совместно управляют Дженни и Майк. В настоящее время их присутствие в Интернете представлено длинной статичной страницей HTML, в которой приводится общая информация, такая как происхождение компании, часы работы, местоположение и рекламные мероприятия, проводимые в настоящее время.
Так как ни Майк, ни Дженни не сильны в редактировании кода страницы вручную, то для еженедельного обновления содержимого страницы они наняли на эту ручную работу свою соседку Голди. Эта работа достаточно утомительна и совсем неинтересна, поэтому Голди не сразу бросается выполнять ее. В результате сайт часто содержит устаревшую информацию и не отрабатывает вложенные на его поддержание средства.
Майк и Дженни хотели бы получить новый, свежий сайт, которым они смогли бы управлять сами, заполняя поля веб-форм вместо того, чтобы вручную править код разметки страницы. Требуется, чтобы сайт содержал статические страницы, такие как «Home» (Главная) и «About»
(О компании), а кроме того, страницу, где отображалась бы информация о еженедельных рекламных акциях. Они также хотели бы иметь форму для контактов, чтобы получать заказы клиентов.
Майк и Дженни также хотели бы получить блог, в котором можно было бы обмениваться информацией о различных событиях в жизни магазина или местных событиях. Посетителям сайта требуется предоставить возможность комментировать сообщения в блоге, при этом комментарии анонимных посетителей должны пройти одобрение, прежде чем быть опубликованными.
Ни Майк, ни Дженни не занимаются программированием, поэтому важно, чтобы сайт позволял легко редактировать содержимое даже тому, кто не обладает знаниями HTML. И, наконец, у сайта должны быть эмблема, логотип и фирменные цвета, чтобы он имел «свое лицо».
В последнее время Голди много слышала о Drupal, поэтому она решила задействовать эту систему для своего проекта.
Примечания к реализации В разделе «Примечания к реализации» в каждой главе будут обсуждаться, сравниваться и противопоставляться различные варианты удовлетворения потребностей клиента в системе Drupal, а также будет описываться, как авторы пришли к решению использовать те или иные возможности.
Основы Практически все функциональные возможности, которые необходимы для удовлетворения потребностей компании «Mom and Pop, Inc.», реализованы в составе программного обеспечения Drupal, доступного для загрузки, которое называется «ядром» Drupal. Модуль Node имеет встроенные средства создания различных типов содержимого, включая статические страницы, которые прекрасно подойдут для страниц Home (Главная) и About (О компании). Чтобы присвоить этим страницам красивые и осмысленные адреса URL, такие как http://www.example.com/ about, мы будем использовать базовый модуль Path.
Система Drupal также предоставляет надежную систему ролей и прав доступа, которую можно использовать для отделения задач, выполняемых Голди (сопровождение веб-сайта), от задач, выполняемых Майком и Дженни (управление содержимым веб-сайта), и от задач, выполняемых клиентами сайта (которым будет позволено только оставлять свои комментарии).
В системе Drupal имеется встроенный модуль Blog, который прекрасно подойдет для Майка и Дженни и позволит им сообщать о новостях своего магазина. А модуль Comment позволит посетителям вступать в дискуссии.
Кроме того, в составе системы Drupal имеется модуль Contact, который можно использовать для создания простой формы с контактной информацией для любого веб-сайта. Имеется возможность определить различные категории, и с каждой из них связать отправку сообщений на отдельный адрес электронной почты. Это очень удобно, например, если поддержкой различных отделов занимаются разные люди.
Простота редактирования и обработки изображений Без каких-то ухищрений все содержимое в системе Drupal вводится в формате HTML, при этом с помощью встроенного модуля Filter обеспечиваются некоторые меры безопасности. С ручным вводом тегов HTML прекрасно справляются обычные веб-мастера, хорошо ориентирующиеся в HTML, однако большинство «обычных» пользователей (особенно те, кто не имеет отношения к вычислительной технике), как правило, не горят желанием вводить код странного вида, чтобы, например, создать простой список.
Кроме того, вполне естественно, что Майк и Дженни помимо текстового содержимого захотят поместить на сайте изображения: магазина, купонов рекламной акции, проводимой на текущей неделе, или фотографии своих детей. Ядро Drupal не имеет встроенных средств для работы с изображениями, – тогда как можно решить эту проблему?
Решить обе эти проблемы можно с помощью богатой библиотеки дополнительных модулей. Ниже в этой главе, в разделе «В центре внимания:
редактирование содержимого», мы подробнее обсудим имеющиеся решения. Но сначала обсудим базовые понятия.