CMS Drupal 7. Руководство по разработке системы управления веб-сайтом. Cms drupal руководство


CMS Drupal 7. Руководство по разработке системы управления веб-сайтом. 3-е издание. Томлинсон Т.

Информационные технологии. IT

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

С выходом версии Drupal 7 началась новая эра управления контентом, при которой предлагаемые функциональные средства подняли планку того, что может быть достигнуто на веб-сайтах, на новую высоту. Эта книга предоставляет исчерпывающую информацию о внутреннем устройстве Drupal, что позволит строить более развитые решения быстро и эффективно. Книга ориентирована на разработчиков, которые отвечают за создание и расширение возможностей веб-сайтов, построенных на Drupal. Здесь рассматривается весь спектр вопросов, в том числе основы платформы Drupal, использование API-интерфейсов Drupal, разработка собственных модулей с целью расширения функциональности Drupal, написание защищенного кода, построение высокопроизводительных веб-сайтов на Drupal, а также другие темы, которые помогут на пути вашего становления как эксперта по Drupal.

 

Автор: Томлинсон Т.

Формат: PDF. Размер: 11 MB. 

 

Оглавление

ВВЕДЕНИЕ 1

Глава 1. Как работает Drupal 23Глава 2. Создание модулей 32Глава 3. Хуки, действия и триггеры 48Глава 4. Система меню 68Глава 5. Работа с базами данных 94Глава 6. Работа с пользователями 116Глава 7. Работа с нодами 134Глава 8. Работа с полями 155Глава 9. Система тем 173Глава 10. Работа с блоками 204Глава 11. Интерфейс Form API 217Глава 12. Манипулирование данными, вводимыми пользователем:система фильтров 265Глава 13. Поиск и индексация контента 275Глава 14. Работа с файлами 289Глава 15. Работа с таксономией 306Глава 16. Кэширование 323Глава 17. Сеансы 335Глава 18. Использование jQuery 344Глава 19. Локализация и перевод 367Глава 20. Протокол XML-RPC 393Глава 21. Написание защищенного кода 404Глава 22. Передовые приемы разработки 424Глава 23. Оптимизация Drupal 436Глава 24. Инсталляционные профили 462Глава 25. Тестирование 480Приложение А. Справочник по таблицам базы данных 497Приложение Б. Ресурсы 540Предметный указатель 547

Похожее

burov.top

CMS Drupal 7. Руководство по разработке системы управления веб-сайтом - 19 Августа 2014

Содержание:

Предисловие Об авторе О технических рецензентах Благодарности Введение От издательства Глава 1. Как работает Drupal Что собой представляет Drupal Стек технологий Ядро Интерфейс администрирования Модули Хуки Темы Ноды Поля Блоки Расположение файлов Обслуживание запросов    Роль веб-сервера    Процесс начальной загрузки    Обработка запроса    Оформление данных Резюме Глава 2. Создание модулей Создание файлов Реализация хука Добавление параметров для конкретного модуля Определение собственного раздела администрирования Вывод формы параметров пользователю Проверка параметров, введенных пользователем Хранение параметров    Использование таблицы variables    Извлечение сохраненных значений с помощью функции variable_get() Дальнейшие шаги Резюме Глава 3. Хуки, действия и триггеры События и триггеры Действия    Пользовательский интерфейс триггера    Первое действие    Назначение действия    Изменение триггеров, поддерживаемых действием Использование контекста в действиях    Подготовка контекста модулем триггера    Изменение существующих действий с помощью drupal_alter()    Формирование контекста Хранение действий    Таблица actions    Идентификаторы действий Непосредственный вызов действия с помощью actions_do() Определение собственных триггеров с помощью hook_trigger_info() Добавление триггеров в существующие хуки Резюме Глава 4. Система меню Отображение обратных вызовов Отображение URL-адресов на функции Создание элемента меню Аргументы обратного вызова страницы Обратные вызовы страниц в других файлах Добавление ссылки в блок навигации Вложенные меню Управление доступом Локализация и настройка заголовка Определение обратного вызова заголовка Обобщенные символы в элементах меню    Основные обобщенные символы    Обобщенные символы и параметры обратного вызова страницы    Использование значения обобщенного символа    Обобщенные символы и замена параметров    Передача дополнительных аргументов функции загрузки    Специальные предопределенные аргументы загрузки %map и %index    Сборка путей из обобщенных символов с помощью функций to_arg()    Специальные варианты обобщенных символов и функции to_arg() Изменение элементов меню из других модулей Изменение ссылок меню из других модулей Виды элементов меню Часто встречающиеся задачи    Назначение обратных вызовов без добавления ссылки в меню    Вывод элементов меню в виде вкладок    Сокрытие существующих элементов меню    Использование menu. module    Распространенные ошибки Резюме Глава 5. Работа с базами данных Определение параметров базы данных Уровень абстракции баз данных Подключение к базе данных Выполнение простых запросов Выборка результатов запроса    Получение одного значения    Получение нескольких строк    Использование конструктора запросов и объектов запросов    Получение ограниченного диапазона результатов    Получение результатов для страничного вывода    Другие распространенные запросы Вставки и обновления данных с помощью drupal_write_record() API-интерфейс схемы    Использование файлов .install    Создание таблиц    Использование модуля схемы    Отображение типов полей из схемы в базу данных    Объявление конкретного типа столбца с помощью mysql_type    Обслуживание таблиц    Удаление таблиц при деинсталляции    Изменения существующих схем с помощью hook_schema_alter() Изменение запросов других модулей с помощью hook_query_alter() Подключение к нескольким базам данных в Drupal Использование временной таблицы Написание собственного драйвера СУБД Резюме Глава 6. Работа с пользователями Объект $user Проверка, выполнил ли пользователь вход Хуки пользователя    Функция hook_user_view ($account, $view_mode) Процесс регистрации пользователя Сбор информации о пользователях с помощью profile. module Процесс входной регистрации    Добавление данных в объект $user во время загрузки    Предоставление категорий пользовательской информации Внешний вход Резюме Глава 7. Работа с нодами    Так что же собой представляет нода?    Не все является нодами    Создание модуля ноды    Хранение нод    Создание типа ноды с помощью собственных типов контента    Ограничение доступа к нодам    Что такое область    Что такое идентификатор разрешения Резюме Глава 8. Работа с полями Создание типов контента Добавление полей в тип контента Создание произвольного поля Программное добавление полей Резюме Глава 9. Система тем Темы    Установка готовой темы    Создание темы Файл .info    Добавление областей в тему    Добавление CSS-файлов в тему    Добавление файлов JavaScript    Добавление параметров в тему Шаблонные файлы    Крупный план    Файл html.tpl.php    Файл page.tpl.php    Файл region.tpl.php    Файл node.tpl.php    Файл field.tpl.php    Файл block.tpl.php    Переопределение шаблонных файлов    Другие шаблонные файлы Знакомство с функцией theme() Принцип действия функции theme()    Переопределение элементов, допускающих темизацию    Переопределение с помощью шаблонных файлов    Добавление и манипулирование шаблонными переменными    Использование модуля разработчика тем Резюме Глава 10. Работа с блоками Что такое блок? Параметры настройки блоков    Размещение блока    Определение блока    Использование блочных хуков Создание блоков Активация блока при инсталляции модуля Примеры видимости блоков    Отображение блока только для вошедших пользователей    Вывод блока только для анонимных пользователей Резюме Глава 11. Интерфейс Form API Обработка формы    Инициализация процесса    Установка маркера    Установка идентификатора    Сбор всех возможных определений элемента формы    Поиск функции проверки достоверности    Поиск функции отправки    Разрешение модулям изменять форму перед ее построением    Построение формы    Разрешение функциям изменять форму после ее построения    Проверка факта отправки формы    Обнаружение функции темы для формы    Разрешение модулям изменять форму перед ее визуализацией    Визуализация формы    Проверка достоверности формы    Отправка формы    Перенаправление пользователя Создание базовых форм    Свойства формы    Идентификаторы формы    Наборы полей    Темизация форм    Спецификация функций проверки достоверности    и отправки формы с помощью hook_forms()    Порядок вызова функций тем, проверки достоверности и отправки    Реализация функции проверки достоверности    Перестройка формы    Реализация функции отправки    Изменение форм с помощью hook_form_alter()    Программная отправка формы с помощью drupal_form_submit()    Динамические формы Свойства Form API    Свойства для корневого элемента формы    Свойства, добавляемые ко всем элементам    Свойства, доступные во всех элементах    Элементы формы    Свойство #ahah Резюме Глава 12. Манипулирование данными, вводимыми пользователем: система фильтров Фильтры Фильтры и текстовые форматы    Инсталляция фильтра    Когда нужно использовать фильтры Создание специального фильтра    Реализация hook_filter_info()    Функция обработки    Вспомогательная функция Резюме Глава 13. Поиск и индексация контента Создание специальной страницы поиска    Форма поиска по умолчанию    Расширенная форма поиска    Дополнение к форме поиска Использование HTML-индексатора поиска    Когда используется индексатор    Как работает индексатор Резюме Глава 14. Работа с файлами Как Drupal обслуживает файлы Управляемый и неуправляемый API-интерфейс Drupal    Общедоступные файлы    Приватные файлы Параметры настройки PHP Обработка медиа-данных    Поле выгрузки    Видео и аудио    API-интерфейс для работы с файлами    Схема базы данных    Общие задачи и функции    Выяснение заданного по умолчанию URI файлов    Копирование и перемещение файлов    Проверка каталогов    Выгрузка файлов    Получение URL для файла    Поиск файлов в каталоге    Поиск временного каталога    Нейтрализация опасных файлов    Проверка дискового пространства    Хуки аутентификации для загрузки Резюме Глава 15. Работа с таксономией Структура таксономии Создание словаря Создание терминов Назначение словаря типу контента Виды таксономии    Одноуровневый словарь    Иерархический словарь    Множественная иерархия Просмотр контента по термину    Использование операций AND и OR в URL    Определение глубины для иерархических словарей    Автоматические RSS-каналы Хранение таксономий Словари на основе модулей    Создание словаря на основе модуля    Уведомление об изменениях в словаре с помощью хуков таксономии Общие задачи    Отображение терминов таксономии, связанных с нодой    Построение собственных запросов таксономии    Использование функции taxonomy_select_nodes() Функции таксономии    Извлечение информации о словарях    Добавление, изменение и удаление словарей    Извлечение информации о терминах    Добавление, изменение и удаление терминов    Извлечение информации об иерархии терминов    Поиск нод с определенными терминами Дополнительные ресурсы Резюме Глава 16. Кэширование Когда необходимо кэширование Как работает кэширование Как кэширование используется в ядре Drupal    Система меню    Кэширование фильтрованного текста    Переменные администрирования и настройки модуля    Отключение кэширования    Кэширование страниц    Кэширование статической страницы    Кэширование данных с помощью cache_set()    Извлечение кэшируемых данных с помощью cache_get() и cache_get_multiple()    Использование функции cache_is_empty для проверки, пуст ли кэш    Очистка кэша с помощью cach_clear_all Резюме Глава 17. Сеансы Что собой представляют сеансы Использование сеансов Настройки, связанные с сеансом    Файл .htaccess    Файл settings.php    Файл bootstrap.inc    Требование поддержки cookie-наборов Хранилище Жизненный цикл сеанса Сеансовые диалоги    Первое посещение    Второе посещение    Пользователь с учетной записью Общие задачи    Изменение времени истечения срока действия cookie-набора    Изменение имени сеанса    Хранение данных в сеансе Резюме Глава 18. Использование jQuery Что собой представляет jQuery Устаревший метод Как работает jQuery    Использование селектора идентификации CSS    Использование селектора класса CSS jQuery в Drupal    Ваш первый код jQuery    Выбор элемента по идентификатору    Объединение методов в цепочку    Добавление или удаление класса    Помещение существующих элементов в оболочку    Изменение значений элементов CSS    Куда помещать код JavaScript    Переопределяемый код JavaScript Создание виджета для голосования с помощью jQuery    Построение модуля    Использование Drupal. behaviors    Способы расширения модуля    Совместимость Дальнейшие шаги Резюме Глава 19. Локализация и перевод Активация модуля locale Перевод пользовательского интерфейса    Строки    Переопределения строк в settings. php    Замена строк с помощью модуля локализации    Экспорт перевода Начало нового перевода    Использование командной строки    Использование модуля извлечения с веб-интерфейсом Установка перевода на определенный язык Поддержка языков с письмом справа налево Согласование языков    Опция Default (По умолчанию)    Опция User (Пользовательский)    Глобальный объект $language    Опция Path prefix only (Только префикс пути)    Опция Path prefix with language fallback (Префикс пути с обходом языка)    Опция URL Only (Только URL) Перевод контента    Начальное знакомство с модулем перевода контента    Многоязыковая поддержка    Многоязыковая поддержка с переводом Файлы, относящиеся к локализации и переводу Дополнительные ресурсы Резюме Глава 20. Протокол XML-RPC Что собой представляет XML-RPC Предварительные требования для протокола XML-RPC Клиенты XML-RPC    Пример клиента XML-RPC: получение текущего времени    Пример клиента XML-RPC: получение названия штата    Обработка ошибок клиента XML-RPC Простой сервер XML-RPC    Отображение метода с помощью hook_xmlproc()    Автоматическая проверка типа параметра с помощью hook_xmlprc() Встроенные методы XML-RPC    system.listMethods    system.methodSignature    system.methodHelp    system.getCapabilities    system.multiCall Резюме Глава 21. Написание защищенного кода Обработка вводимой пользователем информации    Соображения по поводу типов данных    Использование функций check_plain() и t() для очистки вывода    Использование функции filter_xss() для предотвращения межсайтовых атак с помощью сценариев    Использование функции filter_xss_admin() Безопасная обработка URL    Обеспечение безопасности запросов с помощью функции db_query() Сохранение конфиденциальности личных данных с помощью функции hook_alter_query() Динамические запросы Разрешения и обратные вызовы страницы Подделки межсайтовых запросов (CSRF) Безопасность файлов    Права доступа к файлу    Защищенные файлы    Загрузка файлов на сервер    Имена файлов и пути Кодирование заголовков почты Файлы для рабочей среды Поддержка SSL Автономный PHP Безопасность AJAX и атаки повторением запроса Безопасность API-интерфейса форм Защита учетной записи суперпользователя Резюме Глава 22. Передовые приемы разработки Стандарты кодирования    Выравнивание строк и пробелы    Операции Приведение типов Управляющие структуры    Вызовы функций    Объявления функций    Имена функций    Вызовы конструктора класса    Массивы    Кавычки    Конкатенация строк Комментарии    Примеры документирования    Документирование констант    Документирование функций    Документирование реализаций хуков    Включение кода    Дескрипторы PHP-кода    Символы точки с запятой    URL-адреса примеров Соглашения по именованию Программная проверка стиля кодирования    Использование сценария code-style. pl    Использование модуля кодировщика Поиск в коде с помощью grep Резюме Глава 23. Оптимизация Drupal Кэширование - ключ к высокой производительности Drupal Оптимизация PHP    Установка файла кэша кодов операций PHP в /dev/zero    Настройки пула процессов PHP Настройка Apache    Модуль mod_expires    Перенос директив из .htaccess в httpd. conf    Сравнение предварительного ветвления MPM с рабочей    конфигурацией Apache MPM    Балансировка размера пула Apache    Снижение длительности тайм-аута Apache    Отключение неиспользуемых модулей Apache Использование Nginx вместо Apache Использование Pressflow Использование Varnish    Нормализация входящих запросов для увеличения коэффициента попаданий в кэш Varnish    Varnish: обнаружение внешних cookie-наборов Модуль Boost Сравнение Boost и Varnish Настройка системы Linux для серверов с высоким уровнем трафика Использование быстрых файловых систем Сравнение выделенных и виртуальных серверов Предотвращение обращения к внешним веб-службам Уменьшение интервалов ожидания сервера Оптимизация базы данных    Включение кэша запросов в MySQL    Производительность InnoDB MySQL в среде Windows Производительность Drupal    Предотвращение ошибок 404    Отключение неиспользуемых модулей Специфичные для Drupal методы оптимизации    Кэширование страниц    Оптимизация полосы пропускания    Усечение таблицы сеансов    Управление трафиком аутентифицированных пользователей    Протоколирование в базе данных    Протоколирование в журнале операционной системы    Запуск cron Архитектуры    Единственный сервер    Отдельный сервер базы данных    Отдельный сервер базы данных и кластер веб-серверов    Балансировка загрузки    Загрузки файлов на сервер и синхронизация    Использование разделяемой, монтируемой файловой системы    За рамками единственной файловой системы    Множество серверов базы данных    Репликация баз данных    Секционирование баз данных Обнаружение узкого места    Перегрузка центрального процессора веб-сервера    Нехватка оперативной памяти на веб-сервере    Идентификация ресурсоемких запросов базы данных    Идентификация ресурсоемких страниц    Идентификация ресурсоемкого кода    Оптимизация таблиц    Кэширование запросов вручную    Изменение типа таблицы с MyISAM на InnoDB Резюме Глава 24. Инсталляционные профили Создание нового инсталляционного профиля    Файл enhanced.info    Файл enhanced.profile    Файл enhanced.install Использование хуков hook_install_tasks и hook_install_tasks_alter Резюме Глава 25. Тестирование Настройка тестовой среды    Способ определения тестов Тестовые функции Тестовые утверждения Резюме Приложение А. Справочник по таблицам базы данных Приложение Б. Ресурсы Предметный указатель

