Главная » Drupal » Документация Drupal (Page 2)

Документация Drupal

Файловый интерфейс

Константы

Имя Описание
FILE_STATUS_TEMPORARY
includes/file.inc
Информация обо всех загруженных в Drupal файлах храниться в таблице {files}. Одним из атрибутов каждого файла является статус — он определяет, является ли файл постоянным или временным. Если файл временный, то встроенная система сбора мусора Drupal удалит его через определённый промежуток времени.

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

Генерация форм

Функции, позволяющие выводить и обрабатывать HTML формы.

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

Функция drupal_get_form() обеспечивает автоматическое отображение, извлечение информации и обработку результатов форм. Например:

// Показать форму регистрации.
$output = drupal_get_form('user_register');

Формы могут строится и отправляться программно, без пользовательского ввода, при помощи функцииdrupal_execute().

Более подробно о работе форм, а также форматах и структуре массивов, которые используются для определения форм, можно прочесть в коротком введении и справочнике по Forms API. Читать далее »

Система темизации

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

Уровень представления Друпала реализован в виде модульной системы — уровня темы (theme layer). Каждая тема контролирует почти весь вывод Друпала и имеет полный контроль над CSS.

Внутри Друпала, уровень темы реализуется с помощью функции theme(), которая передает имя компоненты темы (хук темы) и аргументы. Пример: theme('table', $header, $rows).

Также функция theme() может содержать массив хуков темы, которые могут быть использованы для реализации “fallback” (использования встроенной функции темы, если не будет найден более специфичный хук), для лучшего контроля вывода. Пример: функция theme(array('table__foo', 'table'), $header, $rows)попытается найти хук 'table__foo', а если не найдет, то будет использована встроенная функция темизации'table'.

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

Начиная с 6-ой версии Друпала, каждый хук темизации, определенный в модуле, нужно зарегистрировать в этом модуле, чтобы Друпал знал, где искать этот хук, и чтобы упростить темам поиск и модификацию этих хуков.
Читать далее »

Система меню

Определяет навигационные меню и преобразует запросы страниц в вызовы функций, привязанные к путям на сайте.

Система меню Друпала управляет как навигационной системой c точки зрения пользователя, так и callbackсистемой, которую Друпал использует, чтобы реагировать на URL полученный из браузера. Поэтому, правильное понимание системы меню является основой для создания сложных модулей.

Система меню Друпала поддерживает простую иерархию определяемую путями. Реализации hook_menu()определяют пункты меню и назначают им пути (которые должны быть уникальными). Система меню собирает эти пункты и определяет иерархию меню из путей. Например, если пути определены как a, a/b, e, a/b/c/d, f/g, и a/b/h, то система меню сформирует следующую структуру:

  • a
    • a/b
      • a/b/c/d
      • a/b/h
  • e
  • f/g

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

В ответ на запрос страницы, система меню проверяет был ли путь, который запросил браузер, зарегистрирован как пункт меню с коллбеком (функцией, отвечающей данному пути). Если нет, то система продолжает искать в дереве меню наиболее полное совпадение (с коллбеком), которое можно найти. Если путь a/b/i был запрошен в дереве, показанном выше, будет использован коллбек для a/b.
Читать далее »

Schema API

Схема БД в Друпале — структурированный массив, представляющий одну или более таблиц, и их связанные ключи и индексы. Схема определяется хуком hook_schema(), который обычно находится в файлеmodulename.install.

Реализовав hook_schema() и описав в нем таблицы, которые должен создавать модуль, можно легко создавать и удалять эти таблицы во всех поддерживаемых СУБД. Отпадает необходимость работать с разными диалектами SQL для создания или изменения таблиц в поддерживаемых СУБД.

Хук hook_schema() должен вернуть ассоциативный массив, ключи которого соответствуют таблицам, которые определяет модуль.
Читать далее »

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

Позволяет выполнять один программный код на разных СУБД.

