Главная » Drupal » Документация Drupal » Справочник API

Справочник API

Справочник Forms API

Этот документ является полным справочник к Forms API Друпала. Если вас интересует пошаговая интрукция о том, как создавать собственные формы, вам лучше начать с быстрого введения в Forms API.

Перейти к: параметрам | значениям по-умолчанию | элементам

Элементы формы

Легенда: Читать далее »

Как создавать страницы

Это пример, который показывает, как можно использовать модуль для показа своей страницы по заданному URL.
Читать далее »

Как расширять существующие типы контента

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

Для каждой ноды добавим возможность иметь рейтинг, который будем числом от одного до пяти.
Читать далее »

Как ограничить доступ к нодам

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

В этом примере, модуль будет устанавливать флаг 'private' для ноды. Если флаг установлен, то только пользователи с правом 'view private content' будут видеть содержание ноды, а пользователи с 'edit private content' смогут изменять (но не удалять) ноду.

Кроме того автор ноды всегда сможет просматривать, изменять и удалять её.

Определение базы:

CREATE TABLE node_access_example (
nid int(10) UNSIGNED NOT NULL DEFAULT '0' PRIMARY KEY,
private int,
KEY `node_example_nid` (nid)
)

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

Как создавать типы контента (нод)

Пример модуля для создания нового типа нод.

Созданный этим модулем тип нод позволяет задавать для этих нод дополнительные поля цвет ('color') и количество ('quantity'); такие ноды можно использовать как простейшую систему учета ресурсов. Чтобы сохранять эту дополнительную информацию, нужна вспомогательная таблица базы данных.

Схема таблицы БД:

CREATE TABLE node_example (
vid int(10) UNSIGNED NOT NULL DEFAULT '0',
nid int(10) UNSIGNED NOT NULL DEFAULT '0',
color varchar(255) NOT NULL DEFAULT '',
quantity int(10) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (vid, nid),
KEY `node_example_nid` (nid)
)

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

Как создавать форматы ввода

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

Чтобы показать все возможности системы фильтров, мы определим два фильтра в данном модуле. Один будет заменять строку 'foo' на строку, определённую администратором. Другой найдёт пользовательский XML-тэг <time /> и заменит его на текущее время.
Читать далее »

Глобальные переменные

Имя Описание
$active_db
./globals.php
Активное соединение с базой данных.
$base_path
./globals.php
Возвращает базовый путь сайта (по-умолчанию, «/»).
$base_root
./globals.php
Корневой URL хоста, не включая путь. Смотри также conf_init()
$base_theme_info
./globals.php
Массив объектов представляющий базовую тему. Для справки об объекте темы смотри _init_theme().
$base_url
./globals.php
Базовый URL инсталляции Drupal. Смотри также conf_init.
$channel
./globals.php
Ассоциативный массив, содержащий название, ссылку, описание и другие ключи. Ссылка должна быть абсолютной.
$conf
./globals.php
Путь к каталогу содержащему файлы настроек, задается функциейconf_path().
$cookie_domain
./globals.php
Домен, который будет использован для сеансовых cookies.
$custom_theme
./globals.php
Тема оформления, которая будет задействована вместо темы по умолчанию.
$db_prefix
./globals.php
Префикс, который добавляется ко всем таблицам базы данных.
$db_type
./globals.php
Тип используемой базы данных
$db_url
./globals.php
Адрес базы данных. Подробная документация, представлена вdefault.settings.php.

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

Константы

Имя Описание
BLOCK_CACHE_GLOBAL
modules/block/block.module
Это блок одинаков для всех пользователей на всех страницах
BLOCK_CACHE_PER_PAGE
modules/block/block.module
Этот блок может меняться в зависимости от показываемой страницы
BLOCK_CACHE_PER_ROLE
modules/block/block.module
Блок может меняться в зависимости от роли пользователя, просматривающего страницу, которой принадлежит блок. Это значение по умолчанию, которое используется, если для блока не указано иное.
BLOCK_CACHE_PER_USER
modules/block/block.module
Содержимое блока может зависить от того, какой пользователь просматривает страницу. Эта опция позволяет сэкономить вычислительные ресурсы на сайтах с большим количеством пользователей, но при этом она должна использоваться только если опция BLOCK_CACHE_PER_ROLE не предоставляет достаточных возможностей.
BLOCK_NO_CACHE
modules/block/block.module
Блок не должен кэшироваться. Эта настройку следует применять для простых блоков. В основном для тех, которые не выполняют ни одного запроса к базе данных, или если запрос кэша из базы данных будет более ресурсоёмким, чем генерация контента блока. А также для блоков, которые часто меняются.
BLOCK_REGION_NONE
modules/block/block.module
Означает, что блок не активирован ни в одном из регионов и не должен показываться.

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

Система доступа к нодам

Система доступа к нодам определяет кто и что может сделать с определёнными нодами.

Для определении прав доступа для ноды используется node_access(). Эта функция сперва проверяет, имеет ли пользователь разрешение 'administer nodes'. Такие пользователи имеют неограниченный доступ ко всем нодам. Затем вызывается хук hook_access() в модуле этой ноды (по умолчанию — node_content_access()), и возвращаемое значение, TRUE или FALSE, разрешит или запретит доступ. Например, это позволяет модулю blog всегда предоставлять доступ самому автору блога, а модулю book — всегда запрещать редактирование PHP страниц.

Если «нодовый» модуль не вмешивается в процесс ограничения доступа (возвращает NULL в hook_access()), тогда для этого используется таблица 'node_access'. Все такие модули опрашиваются при помощи хукаhook_node_grants() и в результате собирается список идентификаторов разрешений пользователя (grant IDs). Этот список сравнивается с таблицей по соответствию grant ID. Если в таблице присутствует запись с идентифкатором ноды или идентификатор ноды в таблице равен 0, то доступ к ноде (или нодам) разрешается. Отметьте, что эта таблица, по существу, является списком разрешений; любой совпадающий строки достаточно, чтобы разрешить доступ к ноде.
Читать далее »

Поисковый интерфейс

Поисковый интерфейс Друпал управляет механизмом глобального поиска по сайту.

Модули можно включать в систему поиска разных типов данных. Большую часть работы в системе поиска выполняет search.module, поэтому он должен быть разрешен для всех функций в работе поиска.

Есть три способа взаимодействия с системой поиска:

  • Для поиска конкретно в нодах реализуется nodeapi('update index') и nodeapi('search result'). Однако, необходимо учесть, что поисковая система уже индексирует весь видимый вывод ноды — все то, что отображается с помощью hook_view() и hook_nodeapi('view'). Обычно этого достаточно. Этот механизм стоит использовать лишь если необходима индексация дополнительных скрытых данных.
  • Реализация hook_search(). На странице /search будет создана вкладка поиска для разрабатываемого модуля, содержащая простую форму поиска по ключевому слову. Опционально можно реализоватьhook_search_item() для настройки отображения результатов.
  • Реализация hook_update_index(). Это позволит использовать в модуле друпаловский механизм индексации HTML для эффективного полнотекстового поиска.

Если модуль должен предоставлять более комплексные возможности поиска, необходимо реализовать их самостоятельно без hook_search(). В этом случае нужно определить его, как локальную задачу (вкладку) на странице /search (например, /search/mymodule), чтобы пользователи легко смогли его найти.
Читать далее »