radiosit.ru

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ - Drupal - Каталог статей

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ

Глава 1. Как работает DrupalГлава 2. Создание модулейГлава 3. Хуки, действия и триггерыГлава 4. Система менюГлава 5. Работа с базами данныхГлава 6. Работа с пользователямиГлава 7. Работа с нодамиГлава 8. Работа с полямиГлава 9. Система темГлава 10. Работа с блокамиГлава 11. Интерфейс Form APIГлава 12. Манипулирование данными, вводимыми пользователем:система фильтровГлава 13. Поиск и индексация контентаГлава 14. Работа с файламиГлава 15. Работа с таксономиейГлава 16. КэшированиеГлава 17. СеансыГлава 18. Использование jQueryГлава 19. Локализация и переводГлава 20. Протокол XML-RPCГлава 21. Написание защищенного кодаГлава 22. Передовые приемы разработкиГлава 23. Оптимизация DrupalГлава 24. Инсталляционные профилиГлава 25. ТестированиеПриложение А. Справочник по таблицам базы данныхПриложение Б. РесурсыПредметный указатель

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Что собой представляет Drupal

Drupal используется для создания веб-сайтов. Это модульная платформа с открытым исходным кодом, предназначенная для совместного управления содержимым (контентом). Она легко поддается расширению, соответствует большинству стандартов, ее код прост, понятен и невелик по объему.

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Стек технологий

