Хранение параметров. Cms drupal 7 руководство по разработке системы управления веб сайтом
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 Предметный указатель
knigovodstvo.ru
CMS Drupal 7. Руководство по разработке системы управления веб-сайтом - Многие из большинства хорошо узнаваемых веб-сайтов на планете используют в качестве платформы для доставки контента и функциональности своим посетителям систему Drupal. С выходом версии Drupal 7 началась новая эра управления контентом, при которой предлагаемые функциональные средства подняли планку того, что может быть достигнуто на веб-сайтах, на новую высоту. Эта книга предоставляет исчерпывающую информацию о внутреннем устройстве Drupal, что позволит строить более развитые решения быстро и эффективно. Книга ориентирована на разработчиков, которые отвечают за создание и расширение возможностей веб-сайтов, построенных на Drupal. Здесь рассматривается весь спектр вопросов, в том числе основы платформы Drupal, использование API-интерфейсов Drupal, разработка собственных модулей с целью расширения функциональности Drupal, написание защищенного кода, построение высокопроизводительных веб-сайтов на Drupal, а также другие темы, которые помогут на пути вашего становления как эксперта по Drupal. Название: CMS Drupal 7. Руководство по разработке системы управления веб-сайтом Автор: Тодд Томлинсон Издательство: Вильямс Год: 2011 Страниц: 560 Формат: PDF Размер: 13,5 МБ ISBN: 978-5-8459-1743-0 Качество: Отличное Серия или Выпуск: Expert's Voice Язык: Русский
Содержание: Предисловие Введение Глава 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. Руководство по разработке системы управления веб-сайтом |
softapteka.ucoz.ru
CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ - Drupal - Каталог статей
CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:
Сбор информации о пользователях с помощью profile.moduleЕсли вы планируете добавить в форму регистрации пользователя сбор информации о пользователях, то стоит сначала попробовать модуль profile.module, а уже потом решать, нужно ли писать собственный модуль. Этот модуль позволяет создавать произвольные формы для сбора данных, определять, какая информация требуется и/или предназначена для сбора в форме регистрации пользователя, а также указать степень конфиденциальности этой информации. Кроме того, он позволяет администратору определять страницы для просмотра пользователей по вариантам их выбора с помощью URL-адреса, составленного из адреса сайта с добавлением profile/ плюс имя_поля_профиля/ плюс значение.
Читать далее...CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:
Процесс входной регистрацииПроцесс входной регистрации начинается тогда, когда пользователь заполняет входную форму (обычно по адресу http://example.com/?q=user или в блоке) и щелкает на кнопке Log in (Вход).
Читать далее...CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:
Внешний входИногда использовать локальную таблицу Drupal users не требуется. Например, возможно, таблица с данными о пользователях уже имеется в другой базе данных или в LDAP. Среда Drupal позволяет легко интегрировать внешнюю аутентификацию в процесс входной регистрации.
Читать далее...CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:
ГЛАВА 7 Работа с нодами В этой главе вы ознакомитесь с нодами и типами нод. Вы научитесь создавать тип ноды двумя различными способами. Вначале мы рассмотрим программное решение — напишем модуль, использующий хуки Drupal. Этот подход обеспечивает больший контроль и гибкость при определении, что нода может делать, а чего не может. Затем мы увидим, как создавать тип ноды из интерфейса администрирования Drupal. И в конце главы мы рассмотрим механизм управления доступом к нодам Drupal. Читать далее...CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:
Так что же собой представляет нода? Один из первых вопросов, которые задают новички в разработке на Drupal — что такое нода? Нода представляет собой фрагмент контента. Drupal присваивает каждому такому фрагменту контента идентификационный номер, который называется идентификатором ноды (node ID, а в коде — $nid). Обычно у нод имеется название (заголовок), которое позволяет администратору просмотреть список нод по их названиям. Читать далее...CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:
Создание модуля нодыЕсли вам понадобится создать в Drupal новый тип контента, то, следуя традиции, придется написать модуль ноды, который будет отвечать за выполнение и предоставление новых и интересных вещей, необходимых этому типу контента. Здесь сказано “следуя традиции”, т.к. последние веяния в среде Drupal позволяют создавать типы контента в интерфейсе администрирования, расширяя их возможности добровольно разработанными модулями — без написания модуля с самого начала. В настоящей главе рассматриваются оба этих решения.
Читать далее...CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:
Хранение нод Ноды хранятся в базе данных в виде отдельных частей. Таблица node содержит большинство метаданных, описывающих ноду. Таблица node_revisions содержит тело ноды и ее тизер, а также информацию о ревизии. И, как было показано в примере job_post.module, другие ноды могут добавлять данные к этой ноде во время ее загрузки и сохранять любые необходимые данные в собственных таблицах. Читать далее...CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:
Создание типа ноды с помощью собственных типов контента Способ создания модуля ноды, продемонстрированный в примере с job_post.module, обеспечивает исключительные возможности по управлению и производительность, однако он несколько утомителен. А хорошо бы создавать новый тип ноды вообще без программирования! Для этого и предназначены собственные типы контента из ядра Drupal. Читать далее...CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ:
Ограничение доступа к нодам Существует несколько способов ограничения доступа к нодам. Мы уже видели, как можно ограничить доступ к типу ноды с помощью хука hook_access() и прав доступа, определенных с помощью хука hook_perm(). Но Drupal предоставляет намного более мощные инструменты управления доступом — таблицу node_access и еще два хука доступа hook_node_grants() и hook_node_access_records(). Читать далее...books-cms.clan.su
Хуки пользователя - CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ
Реализация хуков пользователя позволяет модулям реагировать на различные действия, выполняемые с пользовательской учетной записью, и изменять объект $user. Имеются несколько вариантов функции hook_user, и каждый вариант предназначен для выполнения своего действия (табл. 6.2).
Таблица 6.2. Функции hook_user
Функция хука | Назначение |
hook_username_alter(&$name, $account) | Изменение пользовательского имени, отображаемого для пользователя |
hook_user_cancel($edit, $account, $method) | Вызывается при отменах пользовательских учетных записей |
hook_user_cancel_methods_alter(&$methods) | Изменение метода отмены учетной записи |
hook_user_categories() | Получение списка параметров пользователя или изменений в информации профиля |
hook_user_delete($account) | Реакция на удаление пользователя |
hook_user_insert(&$edit, $account, $category) | После создания пользовательской учетной записи |
hook_user_load($users) | Работает с объектами пользователей при загрузке из базы данных |
hook_user_login(&$edit, $account) | Сразу после входа пользователя |
hook_user_logout($account) | Сразу после выхода пользователя |
hook_user_operations() | Массовые операции с пользователями |
hook_user_presave(&$edit, $account, $category) | Непосредственно перед созданием или изменением пользовательской учетной записи |
hook_user_role_delete($role) | Информирование других модулей об удалении пользовательской роли |
hook_user_role_insert($role) | Информирование других модулей о добавлении пользовательской роли |
hook_user_role_update($role) | Информирование других модулей об изменении пользовательской роли |
hook_user_update(&$edit, $account, $category) | После изменения пользовательской учетной записи |
hook_user_view($account, $viewmode) | При отображении информации пользовательской учетной записи |
hook_user_view_alter(&$build) | После создания пользователя; модуль может изменить структурированное содержимое |
Функция hook_user_view($account, $view_mode)
Функция hook_user_view($account, $view_mode) используется модулями для добавления информации в страницы профиля пользователя — например, то, что отображается на странице http://example.com/?q=user/1, показанной на рис. 6.1. Рассмотрим, как модуль блога добавил свою информацию на эту страницу с помощью функции hook_user_view():
/** * Реализация hook_user_view(). */functionblog_user_view($account) { if (user_access('create blog content', $account)) { $account->content['summary']['blog'] = array( '#type' => 'user_profile_item', '#title' => t('Blog'), '#markup' => l( t('View recent blog entries'), // Просмотреть последние записи блога "blog/$account->uid", array('attributes' => array('title' => t("Read !username's latest blog entries.", // Прочитать последние записи блога пользователя !username array('!username' => format_username($account)) ) ) ) ), '#attributes' => array('class' => array('blog')), ); } }Функция view заносит некоторую информацию в компонент $user->content. Информация пользовательского профиля разбита на категории, и каждая категория представляет собой страницу информации о пользователе. На рис. 6.1 показана лишь одна категория History (История). Внешний массив должен быть индексирован именем категории. В данном примере использован ключ summary, который соответствует категории History (конечно, лучше, если имена ключа и категории совпадают). Внутренний массив (или массивы) должен содержать уникальный текстовый ключ (в данном случае blog) и элементы #type, #title, #markup и #attributes. Тип user_profile_item указывает уровню темизации Drupal на modules/user/user-profile-item.tpl.php. Сравнив приведенный фрагмент кода с рис. 6.1, можно понять, как отображаются эти элементы. В листинге 6.1 показано содержимое массива $user->content, который и отображается на рис. 6.1.
Листинг 6.1. Структура $user->content
Array ( [#pre_render] => Array( [0] => _field_extra_fields_pre_render ) [#entity_type] => user [#bundle] => user [#attached] => Array( [css] => Array( [0] => modules/field/theme/field.css ) ) [summary] => Array( [blog] => Array( [#type] => user_profile_item [#title] => Blog // Блог [#markup] => View recent blog entries // Посмотреть последние // записи блога [#attributes] => Array( [class] => Array( [0] => blog ) ) ) [#type] => user_profile_category [#attributes] => Array( [class] => Array( [0] => user-member ) ) [#weight] => 5 [#title] => History // История [member_for] => Array( [#type] => user_profile_item [#title] => Member for // Член [#markup] => 3 days 11 hours // 3 дня 11 часов ) ) [user_picture] => Array( [#markup] => [#weight] => -10 ))В модуле может быть также реализована функция hook_user_view() для обработки элементов профилей в массиве $user->content перед применением темы. Ниже приведен пример, в котором элемент профиля блога просто удален со страницы профиля пользователя. Имя выбрано для функции, которая находится в гипотетическом модуле hide.module:
/** * Реализация hook_user_view(). */functionhide_user_view($account, $view_mode = 'full') { unset($account->content['summary']['blog']); }books-cms.clan.su
Хранение параметров - CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ
В приведенном ниже разделе выполняется изменение значений и щелчок на кнопке (Сохранить конфигурацию).
Использование таблицы variables
Вначале рассмотрим поле Annotations per node (Аннотаций на ноду). В его ключ #default_value заносится значение variable_get('annotate_limit_per_node', 1). В базе данных Drupal имеется таблица variables; пары “ключ/значение” могут сохраняться в ней с помощью функции variable_set($key, $value), а выбираться — с помощью функции variable_get($key, $default). Так что вызов из предыдущего абзаца означает: “Установить для поля Annotations per node в качестве стандартного значение переменной annotate_limit_per_node, хранящееся в таблице базы данных variables, а если никакого значения не найдено, использовать 1”.
Внимание! Чтобы сохранять и выбирать параметры из таблицы variables без возникновения конфликтов пространств имен, всегда назначайте одинаковые имена элементу формы и ключу переменной (в предыдущем примере это annotate_limit_per_node). Имена элемента формы и ключа переменной должны образовываться из имени модуля с добавлением описательного имени.
Поле Annotations will be deleted (Аннотации будут удалены) несколько сложнее, т.к. оно представляет собой переключатель. Параметр #options для него выглядит так:
'#options' => array(t('Never'), // Никогдаt('Randomly'), // Случайным образомt('After 30 days')// Спустя 30 дней )Если передать PHP массив без ключей, ему неявно присваиваются числовые ключи, так что внутреннее представление массива будет выглядеть следующим образом:
'#options' => array([0] => t('Never'), // Никогда[1] => t('Randomly'), // Случайным образом[2] => t('After 30 days')// Спустя 30 дней )Указание стандартного значения для этого поля выполняется так:
'#default_value' => variable_get('annotate_deletion', 0)// По умолчанию — Neverчто означает выбор по умолчанию элемента 0 в массиве, т.е. t('Never').
Извлечение сохраненных значений с помощью функции variable_get()
Для извлечения сохраненных параметров должна использоваться функция variable_get():
// Извлечение сохраненного параметра — максимального количества аннотаций в ноде.$max = variable_get('annotate_limit_per_node', 1);Обратите внимание, что для variable_get() также применяется значение по умолчанию — на тот случай, если сохраненного значения нет (возможно, администратор еще не заходил на страницу настроек).
Дальнейшие шаги
Естественно, мы поделимся нашим модулем с сообществом пользователей открытого исходного кода. Поэтому необходимо создать файл README.txt и сохранить его в каталоге аннотирования вместе с файлами annotate.info, annotate.module и annotate.install. Файл README.txt обычно содержит информацию о том, кто написал данный модуль и как его устанавливать. Информация о лицензировании не требуется, т.к. для всех модулей, загруженных на сайт drupal.org, подразумевается лицензия GPL, и упаковочный сценарий на drupal.org автоматически добавляет файл LICENSE.txt. После этого его можно загрузить в хранилище дополнительных файлов на drupal.org и создать страницу проекта для отслеживания отзывов от других членов сообщества.
books-cms.clan.su
Ноды. Поля. Блоки. - CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ
Ноды
Типы контента в Drupal порождены от единственного базового типа, называемого нодой (node). Будь это запись блога, рецепт или даже задача проекта — основная структура данных для них одна и та же. Удобство такого подхода состоит в его легкой расширяемости. Разработчики модуля могут добавлять в ноды такие средства, как рейтинги, комментарии, вложенные файлы, информацию о географическом расположении и т.п., не заботясь о том, является ли тип ноды блогом, рецептом и т.д. Например, администратор может разрешить комментировать блоги, но не рецепты, или разрешить загрузку файлов только для задач проекта.
Ноды также содержат базовый набор свойств, определяющих их поведение, которые наследуются всеми остальными типами контента. Любую ноду можно выдвинуть на первую страницу веб-сайта, опубликовать или отменить публикацию, либо даже сделать так, чтобы в ней работала функция поиска. Благодаря такой унифицированной структуре, в интерфейсе администратора имеется экран пакетного редактирования для работы с нодами.
Поля
Контент в Drupal состоит из отдельных полей. Например, полем является заголовок ноды, а также ее тело. С помощью полей в Drupal можно создавать любой мыслимый тип контента — например, Event (Событие). Обычно событие содержит заголовок, описание (или тело), дату и время начала, продолжительность, местоположение и, возможно, ссылку для регистрации события. Каждый из этих элементов представляет собой поле. В Drupal можно создавать типы контента с помощью полей — программно (за счет создания модуля) или через интерфейс администрирования Drupal, с помощью создания нового типа контента и назначения полей через пользовательский интерфейс. К счастью, интерфейс Field API существенно облегчает создание как простых, так и сложных типов контента почти без программирования.
Блоки
Блок (block) — это информация, которая может быть включена или отключена в определенном месте шаблона веб-сайта. Например, с помощью блока можно отобразить количество активных в данный момент пользователей на сайте. Может существовать блок, содержащий ссылки на самый популярный контент сайта или список ближайших событий. Блоки обычно помещаются в боковую панель, заголовок или нижний колонтитул шаблона. Блоки можно настроить для отображения в нодах определенного типа, только на первой странице или по другим критериям.
Часто блоки используются для представления информации, настроенной для конкретного пользователя. Например, пользовательский блок может содержать ссылки только на те административные области сайта, к которым текущий пользователь имеет права доступа — например, на страницу “My account” (“Моя учетная запись”). Области, где могут появляться блоки (вроде заголовка, нижнего колонтитула, правой или левой боковой панели), определяются темой сайта; размещением и отображением блоков можно управлять через административный веб-интерфейс.
books-cms.clan.su
Стек технологий - CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ
Система Drupal спроектирована как для работы на недорогих веб-серверах, обеспечивающих мало затратный хостинг, так и для больших распределенных сайтов. Первое означает, что должны использоваться наиболее популярные технологии, второе — что программный код должен быть тщательно отработан. Стек технологий Drupal представлен на рис.
Операционная система в этом стеке находится на таком низком уровне, что Drupal почти не обращает на нее внимания. Drupal успешно работает в любой операционной системе, поддерживающей PHP.
Для работы с Drupal обычно применяется веб-сервер Apache, хотя могут использоваться и другие веб-серверы (в том числе Microsoft IIS). По этой причине Drupal поставляется с файлами .htaccess, которые обеспечивают защиту инсталляции Drupal. Чистые URL, т.е. URL без вопросительных знаков, амперсандов и других необычных символов, получаются с помощью Apache-компонента mod_rewrite. Это особенно важно, потому что при переходе к Drupal от другой системы управления содержимым или переносе статических файлов не приходится изменять их URL. Неизменяемые унифицированные идентификаторы ресурса (URI) — это “круто”, считает Тим Бернерс-Ли (http://www.w3.org/Provider/Style/URI). Чистые URL теперь доступны на других веб-серверах с помощью средств перезаписи URL этих веб-серверов.
Drupal взаимодействует со следующим уровнем стека (базой данных) через облегченный уровень абстракции баз данных, полностью переписанный в Drupal 7. Интерфейс для баз данных предоставляет API-интерфейс на основе модели объектов данных PHP (PHP data objects — PDO) и позволяет Drupal поддерживать любые СУБД, которые поддерживают PHP. Чаще всего используются СУБД MySQL и PostgreSQL, а в Drupal 7 — также и SQLite.
Drupal написана на языке PHP со строгим соблюдением стандартов (http://drupal.org/nodes/318) и, будучи системой с открытым кодом, постоянно пересматривается. Для Drupal простота изучения PHP означает легкость включения в процесс разработки новых участников, а пересмотр кода гарантирует, что эта легкость доступа не нанесет ущерба качеству конечного продукта. Отклики же, полученные новичками от сообщества, помогут им повысить свою квалификацию. Для Drupal 7 требуется PHP версии 5.2.
books-cms.clan.su