Дополнительные типы блоков (EBT) — новый опыт конструктора страниц❗

Дополнительные типы блоков (EBT) — стилизованные, настраиваемые типы блоков: слайдшоу, вкладки, карточки, аккордеоны и многие другие. Встроенные настройки для фона, DOM Box, плагины Javascript.

Демо EBT модули Скачать EBT модули

❗Дополнительные типы параграфов (EPT) — новый опыт работы с параграфами

Дополнительные типы параграфов (EPT) — набор модулей, основанный на аналогичных параграфах.

Демо EPT модули Скачать EPT модули

Scroll

Создаем модуль на Drupal, быстрый старт

02/12/2019, by Ivan

Начнем с api.drupal.org, откройте страницу хука hook_node_presave(), который срабатывает перед добавлением ноды.

http://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_validate/7

Хуки позволяют нам встроить наш код в обычный ход вещей в друпале, добавлять проверки, поля данных, элементы форм и т.д.

Добавляем наш модуль в папку sites/all/modules:

Работа с БД в Drupal 7 - урок 12 - Условия запросов (WHERE, HAVING, LIKE)

02/12/2019, by Ivan

Условие запроса позволяет выбрать только те записи, которые подходят под некоторые ограничения, например ноды созданные не раньше двух недель назад, термины в которых есть слово "друпал" и т.д. В SQL мы используем WHERE и HAVING чтобы задать ограничения на запросы SELECT, UPDATE, DELETE. В динамических запросах также реализован механизм для работы с условиями запросов. Этот механизм работает одинаково для всех трех типов запросов: выбора, обновления, удаления.

Концепция условных выражений

Условие содержится в специальном выражение задающем ограничение.

Работа с БД в Drupal 7 - урок 11 - Запросы слияния (MERGE)

02/12/2019, by Ivan

Запросы слияния это специальный гибридный тип запросов. Хотя синтаксис для этих запросов был определен в SQL 2003, фактически нет БД поддерживающих этот синтаксис. Однако большинство БД предоставляют альтернативную реализацию использования специфического синтаксиса. Конструктор запросов слияния в Drupal абстрагирует концепцию слияния запроса в структуре объекта, так что объект может быть скомпилирован для каждой БД по разному с учетом ее специфики.

Работа с БД в Drupal 7 - урок 10 - Запросы удаления (DELETE)

02/12/2019, by Ivan

Запросы удаления должны использовать конструктор запросов. Они начинаются с функции db_delete():

<?php
$query = db_delete('node', $options);
?>

Это запрос на удаление будет удалять записи из таблицы node. Заметьте что не нужно оборачивать имя таблицы в фигурные скобки, конструктор запросов делает это сам. Запросы на удаление используют Fluent API, то есть все методы (кроме execute()) возвращают объект-запрос на себе (все как у запросов на обновление и вставку).

Работа с БД в Drupal 7 - урок 9 - Запросы обновления (UPDATE)

02/12/2019, by Ivan

Запросы обновления должны всегда использовать конструктор запросов. Различные БД имееют специфические обработчики для LOB (Large OBject, такие как TEXT в MySQL) и поля BLOB (Binary Large OBject), так что уровень абстракции требуется для индивидуальных драйверов для реализации специфических обработчиков.

Запросы обновления должны начинаться с функции db_update():

Работа с БД в Drupal 7 - урок 8 - Запросы вставки (INSERT INTO)

02/12/2019, by Ivan

Запросы вставки всегда должны использовать конструктор запросов. Некоторые БД требуют специальных обработчиков для LOB (Large OBject, такие как текст в MySQL) и BLOB (Binary Large OBject) полей, так что уровень абстракции необходим для индивидуальных драйверов БД для реализации подобных обработчиков.

Запросы вставки начинаются с использования функции db_insert():

Работа с БД в Drupal 7 - урок 7 - Обработка результатов запроса (fetch)

02/12/2019, by Ivan

Запрос выборки всегда будет возвращать результат обработки запроса как 0 или больше записей. Есть несколько путей обработать данные результата запроса, которые вы можете использовать по своему усмотрению.

Наиболее часто результаты используются в виде цикла foreach().

Работа с БД в Drupal 7 - урок 6 - Изменение запроса на лету (hook_query_alter)

02/12/2019, by Ivan

Важной особенностью динамических запросов выбора является возможность других модулей изменять запросы на лету. Это позволяет другим модулям вставлять их собственные инструкции в запрос, тем самым влияя на поведение запроса или применить изменения во время выполнения запроса, например задать разграничение прав к нодам. Существуют 3 компонента изменения запроса на лету, tagging, meta data и hook_query_alter().

Работа с БД в Drupal 7 - урок 5 - Extenders (Расширения)

02/12/2019, by Ivan

Запросы выборки поддерживают расширения (extenders). Расширение дает возможность добавить функциональность к запросу выборки во время выполнения. Эта функциональность может быть дополнительным методом или обрабатывать поведение существующего метода.

Для этого используется в ООП паттерны (design patterns), расширения реализуют таким образом Decorator Pattern. Они прикрепляют дополнительные обязанности к динамическому объекту через предоставления гибкого альтернативного подкласса для метода расширения.

Работа с БД в Drupal 7 - урок 4 - Динамические запросы (SELECT)

02/12/2019, by Ivan

Пожалуй мы подобрались к самой интересной части Database API Drupal: динамические запросы. Динамические запросы называются так, потому что Drupal динамически дописывает строку запроса. Все запросы вставки, обновления, удаления или слияния могут быть динамическими. Запросы выборки могут быть как динамическими, так и статическими. Тем не менее, используйте динамические запросы и для запросов выборки.