Система Drupal спроектирована как для работы на недорогих веб-серверах, обеспечивающих мало затратный хостинг, так и для больших распределенных сайтов.

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Drupal 7: Ядро. Интерфейс администрирования.

Основу Drupal составляет небольшое по объему ядро. Именно его вы загружаете с сайта drupal.org. Ядро отвечает за выполнение основных функций, необходимых для обеспечения работоспособности других частей системы.

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Модули. Хуки. Темы.

Drupal — действительно модульная среда. Ее функции реализуются с помощью модулей, использование которых можно разрешить или запретить.

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Ноды. Поля. Блоки.

Типы контента в Drupal порождены от единственного базового типа, называемого нодой (node). Контент в Drupal состоит из отдельных полей. С помощью полей в Drupal можно создавать любой тип контента. Блок (block) — это информация, которая может быть включена или отключена в определенном месте шаблона веб-сайта.

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Расположение файлов

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

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Обслуживание запросов

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

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Создание модулей: Создание файлов

Модули — базовые блоки, образующие основу Drupal. Кроме того, они представляют собой механизм расширения функциональности изначально поставляемой версии Drupal, которая называется ядром Drupal. Тем, кто не знаком с Drupal, я часто говорю, что модули похожи на элементы конструктора “Лего”. Следование заранее оговоренным правилам позволяет им абсолютно точно сочетаться друг с другом, и такие сочетания модулей позволяют создавать мощные и сложные решения.

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Реализация хука

