Разработка сайта на Drupal. Часть 3. Модули Drupal.
Кроме программных интерфейсов, в Drupal имеется несколько мощных модулей, благодаря которым даже без навыков программирования можно создавать проекты с довольно сложной структурой:
- CCK — Content Construction Kit, визуальный редактор, позволяющий расширить любой тип контента с помощью любого количества дополнительный полей: картинки, файлы, видео-ролики с бесплатных видео-хостингов, ссылки на внешние и внутренние ресурсы и так далее. С технической точки зрения этот модуль представляет собой визуальный редактор для Node API, о котором уже говорилось.
- Views — инструмент, позволяющий создавать списки документов, отфильтрованные по большому количеству различных параметров, например, по рейтингу, автору, дате публикации или последнего комментария, наличию или отсутствию определенных тэгов и другим параметрам. Фактически, этот модуль является графическим интерфейсом, с помощью которого пользователь создает сложный SQL-запрос к базе данных.
- Panels — модуль, позволяющий без знания html, создать страницы разделенные на районы, данные для которых будут предоставляться различными модулями Друпала. Этот модуль, обычно, используется для создания главной страницы сайта, на которой выводятся блоки с последними новостями, форумными обсуждениями, комментариями и так далее.
- Webforms — визуальный интерфейс для создания форм обратной связи и обработки данных, переданных через эти формы.
- Еще один важный модуль — ImageCache. Он обеспечивает функции автоматической обработки изображений на основе пользовательских сценариев правил обработки (preset). Например, при публикации документа на сайте можно настроить ImageCache таким образом, чтобы сразу изменить масштаб картинки, вырезать фрагмент нужного размера, изменить палитру, повернуть и т. п. Иными словами, из одной картинки автоматически могут быть получены, например, пиктограмма, миниатюра для предварительного просмотра и полноразмерное изображение. Все эти модули интегрированы с системой темизации Drupal и позволяют изменять внешний вид создаваемых ими документов и списков.
Модуль Ubercart как основа Интернет-магазина
На базе платформы Drupal разработано два конкурирующих решения, позволяющих организовать полномасштабный электронный магазин — модули e-Commerce и Ubercart. Оба модуля в базовой поставке обладают широкой функциональностью и предоставляют разработчикам мощный и детально документированный API, построенный на основе традиционной для Drupal системы хуков. Для обоих магазинов разработано большое количество дополнительных модулей, в том числе для интеграции с платежными системами. С точки зрения функций Ubercart и e-Commerce очень похожи, но первый имеет репутацию значительно более простого и удобного в пользовании.
В Ubercart реализованы интерфейс покупателя и администратора (менеджера) магазина. Первый включает в себя витрину и корзину для покупок, второй обеспечивает управление товарами и их атрибутами, а также управление магазином в целом.
Витрина магазина, по сути, представляет собой каталог, элементы которого упорядочены в виде сетки, каждый элемент может содержать название, изображение и краткое описание раздела или товара с ссылкой на карточку товара. (Благодаря интеграции с модулем CCK карточка товара может быть дополнена пользовательскими полями.) Очень удобная особенность: атрибуты товара могут влиять на его цену, что позволяет избавиться от необходимости создавать однотипные товары с разными параметрами. Например, для упаковки чипсов можно создать атрибут «вес» со значениями 50, 100 и 200 г и атрибут «вкус» со значениями «сыр», «бекон» и «лук». Таким образом, одна карточка товара будет использована для продажи девяти разных по своим характеристикам продуктов. Кроме того, каждый товар может содержать информацию о габаритах и весе, эти данные можно учитывать при расчете стоимости доставки.
Модуль Ubercart предоставляет возможность подключения субмодулей, например, реализующих различные алгоритмы начисления скидок. (При этом скидка может зависеть от выбранного товара или класса товара, общей суммы заказа, роли пользователя или привязки продукта к заданной категории классификатора.) Товары могут объединяться в группы (Product Kit) — допустим, в онлайновом фотомагазине можно дать покупателям возможность купить отдельно фотоаппарат и отдельно объектив для него, а можно оба товара продавать в комплекте (у посетителя будет возможность купить товары группы одним кликом, а менеджер сможет задать отдельную скидку для такой групповой покупки).
Корзина Ubercart по умолчанию предоставляет возможность оплатить товар наличными курьеру (метод доставки COD — Cash on Delivery) или воспользоваться одной из зарубежных платежных систем, но с помощью дополнительных модулей может быть интегрирована с большим количеством других систем приема платежей, в том числе с Webmoney и «Яндекс.Деньги».
Администратор магазина на базе Ubercart имеет возможность настроить внешний вид каталога и карточек товаров, задать большое количество параметров, связанных с местоположением магазина и особенностями доставки, а также просмотреть подробные отчеты обо всех посетителях, обработанных/необработанных заказах и популярных (или непопулярных) товарах.
Drupal: практические примеры
Как использовать возможности Drupal на практике? Рассмотрим несколько примеров, для сборки которых требуются только существующие модули Drupal и не требуется знания языков программирования. Многие приведенные в примере задачи (и соответственно решения) можно рассматривать как типовые, так что они могут пригодиться для сайтов самого разного типа.
Полнофункциональные, настроенные и готовые к работе версии сайтов, речь о которых идет в этом разделе, можно найти на компакт-диске, прилагаемом к журналу PC Magazine/RE 12/2008 (вместе с системными модулями пакета Denwer), а также в Интернете по адресам http://2start.ru и http://shvabrashvabr.ru. Примеры идут в комплекте с пакетом Denwer, поэтому вам не нужно заботиться об установке и настройке Web-сервера, СУБД и PHP, достаточно запустить инсталлятор и следовать инструкциям. После инсталляции и запуска Denwer (мы бы рекомендовали экспериментировать на виртуальной машине) станут доступны два сайта, сборка которых описана в этой статье, — http://shvabrashvabr.lc и http://intranet.lc. Имя пользователя/пароль администратора каждого из сайтов — admin/1111.
Ссылки на другие части этой статьи:
- Часть 1. Введение
- Часть 2. Архитектура Друпала
- Часть 3. Модули Drupal
- Часть 4. Интранет-сайт на Друпале
- Часть 5. Социальная сеть на Друпале
- Часть 6. Оптимизация Друпал
Содержание всех статей: /blog/2010/my-drupal-articles