Гибкий уровень абстракции Друпал позволяет легко работать с различными типами баз данных, напримерMySQL или PGSQL. Он максимально сохраняет синтаксис и мощь SQL, изменяя отдельные параметры запросов для разных типов баз и оставляя основные элементы безопасности неизменными.

Большинство обращений к базам данных выполняется с помощью функций db_query() или db_query_range(). Разработчикам стоит также обратить внимание на функцию pager_query(), которая используется в случае запросов, результаты которых нужно будет вывести постранично, и функцию tablesort_sql(), которая формирует запросы для сортируемых таблиц.
Читать далее »

Система модулей (хуки Drupal)

Позволяет модулям взаимодействовать с ядром Drupal.

Модули, используемые в Друпале, работают по принципу «хука» (англ. hook — крючок, ловушка). Хук — это PHP функция, которая имеет название module_name_hook_name(), где «module_name» — название модуля (имя файла module_name.module), а «hook_name» — название самого хука. Каждый хук имеет определенный набор параметров и типов результатов.

Для расширения функциональности тех или иных частей Друпала, нужно реализовать соответствующий хук. Когда Друпал хочет взаимодействовать с модулями, он определяет какие хуки предоставляются модулями и вызывает эти хуки для всех включённых на сайте модулей.
Читать далее »

Организация сайтов на Drupal: обзор возможностей

Information Architecture (often abbreviated «I.A.») is the practice of structuring information (knowledge or data). These are often structured according to their context in user interactions or larger databases. — Wikipedia.com

Drupal предоставляет несколько путей для организации содержания: макеты, навигацию, стили, классификацию и модули. Он служит основой для управления информацией как содержанием через приложения называемые модулями. Модули обеспечивают взаимодействие пользователя с содержанием. Каждый модуль содержит интерфейс для настройки своих возможностей. Права доступа к модулю устанавливаются на основании ролей.

На сегодняшний день существует более 1000 модулей, который позволяют настроить многие параметры не используя программирование. Полная настройка может быть завершена правкой CSS, PHP и AJAX. В то время как каждый сайт имеет свою сложность, быстро и существенно изменить темы, права ролей, настройки модулей можно полностью за несколько часов.

Макеты. Drupal поддерживает размещение содержания используя три пути: блоки, колонки и меню. Блоки можно расположить в 5 областях: слева, справа, в заголовке, в подвале и в содержании. Можно расширить возможности по размещению и в другие области. Drupal может иметь оформление с разным количеством колонок, наиболее популярен трёхколоночный макет с плавающей центральной колонкой. Макеты могут быть созданы с использованием PHP и оформлены при помощи CSS. Drupal также имеет настраиваемую систему меню, которая обеспечивает навигацию и располагается в блоках.
Читать далее »

Типичное применение Drupal

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

Обратная совместимость: капля всегда движется

Развитие Drupal не стоит на месте и система постоянно развивается вместе с развитием технологий. Каждая версия Drupal имеет большие, часто коренные изменения. Однако, хотя каждая новая версия системы содержит решения для стабильного и надёжного обновления, позволяя сохранить ваши данные, каждая новая версия Drupal содержит небольшие или полностью несовместимые с предыдущими версиями нововведения.

Объясняет создатель Drupal Dries Buytaert:

Когда я выпустил первую версию Drupal, я решил не сохранять обратную совместимость, потому что меня интересовали возможности предоставляемые новыми технологиями. Обратная совместимость требует поддержки старых технологий, что снижает производительность системы. Таким образом мы решили, что нет необходимости сохранять старый код, но необходимо сохранять данные. Мы хотим сделать Drupal простым, быстрым, маленьким и поддерживающим новые технологии. Я сосредоточился на том, чтобы сделать код Drupal маленьким и красивым. Я провёл много дней делая его лучше, используя меньше строк кода и более элегантным чем в других системах. И со мной это делали много других людей.
Читать далее »