Среда Drupal основана на системе хуков (hook), которые иногда называют обратными вызовами (callback). Во время своей работы Drupal опрашивает модули, хотят ли они сделать что-либо. Например, при загрузке ноды из базы данных перед выводом на странице Drupal просматривает все активные модули и проверяет, реализована ли в них функция hook_node_load(). Если это так, Drupal сначала запускает хук этого модуля, а уже потом отображает ноду на странице. Мы рассмотрим работу этого механизма на примере модуля аннотации.

Читать далее...

books-cms.clan.su

Обслуживание запросов - CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ

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

Роль веб-сервера

Drupal выполняется на веб-сервере, которым обычно является Apache. Если веб-сервер корректно обрабатывает файл .htaccess системы Drupal, то он инициализирует некоторые параметры PHP и анализирует URL. Почти все вызовы Drupal выполняются через страницу index.php. Например, обращение к http://example.com/foo/bar приводит к выполнению следующего процесса.

  1. Правило mod_rewrite в файле .htaccess системы Drupal просматривает входящий URL и разделяет его на базовый URL и путь. В нашем примере указан путь foo/bar.
  2. Этот путь присваивается параметру URL-запроса по имени q.
  3. В результате получается URL-адрес http://example.com/index.php?q=foo/bar.
  4. Drupal трактует foo/bar как внутренний путь Drupal, и обработка начинается с index.php.

В результате этого процесса Drupal трактует адреса http://example.com/index.php?q=foo/bar и http://example.com/foo/bar одинаково, поскольку в обоих случаях внутренний путь один и тот же. Это позволяет Drupal использовать URL без экзотических символов внутри. Такие URL-адреса называются чистыми.

