logo

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

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

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

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

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

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

Scroll

hook_permission Drupal 7 разрешения на доступ для разных ролей

02/12/2019, by Ivan

На прошлых уроках мы выводили страницы и блоки в разных местах, мы также использовали свойства 'access arguments', 'access callback' для задания ограничений на доступ к страницам. В этом уроке мы будем создавать возможность более гибкого редактирования правда доступа к операциям посредством страниц администрирования. Для этого мы будем использовать hook_permission() (в 6ом Друпале это был hook_perm()).

hook_permission()

Определяет разрешения для пользователей.

Hook_menu Drupal 7 создание страниц через модуль

02/12/2019, by Ivan

В прошлом уроке мы рассмотрели как выводить информацию из БД с помощью API Drupal,  а именно с помощью хуков hook_block_info()hook_block_view(). В этом уроке мы будем выводить страницы, а точнее с помощью хука hook_menu, подключать страницу к другим частям друпала: меню, модулю перевода, шаблонам и т.д.

Drupal 7 hook_block_info() и hook_block_view() выводим информацию в блоке

02/12/2019, by Ivan

В прошлом уроке мы создали модуль для Друпал 7, в этом уроке мы продолжим расширять возможности нашего модуля. Мы добавим вывод блока через хук hook_block_view(), а также hook_block_info(). В этом блоке будет информация о последних пользователях на сайте с ссылкой на их страницу.

Начну с описания hook_block_info():

Определяет все блоки создаваемые модулем.

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

Из чего состоит модуль Drupal 7?

02/12/2019, by Ivan

Прежде чем начать создавать наш модуль я еще расскажу немного о возможностях API Друпала. API предоставляет широкие возможности для работы с Таксономией, нодами, пользователями, ввода и вывода из БД. Для взаимосвязи модулей и ядра Друпала, а также модулей между собой, в Друпале есть система хуков. Хук это обратный вызов функции, то есть когда выполнение кода доходит до хука, то происходит добавление кода нашей функции, которую мы дописываем в своем модуле.

Создаем модуль на 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():