Хранение параметров. 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. Руководство по разработке системы управления веб-сайтом»:

Инструкция как скачать книгу Тодд Томлинсон: CMS Drupal 7. Руководство по разработке системы управления веб-сайтом в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.

knigovodstvo.ru

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

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) После создания пользователя; модуль может изменить структурированное содержимое
Внимание! Не путайте параметр $account во многих функциях хуков пользователя с глобальным объектом $user. Параметр $account представляет собой объект $user для обрабатываемой в данный момент учетной записи. Глобальный объект $user — это пользователь, который в данный момент выполнил вход. Обычно они совпадают, но не всегда.

Функция 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


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