При установке Drupal на веб-серверах других типов, таких как Microsoft IIS, чистые URL могут быть получены с помощью модуля ISAPI (Internet Server Application Programming Interface — интерфейс прикладного программирования Интернет-сервера) Windows, такого как ISAPI_Rewrite. Сервер IIS 7 и последующие его версии поддерживают перезапись непосредственно. Если сайт работает под управлением IIS 7 или более поздней версии, необходимо исключить файл web.config, который разрешает использование чистых URL и защищает от посторонних глаз файлы, которые лучше им не просматривать, например, .install, .module, .test, .theme, .profile, .info и .inc.

Процесс начальной загрузки

Drupal загружает себя при каждом запросе, проходя ряд этапов раскрутки. Эти этапы определены в файле bootstrap.inc и выполняются так, как описано в табл. 1.1.

Таблица 1.1. Процесс загрузки

Этап Назначение
Конфигурирование Задает глобальные переменные, которые используются в процессе загрузки
СУБД Инициализирует СУБД и регистрирует функции автозагрузки
Переменные Загружает системные переменные и все разрешенные модули раскрутки
Сеанс Инициализирует обработку сеансов
Заголовок страницы Вызывает метод hook_boot(), инициализирует систему блокировки и посылает стандартные HTTP-заголовки
Язык Инициализирует все определенные языковые типы
Завершение Последний этап: к этому моменту система Drupal полностью загружена. Здесь проверяются и исправляются входные данные

Конфигурирование Задает глобальные переменные, которые используются в процессе загрузки СУБД Инициализирует СУБД и регистрирует функции автозагрузки Переменные Загружает системные переменные и все разрешенные модули раскрутки Сеанс Инициализирует обработку сеансов Заголовок страницы Вызывает метод hook_boot(), инициализирует систему блокировки и посылает стандартные HTTP-заголовки Язык Инициализирует все определенные языковые типы Завершение Последний этап: к этому моменту система Drupal полностью загружена. Здесь проверяются и исправляются входные данные

Обработка запроса

Все действия по обработке и сбору данных, необходимых для удовлетворения запроса, выполняются функцией обратного вызова. Например, если получен запрос контента наподобие http://example.com/q=node/3, такой URL отображается на функцию node_page_view() в модуле node.module. При дальнейшей обработке данные для этой ноды извлекаются из базы и помещаются в структуру данных. После этого приходит время темизации.

Оформление данных

Темизация (theming, или оформление посредством выбранной темы) выполняет преобразование выбранных, измененных или созданных данных в формат HTML (либо XML или другой выходной формат). Drupal использует выбранную администратором тему для придания странице нужного внешнего вида. Затем результирующий вывод отправляется веб-браузеру (или другому HTTP-клиенту).

books-cms.clan.su

CMS Drupal 7. Руководство по разработке системы управления веб-сайтом

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

Книга ориентирована на разработчиков, которые отвечают за создание и расширение возможностей веб-сайтов, построенных на Drupal. Здесь рассматривается весь спектр вопросов, в том числе основы платформы Drupal, использование API-интерфейсов Drupal, разработка собственных модулей с целью расширения функциональности Drupal, написание защищенного кода, построение высокопроизводительных веб-сайтов на Drupal, а также другие темы, которые помогут на пути вашего становления как эксперта по Drupal.

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

Книга ведущего специалиста по разработке Drupal представляет собой учебное и справочное пособие по внутренней архитектуре новой версии популярной системы управления сайтами – Drupal 7.

Подробно рассматриваются:

Немалое внимание уделяется вопросам повышения производительности сайтов, построенных на основе Drupal 7, эффективной поддержке пользовательских сеансов, взаимодействию с помощью XML-RPC, а также локализации и переводу контента на другие языки. Предлагаются уникальные передовые приемы проектирования, полезные советы по написанию безопасного кода и методы оптимизации Drupal.

В этой книге вы изучите следующее:

Книга рассчитана на опытных разработчиков модулей Drupal, желающих перейти на версию Drupal 7, а также программистов на PHP, которые заинтересованы в разработке для Drupal. Другими словами, если вы работаете с Drupal, то эта книга — для вас.

drupal.org.ru

Создание модулей: Создание файлов - CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ

Модули — базовые блоки, образующие основу Drupal. Кроме того, они представляют собой механизм расширения функциональности изначально поставляемой версии Drupal, которая называется ядром Drupal. Тем, кто не знаком с Drupal, я часто говорю, что модули похожи на элементы конструктора “Лего”. Следование заранее оговоренным правилам позволяет им абсолютно точно сочетаться друг с другом, и такие сочетания модулей позволяют создавать мощные и сложные решения.

