CMS Drupal 7. Руководство по разработке системы управления веб-сайтом
Тодд Томлинсон
Многие из большинства хорошо узнаваемых веб-сайтов на планете используют в качестве платформы для доставки контента и функциональности своим посетителям систему Drupal. С выходом версии Drupal 7 началась новая эра управления контентом, при которой предлагаемые функциональные средства подняли планку того, что может быть достигнуто на веб-сайтах, на новую высоту. Эта книга предоставляет исчерпывающую информацию о внутреннем устройстве Drupal, что позволит строить более развитые решения быстро и эффективно.
Книга ориентирована на разработчиков, которые отвечают за создание и расширение возможностей веб-сайтов, построенных на Drupal. Здесь рассматривается весь спектр вопросов, в том числе основы платформы Drupal, использование API-интерфейсов Drupal, разработка собственных модулей с целью расширения функциональности Drupal, написание защищенного кода, построение высокопроизводительных веб-сайтов на Drupal, а также другие темы, которые помогут на пути вашего становления как эксперта по Drupal.
Издательство: Вильямс, 3-е издание, 2011 г.
ISBN 978-5-8459-1743-0, 978-1-43-022838-7
Количество страниц: 560.
Содержание книги «CMS Drupal 7. Руководство по разработке системы управления веб-сайтом»:
- 17 Предисловие
- 18 Об авторе
- 19 О технических рецензентах
- 20 Благодарности
- 21 Введение
- 22 От издательства
- 23 Глава 1. Как работает Drupal
- 23 Что собой представляет Drupal
- 23 Стек технологий
- 24 Ядро
- 25 Интерфейс администрирования
- 25 Модули
- 25 Хуки
- 27 Темы
- 27 Ноды
- 27 Поля
- 28 Блоки
- 28 Расположение файлов
- 30 Обслуживание запросов
- 30 Роль веб-сервера
- 30 Процесс начальной загрузки
- 30 Обработка запроса
- 31 Оформление данных
- 31 Резюме
- 32 Глава 2. Создание модулей
- 32 Создание файлов
- 34 Реализация хука
- 35 Добавление параметров для конкретного модуля
- 42 Определение собственного раздела администрирования
- 44 Вывод формы параметров пользователю
- 45 Проверка параметров, введенных пользователем
- 46 Хранение параметров
- 46 Использование таблицы variables
- 47 Извлечение сохраненных значений с помощью функции variable_get()
- 47 Дальнейшие шаги
- 47 Резюме
- 48 Глава 3. Хуки, действия и триггеры
- 48 События и триггеры
- 50 Действия
- 50 Пользовательский интерфейс триггера
- 52 Первое действие
- 53 Назначение действия
- 54 Изменение триггеров, поддерживаемых действием
- 58 Использование контекста в действиях
- 59 Подготовка контекста модулем триггера
- 59 Изменение существующих действий с помощью drupal_alter()
- 60 Формирование контекста
- 62 Хранение действий
- 62 Таблица actions
- 62 Идентификаторы действий
- 62 Непосредственный вызов действия с помощью actions_do()
- 63 Определение собственных триггеров с помощью hook_trigger_info()
- 66 Добавление триггеров в существующие хуки
- 67 Резюме
- 68 Глава 4. Система меню
- 68 Отображение обратных вызовов
- 68 Отображение URL-адресов на функции
- 69 Создание элемента меню
- 73 Аргументы обратного вызова страницы
- 75 Обратные вызовы страниц в других файлах
- 76 Добавление ссылки в блок навигации
- 77 Вложенные меню
- 78 Управление доступом
- 79 Локализация и настройка заголовка
- 80 Определение обратного вызова заголовка
- 81 Обобщенные символы в элементах меню
- 81 Основные обобщенные символы
- 82 Обобщенные символы и параметры обратного вызова страницы
- 82 Использование значения обобщенного символа
- 83 Обобщенные символы и замена параметров
- 84 Передача дополнительных аргументов функции загрузки
- 85 Специальные предопределенные аргументы загрузки %map и %index
- 85 Сборка путей из обобщенных символов с помощью функций to_arg()
- 85 Специальные варианты обобщенных символов и функции to_arg()
- 86 Изменение элементов меню из других модулей
- 87 Изменение ссылок меню из других модулей
- 88 Виды элементов меню
- 90 Часто встречающиеся задачи
- 90 Назначение обратных вызовов без добавления ссылки в меню
- 90 Вывод элементов меню в виде вкладок
- 92 Сокрытие существующих элементов меню
- 92 Использование menu.module
- 93 Распространенные ошибки
- 93 Резюме
- 94 Глава 5. Работа с базами данных
- 94 Определение параметров базы данных
- 95 Уровень абстракции баз данных
- 95 Подключение к базе данных
- 97 Выполнение простых запросов
- 98 Выборка результатов запроса
- 98 Получение одного значения
- 98 Получение нескольких строк
- 99 Использование конструктора запросов и объектов запросов
- 100 Получение ограниченного диапазона результатов
- 100 Получение результатов для страничного вывода
- 101 Другие распространенные запросы
- 102 Вставки и обновления данных с помощью drupal_write_record()
- 103 API-интерфейс схемы
- 103 Использование файлов .install
- 103 Создание таблиц
- 106 Использование модуля схемы
- 106 Отображение типов полей из схемы в базу данных
- 109 Объявление конкретного типа столбца с помощью mysql_type
- 110 Обслуживание таблиц
- 111 Удаление таблиц при деинсталляции
- 111 Изменения существующих схем с помощью hook_schema_alter()
- 112 Изменение запросов других модулей с помощью hook_query_alter()
- 113 Подключение к нескольким базам данных в Drupal
- 114 Использование временной таблицы
- 115 Написание собственного драйвера СУБД
- 115 Резюме
- 116 Глава 6. Работа с пользователями
- 116 Объект $user
- 118 Проверка, выполнил ли пользователь вход
- 119 Хуки пользователя
- 120 Функция hook_user_view($account, $view_mode)
- 122 Процесс регистрации пользователя
- 124 Сбор информации о пользователях с помощью profile.module
- 125 Процесс входной регистрации
- 125 Добавление данных в объект $user во время загрузки
- 128 Предоставление категорий пользовательской информации
- 129 Внешний вход
- 133 Резюме
- 134 Глава 7. Работа с нодами
- 134 Так что же собой представляет нода?
- 136 Не все является нодами
- 137 Создание модуля ноды
- 149 Хранение нод
- 150 Создание типа ноды с помощью собственных типов контента
- 150 Ограничение доступа к нодам
- 152 Что такое область
- 152 Что такое идентификатор разрешения
- 154 Резюме
- 155 Глава 8. Работа с полями
- 155 Создание типов контента
- 157 Добавление полей в тип контента
- 160 Создание произвольного поля
- 170 Программное добавление полей
- 172 Резюме
- 173 Глава 9. Система тем
- 173 Темы
- 173 Установка готовой темы
- 174 Создание темы
- 180 Файл .info
- 180 Добавление областей в тему
- 181 Добавление CSS-файлов в тему
- 181 Добавление файлов JavaScript
- 181 Добавление параметров в тему
- 184 Шаблонные файлы
- 184 Крупный план
- 186 Файл html.tpl.php
- 187 Файл page.tpl.php
- 191 Файл region.tpl.php
- 191 Файл node.tpl.php
- 194 Файл field.tpl.php
- 195 Файл block.tpl.php
- 197 Переопределение шаблонных файлов
- 197 Другие шаблонные файлы
- 198 Знакомство с функцией theme()
- 198 Принцип действия функции theme()
- 199 Переопределение элементов, допускающих темизацию
- 201 Переопределение с помощью шаблонных файлов
- 202 Добавление и манипулирование шаблонными переменными
- 203 Использование модуля разработчика тем
- 203 Резюме
- 173 Темы
- 204 Глава 10. Работа с блоками
- 204 Что такое блок?
- 206 Параметры настройки блоков
- 207 Размещение блока
- 207 Определение блока
- 209 Использование блочных хуков
- 209 Создание блоков
- 215 Активация блока при инсталляции модуля
- 216 Примеры видимости блоков
- 216 Отображение блока только для вошедших пользователей
- 216 Вывод блока только для анонимных пользователей
- 216 Резюме
- 217 Глава 11. Интерфейс Form API
- 217 Обработка формы
- 219 Инициализация процесса
- 219 Установка маркера
- 219 Установка идентификатора
- 219 Сбор всех возможных определений элемента формы
- 220 Поиск функции проверки достоверности
- 220 Поиск функции отправки
- 221 Разрешение модулям изменять форму перед ее построением
- 221 Построение формы
- 221 Разрешение функциям изменять форму после ее построения
- 221 Проверка факта отправки формы
- 222 Обнаружение функции темы для формы
- 222 Разрешение модулям изменять форму перед ее визуализацией
- 222 Визуализация формы
- 223 Проверка достоверности формы
- 224 Отправка формы
- 224 Перенаправление пользователя
- 224 Создание базовых форм
- 226 Свойства формы
- 227 Идентификаторы формы
- 227 Наборы полей
- 230 Темизация форм
- 233 Спецификация функций проверки достоверности и отправки формы с помощью hook_forms()
- 234 Порядок вызова функций тем, проверки достоверности и отправки
- 234 Реализация функции проверки достоверности
- 237 Перестройка формы
- 238 Реализация функции отправки
- 239 Изменение форм с помощью hook_form_alter()
- 240 Программная отправка формы с помощью drupal_form_submit()
- 240 Динамические формы
- 247 Свойства Form API
- 247 Свойства для корневого элемента формы
- 248 Свойства, добавляемые ко всем элементам
- 248 Свойства, доступные во всех элементах
- 251 Элементы формы
- 259 Свойство #ahah
- 264 Резюме
- 217 Обработка формы
- 265 Глава 12. Манипулирование данными, вводимыми пользователем: система фильтров
- 265 Фильтры
- 266 Фильтры и текстовые форматы
- 268 Инсталляция фильтра
- 268 Когда нужно использовать фильтры
- 270 Создание специального фильтра
- 271 Реализация hook_filter_info()
- 271 Функция обработки
- 272 Вспомогательная функция
- 274 Резюме
- 275 Глава 13. Поиск и индексация контента
- 275 Создание специальной страницы поиска
- 276 Форма поиска по умолчанию
- 276 Расширенная форма поиска
- 277 Дополнение к форме поиска
- 280 Использование HTML-индексатора поиска
- 280 Когда используется индексатор
- 280 Как работает индексатор
- 288 Резюме
- 275 Создание специальной страницы поиска
- 289 Глава 14. Работа с файлами
- 289 Как Drupal обслуживает файлы
- 289 Управляемый и неуправляемый API-интерфейс Drupal
- 290 Общедоступные файлы
- 291 Приватные файлы
- 291 Параметры настройки PHP
- 292 Обработка медиа-данных
- 292 Поле выгрузки
- 293 Видео и аудио
- 293 API-интерфейс для работы с файлами
- 294 Схема базы данных
- 295 Общие задачи и функции
- 295 Выяснение заданного по умолчанию URI файлов
- 296 Копирование и перемещение файлов
- 296 Проверка каталогов
- 296 Выгрузка файлов
- 300 Получение URL для файла
- 301 Поиск файлов в каталоге
- 301 Поиск временного каталога
- 302 Нейтрализация опасных файлов
- 304 Проверка дискового пространства
- 304 Хуки аутентификации для загрузки
- 305 Резюме
- 306 Глава 15. Работа с таксономией
- 306 Структура таксономии
- 307 Создание словаря
- 307 Создание терминов
- 307 Назначение словаря типу контента
- 308 Виды таксономии
- 308 Одноуровневый словарь
- 308 Иерархический словарь
- 309 Множественная иерархия
- 310 Просмотр контента по термину
- 311 Использование операций AND и OR в URL
- 311 Определение глубины для иерархических словарей
- 312 Автоматические RSS-каналы
- 312 Хранение таксономий
- 314 Словари на основе модулей
- 314 Создание словаря на основе модуля
- 314 Уведомление об изменениях в словаре с помощью хуков таксономии
- 316 Общие задачи
- 316 Отображение терминов таксономии, связанных с нодой
- 316 Построение собственных запросов таксономии
- 317 Использование функции taxonomy_select_nodes()
- 317 Функции таксономии
- 317 Извлечение информации о словарях
- 317 Добавление, изменение и удаление словарей
- 318 Извлечение информации о терминах
- 319 Добавление, изменение и удаление терминов
- 320 Извлечение информации об иерархии терминов
- 322 Поиск нод с определенными терминами
- 322 Дополнительные ресурсы
- 322 Резюме
- 323 Глава 16. Кэширование
- 323 Когда необходимо кэширование
- 324 Как работает кэширование
- 325 Как кэширование используется в ядре Drupal
- 326 Система меню
- 326 Кэширование фильтрованного текста
- 326 Переменные администрирования и настройки модуля
- 327 Отключение кэширования
- 328 Кэширование страниц
- 328 Кэширование статической страницы
- 331 Кэширование данных с помощью cache_set()
- 332 Извлечение кэшируемых данных с помощью cache_get() и cache_get_multiple()
- 332 Использование функции cache_is_empty для проверки, пуст ли кэш
- 332 Очистка кэша с помощью cach_clear_all
- 334 Резюме
- 335 Глава 17. Сеансы
- 335 Что собой представляют сеансы
- 335 Использование сеансов
- 337 Настройки, связанные с сеансом
- 337 Файл .htaccess
- 337 Файл settings.php
- 338 Файл bootstrap.inc
- 338 Требование поддержки cookie-наборов
- 339 Хранилище
- 340 Жизненный цикл сеанса
- 341 Сеансовые диалоги
- 341 Первое посещение
- 341 Второе посещение
- 341 Пользователь с учетной записью
- 342 Общие задачи
- 342 Изменение времени истечения срока действия cookie-набора
- 342 Изменение имени сеанса
- 342 Хранение данных в сеансе
- 343 Резюме
- 344 Глава 18. Использование jQuery
- 344 Что собой представляет jQuery
- 345 Устаревший метод
- 346 Как работает jQuery
- 346 Использование селектора идентификации CSS
- 346 Использование селектора класса CSS
- 347 jQuery в Drupal
- 347 Ваш первый код jQuery
- 349 Выбор элемента по идентификатору
- 350 Объединение методов в цепочку
- 350 Добавление или удаление класса
- 350 Помещение существующих элементов в оболочку
- 351 Изменение значений элементов CSS
- 351 Куда помещать код JavaScript
- 354 Переопределяемый код JavaScript
- 357 Создание виджета для голосования с помощью jQuery
- 359 Построение модуля
- 364 Использование Drupal.behaviors
- 365 Способы расширения модуля
- 365 Совместимость
- 366 Дальнейшие шаги
- 366 Резюме
- 367 Глава 19. Локализация и перевод
- 367 Активация модуля locale
- 367 Перевод пользовательского интерфейса
- 367 Строки
- 369 Переопределения строк в settings.php
- 371 Замена строк с помощью модуля локализации
- 376 Экспорт перевода
- 377 Начало нового перевода
- 378 Использование командной строки
- 378 Использование модуля извлечения с веб-интерфейсом
- 379 Установка перевода на определенный язык
- 381 Поддержка языков с письмом справа налево
- 382 Согласование языков
- 383 Опция Default (По умолчанию)
- 383 Опция User (Пользовательский)
- 384 Глобальный объект $language
- 384 Опция Path prefix only (Только префикс пути)
- 386 Опция Path prefix with language fallback (Префикс пути с обходом языка)
- 386 Опция URL Only (Только URL)
- 387 Перевод контента
- 387 Начальное знакомство с модулем перевода контента
- 387 Многоязыковая поддержка
- 388 Многоязыковая поддержка с переводом
- 391 Файлы, относящиеся к локализации и переводу
- 392 Дополнительные ресурсы
- 392 Резюме
- 393 Глава 20. Протокол XML-RPC
- 393 Что собой представляет XML-RPC
- 393 Предварительные требования для протокола XML-RPC
- 394 Клиенты XML-RPC
- 394 Пример клиента XML-RPC: получение текущего времени
- 395 Пример клиента XML-RPC: получение названия штата
- 396 Обработка ошибок клиента XML-RPC
- 398 Простой сервер XML-RPC
- 399 Отображение метода с помощью hook_xmlproc()
- 400 Автоматическая проверка типа параметра с помощью hook_xmlprc()
- 400 Встроенные методы XML-RPC
- 400 system.listMethods
- 402 system.methodSignature
- 403 system.methodHelp
- 403 system.getCapabilities
- 403 system.multiCall
- 403 Резюме
- 404 Глава 21. Написание защищенного кода
- 404 Обработка вводимой пользователем информации
- 405 Соображения по поводу типов данных
- 407 Использование функций check_plain() и t() для очистки вывода
- 409 Использование функции filter_xss() для предотвращения межсайтовых атак с помощью сценариев
- 411 Использование функции filter_xss_admin()
- 411 Безопасная обработка URL
- 412 Обеспечение безопасности запросов с помощью функции db_query()
- 414 Сохранение конфиденциальности личных данных с помощью функции hook_alter_query()
- 415 Динамические запросы
- 415 Разрешения и обратные вызовы страницы
- 416 Подделки межсайтовых запросов (CSRF)
- 416 Безопасность файлов
- 416 Права доступа к файлу
- 417 Защищенные файлы
- 418 Загрузка файлов на сервер
- 418 Имена файлов и пути
- 418 Кодирование заголовков почты
- 419 Файлы для рабочей среды
- 420 Поддержка SSL
- 420 Автономный PHP
- 421 Безопасность AJAX и атаки повторением запроса
- 422 Безопасность API-интерфейса форм
- 422 Защита учетной записи суперпользователя
- 423 Резюме
- 404 Обработка вводимой пользователем информации
- 424 Глава 22. Передовые приемы разработки
- 424 Стандарты кодирования
- 424 Выравнивание строк и пробелы
- 424 Операции
- 425 Приведение типов
- 425 Управляющие структуры
- 425 Вызовы функций
- 426 Объявления функций
- 426 Имена функций
- 427 Вызовы конструктора класса
- 427 Массивы
- 427 Кавычки
- 428 Конкатенация строк
- 428 Комментарии
- 429 Примеры документирования
- 429 Документирование констант
- 429 Документирование функций
- 431 Документирование реализаций хуков
- 431 Включение кода
- 431 Дескрипторы PHP-кода
- 432 Символы точки с запятой
- 432 URL-адреса примеров
- 432 Соглашения по именованию
- 432 Программная проверка стиля кодирования
- 432 Использование сценария code-style.pl
- 433 Использование модуля кодировщика
- 434 Поиск в коде с помощью grep
- 435 Резюме
- 424 Стандарты кодирования
- 436 Глава 23. Оптимизация Drupal
- 436 Кэширование — ключ к высокой производительности Drupal
- 438 Оптимизация PHP
- 439 Установка файла кэша кодов операций PHP в /dev/zero
- 439 Настройки пула процессов PHP
- 441 Настройка Apache
- 441 Модуль mod_expires
- 441 Перенос директив из .htaccess в httpd.conf
- 442 Сравнение предварительного ветвления MPM с рабочей конфигурацией Apache MPM
- 443 Балансировка размера пула Apache
- 443 Снижение длительности тайм-аута Apache
- 443 Отключение неиспользуемых модулей Apache
- 443 Использование Nginx вместо Apache
- 444 Использование Pressflow
- 444 Использование Varnish
- 445 Нормализация входящих запросов для увеличения коэффициента попаданий в кэш Varnish
- 446 Varnish: обнаружение внешних cookie-наборов
- 446 Модуль Boost
- 447 Сравнение Boost и Varnish
- 447 Настройка системы Linux для серверов с высоким уровнем трафика
- 448 Использование быстрых файловых систем
- 449 Сравнение выделенных и виртуальных серверов
- 449 Предотвращение обращения к внешним веб-службам
- 450 Уменьшение интервалов ожидания сервера
- 450 Оптимизация базы данных
- 450 Включение кэша запросов в MySQL
- 451 Производительность InnoDB MySQL в среде Windows
- 451 Производительность Drupal
- 451 Предотвращение ошибок 404
- 452 Отключение неиспользуемых модулей
- 452 Специфичные для Drupal методы оптимизации
- 452 Кэширование страниц
- 452 Оптимизация полосы пропускания
- 452 Усечение таблицы сеансов
- 453 Управление трафиком аутентифицированных пользователей
- 453 Протоколирование в базе данных
- 453 Протоколирование в журнале операционной системы
- 453 Запуск cron
- 454 Архитектуры
- 454 Единственный сервер
- 454 Отдельный сервер базы данных
- 454 Отдельный сервер базы данных и кластер веб-серверов
- 455 Балансировка загрузки
- 455 Загрузки файлов на сервер и синхронизация
- 455 Использование разделяемой, монтируемой файловой системы
- 456 За рамками единственной файловой системы
- 456 Множество серверов базы данных
- 456 Репликация баз данных
- 456 Секционирование баз данных
- 456 Обнаружение узкого места
- 457 Перегрузка центрального процессора веб-сервера
- 458 Нехватка оперативной памяти на веб-сервере
- 459 Идентификация ресурсоемких запросов базы данных
- 459 Идентификация ресурсоемких страниц
- 459 Идентификация ресурсоемкого кода
- 460 Оптимизация таблиц
- 460 Кэширование запросов вручную
- 460 Изменение типа таблицы с MyISAM на InnoDB
- 461 Резюме
- 462 Глава 24. Инсталляционные профили
- 462 Создание нового инсталляционного профиля
- 463 Файл enhanced.info
- 464 Файл enhanced.profile
- 464 Файл enhanced.install
- 478 Использование хуков hook_install_tasks и hook_install_tasks_alter
- 479 Резюме
- 462 Создание нового инсталляционного профиля
- 480 Глава 25. Тестирование
- 480 Настройка тестовой среды
- 484 Способ определения тестов
- 490 Тестовые функции
- 493 Тестовые утверждения
- 496 Резюме
- 480 Настройка тестовой среды
- 497 Приложение А. Справочник по таблицам базы данных
- 540 Приложение Б. Ресурсы
- 547 Предметный указатель
Инструкция как скачать книгу Тодд Томлинсон: CMS Drupal 7. Руководство по разработке системы управления веб-сайтом в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.