Темизация Drupal. Часть 2. Анатомия темы оформления Drupal

Как и в случае с модулем, разработка которого рассматривалась в предыдущей статье, тема оформления должна иметь уникальное имя, состоящее из строчных латинских букв, цифр и знаков подчеркивания, и это имя должно начинаться с буквы. Тема оформления — это несколько файлов, которые располагаются в папке sites/all/themes/имя_темы относительно корня Drupal.

PHPTemplate при сборке страницы берет информацию из пяти основных файлов: имя_темы.info, page.tpl.php, node.tpl.php, block.tpl.php, template.php. Если же включен модуль comment, для вывода комментариев используется шаблон comment.tpl.php.

Читать дальше ➠

Темизация Drupal. Часть 1

Drupal часто ругают за однообразность и узнаваемость дизайна, используемого на Drupal-сайтах. То, что за определенным сайтом стоит CMS Drupal, можно определить не только по URL-адресам специфического вида, узнаваемым путям к папкам модулей и главной странице в виде списка последних опубликованных документов, но и по стандартной двух-трехколоночной структуре сайта, наличию стандартных форм авторизации и поиска, облаков тегов, списков новых документов и других часто используемых блоков.

Однако все эти упреки несправедливы. Здесь можно процитировать старый анекдот: «Вы просто не умеете его готовить». На самом деле к Drupal при должном умении можно «прикрутить» дизайн и верстку любой сложности. Можно до неузнаваемости «темизировать», т. е. изменять внешний вид любого HTML-кода, создаваемого Drupal, — все стандартные формы, блоки, документы и списки. Просто для этого нужно понимать, как Drupal генерирует выходные данные (информация об этом была размещена в моей предыдущей статье), и уметь переопределять этот вывод. Примеров таких детально темизированных сайтов много, в одной из врезок вы можете найти ссылки на некоторые из них.

В этой статье я расскажу о трех этапах темизации, охватывающих практически 100% задач, связанных с изменением внешнего вида сайта: разработка общего шаблона для всех страниц сайта и «кастомных» шаблонов для избранных страниц; разработка шаблонов для разных типов документов и списков; изменение внешнего вида форм (поиск, авторизация и любые другие стандартные и создаваемые внешними модулями формы). Но прежде чем переходить к решению задач, познакомимся с основными используемыми терминами и структурой любой «темы оформления».

Читать дальше ➠

Разработка модуля для Drupal. Часть3. Cron и темизация

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

Читать дальше ➠

Разработка модуля для Drupal. Часть2

currencies.info В .info-файлах модулей содержится служебная информация, без которой модуль не будет виден в системе. Начинаться любой .info-файл должен со строки ; $Id$ В файлах с PHP-кодом после открывающего тега <?

Читать дальше ➠

Разработка модуля для Drupal. Часть1. Введение

Система управления сайтом Drupal построена по модульному принципу: компактный набор служебных функций (ядро) расширяется при помощи модулей — файлов с PHP-кодом. Модули должны содержать «хуки» (hooks) — особым образом именованные функции, которые вызываются ядром Drupal при возникновении каких-либо событий. Каждый модуль имеет системное имя, которое должно состоять из латинских букв, цифр, знака подчеркивания (и начинаться обязательно с буквы). Имя хука должно состоять из двух частей: имени модуля и названия события. При возникновении любого события ядро Drupal в каждом из установленных модулей ищет и выполняет соответствующую функцию, т. е. функцию с именем название_модуля_название_события. Например, при возникновении событий, связанных с учетной записью пользователя (регистрация, авторизация, изменение роли пользователя и др.), ядро Drupal вызывает функции, реализующие хук hook_user, поэтому, чтобы модуль с именем **example **мог отреагировать на это событие, в нем необходимо объявить функцию с именем example_user(). Список передаваемых в эту функцию аргументов, пример ее использования и информацию обо всех функциях и хуках, доступных в Drupal, можно найти на странице официальной документации http://api.drupal.org или ее русской версии: http://api.drupal.ru.

Эта статья — продолжение материала, посвященного CMS Drupal (см. PC Magazine/RE, 12/2008). В первой статье подробно рассказано о назначении и возможностях системы, а также приведены примеры сборки сайтов на Drupal с использованием уже существующих модулей. Этот же материал будет больше интересен техническим специалистам, умеющим программировать на языке PHP, знакомых с основами HTML и CSS, и тем, кто хочет познакомиться с методами разработки собственных модулей для этой системы. Перед чтением этого материала рекомендуется освежить в памяти информацию, просмотрев ее первые три раздела.

Читать дальше ➠

Разработка сайта на Drupal. Часть 6. Оптимизация Друпал

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

По умолчанию Drupal ориентирован на хранение максимума информации в базе данных. Контент, служебные переменные и настройки сайта, кэши данных — все это складывается в БД. Не всегда такая схема может быть эффективна, и Drupal предлагает ряд альтернатив.

Читать дальше ➠

Разработка сайта на Drupal. Часть 5. Социальная сеть на Друпале

Постановка задачи Создаем ресурс со свободной регистрацией и возможностью для зарегистрированных пользователей публиковать материалы в собственном и коллективных блогах (блогах, посвященных определенной теме, в которые могут писать несколько авторов).

Читать дальше ➠

Разработка сайта на Drupal. Часть 4. Пример разработки корпоративного интранет-сайта на Drupal

Постановка задачи

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

Решение

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

Читать дальше ➠

Разработка сайта на Drupal. Часть 3. Модули Drupal.

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

  • CCK — Content Construction Kit, визуальный редактор, позволяющий расширить любой тип контента с помощью любого количества дополнительный полей: картинки, файлы, видео-ролики с бесплатных видео-хостингов, ссылки на внешние и внутренние ресурсы и так далее. С технической точки зрения этот модуль представляет собой визуальный редактор для Node API, о котором уже говорилось.
  • Views — инструмент, позволяющий создавать списки документов, отфильтрованные по большому количеству различных параметров, например, по рейтингу, автору, дате публикации или последнего комментария, наличию или отсутствию определенных тэгов и другим параметрам. Фактически, этот модуль является графическим интерфейсом, с помощью которого пользователь создает сложный SQL-запрос к базе данных.
  • Panels — модуль, позволяющий без знания html, создать страницы разделенные на районы, данные для которых будут предоставляться различными модулями Друпала. Этот модуль, обычно, используется для создания главной страницы сайта, на которой выводятся блоки с последними новостями, форумными обсуждениями, комментариями и так далее.
  • Webforms — визуальный интерфейс для создания форм обратной связи и обработки данных, переданных через эти формы.
  • Еще один важный модуль — ImageCache. Он обеспечивает функции автоматической обработки изображений на основе пользовательских сценариев правил обработки (preset). Например, при публикации документа на сайте можно настроить ImageCache таким образом, чтобы сразу изменить масштаб картинки, вырезать фрагмент нужного размера, изменить палитру, повернуть и т. п. Иными словами, из одной картинки автоматически могут быть получены, например, пиктограмма, миниатюра для предварительного просмотра и полноразмерное изображение. Все эти модули интегрированы с системой темизации Drupal и позволяют изменять внешний вид создаваемых ими документов и списков.
Читать дальше ➠

Разработка сайта на Drupal. Часть 2. Архитектура Drupal.

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

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

Читать дальше ➠