Модули Drupal делятся на две общие категории — основные и дополнительные. Основные модули поставляются вместе с Drupal и включают в себя такие модули, как опросы, меню, таксономия, поиск, агрегатор новостей и форумы. Дополнительные модули — это все модули, созданные сообществом, которое расширяет и усовершенствует функциональные возможности ядра Drupal. Дополнительных модулей буквально тысячи, они доступны для загрузки по адресу http://drupal.org/project/modules и охватывают диапазон от простых модулей для решения одной задачи (вроде вывода текущей даты и времени) до сложных решений наподобие интерфейсов для электронной коммерции.

В настоящей главе вы узнаете, как создать с нуля произвольный модуль. По мере его создания вы будете знакомиться со стандартами, которым должны удовлетворять модули. Лучше ставить реальные цели, и поэтому мы рассмотрим вполне актуальную задачу аннотирования. При просмотре страниц веб-сайта Drupal может возникнуть желание написать что-нибудь о какой-то странице. Для этого можно было бы воспользоваться функцией комментирования Drupal, но комментарии обычно доступны для просмотра всем посетителям сайта или аутентифицированным пользователям, а вот аннотации видны только автору ноды.

Создание файлов

Сначала нужно выбрать имя для модуля. Вполне годится имя “annotate” — и коротко, и понятно. После этого понадобится выбрать место для хранения модуля. Сторонние и разработанные самостоятельно модули хранятся в каталоге /sites/all/modules, причем каждый модуль в собственном подкаталоге, имя которого совпадает с именем модуля.

 

На заметку! Основные модули Drupal хранятся в каталоге /modules — это защищает самостоятельно разработанные и сторонние модули от перезаписи или удаления во время модернизации до новой версии.

Можно создать каталог /sites/all/modules/custom для хранения всех модулей, созданных с нуля — так вы облегчите жизнь тому, кто будет просматривать ваш сайт и интересоваться, какие модули загружены с сайта Drupal.org, а какие специально разработаны для данного сайта. Теперь в каталоге /sites/all/modules/custom необходимо создать подкаталог annotate, который будет содержать все файлы, связанные с модулем аннотирования. Первым файлом, который мы создадим для нового модуля, будет annotate.info. У каждого модуля в Drupal 7 должен быть файл .info, имя которого должно совпадать с именем самого модуля. Для модуля аннотации базовая информация, которая необходима для распознавания модуля системой Drupal, выглядит так: 

name = Annotate description = "Allows users to annotate nodes." package = Pro Drupal Development core = 7.x files[] = annotate.module files[] = annotate.install configure = admin/config/content/annotate/settings

Структура этого файла стандартна для всех модулей Drupal 7. Элемент name используется для вывода имени модуля на странице (). Элемент description описывает модуль и также выводится на странице . Элемент package определяет пакет или группу, с которой связан модуль. На странице модули сгруппированы по пакетам. Поле core определяет версию Drupal, для которой написан модуль. Элемент php указывает версию PHP, необходимую для работы модуля. Наконец, элемент files представляет собой массив имен файлов, связанных с модулем. С нашим модулем аннотации связаны файлы annotate.module и annotate.install.

Кроме вышеперечисленных, можно указать и дополнительные значения. Ниже приведен пример модуля, который требует наличия версии PHP 5.2, а также установленных модулей форума и таксономии.

name =Annotate description = "Allows users to annotate nodes." package = Pro Drupal Development core = 7.x dependencies[] = forum dependencies[] = taxonomy files[] = annotate.module files[] = annotate.install php = 5.2

Теперь все готово для создания самого модуля. Создайте в подкаталоге sites/all/ modules/custom/annotate файл по имени annotate.module. В начало этого файла поместите открывающий дескриптор PHP и дескриптор идентификации CVS, а за ними комментарий:

<?php /** * @file * Позволяет пользователям добавлять в ноды персональные аннотации. * * При выводе ноды добавляет текстовое поле, которое позволяет * аутентифицированным пользователям вставлять примечания. */

Обратите внимание на стиль комментария. Он начинается с символов /**, продолжается строками со звездочкой с одним предшествующим пробелом ( *) и завершается отдельной строкой с символами */. Элемент @file означает, что содержимое последующих строк описывает действие файла. Такое однострочное описание используется компонентом автоматического извлечения и форматирования документации api.module (см. http://drupal.org/project/api). На сайте Drupal.org посетите страницу http://api.drupal.org. Там находится подробная документация по каждому API-интерфейсу, предоставляемому Drupal. Не поленитесь и просмотрите этот раздел сайта — это бесценный источник для тех, кто разрабатывает или изменяет модули.

После пустой строки добавлено более развернутое описание, предназначенное для программистов, которые будут изучать (и, конечно же, улучшать) наш код. Обратите внимание, что здесь специально не использован закрывающий дескриптор ?> — в PHP они не обязательны и даже могут привести к проблемам с завершающими пробельными символами в файлах (см. http://drupal.org/coding-standards#phptags).

На заметку! Почему мы так беспокоимся о структурировании каждой мелочи? Да потому, что если сотни человек со всего мира работают над совместным проектом, стандартизация экономит время. Подробнее о стиле кодирования, принятом в Drupal, см. в разделе “Coding standards” (“Стандарты кодирования”) документа “Developing for Drupal Handbook” (“Справочник разработчика Drupal”), доступного по адресу http://drupal.org/coding-standards.

Теперь необходимо определить некоторые параметры, чтобы можно было использовать веб-форму для выбора нод, которые пользователь захочет аннотировать. Для этого понадобится выполнить два шага. Сначала мы определим путь, где будут находиться параметры настройки, а потом создадим форму параметров. Для создания пути необходимо реализовать хук, а именно — hook_menu.

books-cms.clan.su

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ - Drupal - Каталог статей

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Обобщенные символы в элементах меню

До сих пор мы использовали в элементах меню обычные имена путей Drupal, такие как menufun и menufun/farewell. Однако в Drupal часто применяются пути вида user/4/track или node/15/edit, где части пути формируются динамически. Рассмотрим этот процесс подробнее.

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Изменение элементов меню из других модулей При перестройке таблицы menu_router и изменении таблиц menu_link (например, во время активации нового модуля) модули имеют возможность изменить любой элемент меню, реализовав функцию hook_menu_alter(). Например, элемент меню Log off (Выход) выполняет выход текущего пользователя с помощью вызова user_logout(), который уничтожает сеанс этого пользователя, а затем перенаправляет его на домашнюю страницу сайта. Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Виды элементов меню

При добавлении элемента меню в хуке меню можно использовать ключ type (тип). Если тип не определен, то используется стандартный тип MENU_NORMAL_ITEM. В зависимости от назначенного типа Drupal по-разному воспринимает элемент меню.

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Часто встречающиеся задачи

В настоящем разделе рассмотрены некоторые типичные подходы к часто встречающимся задачам, которые приходится решать разработчикам при работе с меню.

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Определение параметров базы данных

Работа Drupal зависит от базы данных. Контент, комментарии, таксономия, меню, пользователи, роли, права доступа и почти все остальное хранится в базе данных и используется в Drupal в качестве источника информации, необходимой для отображения контента на сайте и управления доступом к различным его аспектам. Внутри Drupal имеется облегченный уровень абстракции баз данных — между кодом и самой базой данных. Этот уровень абстракции устраняет значительную часть сложностей взаимодействия с базой данных и защищает Drupal от различий между механизмами разных СУБД. В данной главе вы узнаете, как работает уровень абстракции баз данных и как его использовать. Вы увидите, как модули могут изменять запросы. И, наконец, вы научитесь с помощью API-интерфейса схемы Drupal вставлять в файл .install модуля запросы, необходимые для создания и изменения таблиц базы данных.

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Уровень абстракции баз данных

Работу с API-интерфейсом абстракции баз данных можно полностью оценить, только попробовав отказаться от него. Были ли у вас проекты, где требовалось изменить СУБД, и вы целыми днями просматривали код, чтобы модифицировать в нем вызовы функций и запросы, специфичные для конкретной СУБД? Работа с уровнем абстракции позволяет не задумываться о различиях в именах функций для различных СУБД, а также о совместимости запросов с ANSI SQL — т.е. вам не придется писать различные запросы для различных СУБД.

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Подключение к базе данных

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

Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Выполнение простых запросов Функция Drupal db_query() используется для выполнения запроса SELECT в активном подключении к базе данных. Имеются другие функции для выполнения запросов INSERT, UPDATE и DELETE — они будут описаны чуть ниже, а пока мы рассмотрим выборку информации из базы данных. Читать далее...

CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:

Выборка результатов запроса

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

Читать далее...

books-cms.clan.su


Prostoy-Site | Все права защищены © 2018 | Карта сайта