До сих пор мы использовали в элементах меню обычные имена путей Drupal, такие как menufun и menufun/farewell. Однако в Drupal часто применяются пути вида user/4/track или node/15/edit, где части пути формируются динамически. Рассмотрим этот процесс подробнее.
Когда Drupal сохраняет элемент меню в таблице menu_link, модулям предоставляется возможность изменить ссылку с помощью реализации hook_menu_link_alter().
При добавлении элемента меню в хуке меню можно использовать ключ type (тип). Если тип не определен, то используется стандартный тип MENU_NORMAL_ITEM. В зависимости от назначенного типа Drupal по-разному воспринимает элемент меню.
В настоящем разделе рассмотрены некоторые типичные подходы к часто встречающимся задачам, которые приходится решать разработчикам при работе с меню.
Работа Drupal зависит от базы данных. Контент, комментарии, таксономия, меню, пользователи, роли, права доступа и почти все остальное хранится в базе данных и используется в Drupal в качестве источника информации, необходимой для отображения контента на сайте и управления доступом к различным его аспектам. Внутри Drupal имеется облегченный уровень абстракции баз данных — между кодом и самой базой данных. Этот уровень абстракции устраняет значительную часть сложностей взаимодействия с базой данных и защищает Drupal от различий между механизмами разных СУБД. В данной главе вы узнаете, как работает уровень абстракции баз данных и как его использовать. Вы увидите, как модули могут изменять запросы. И, наконец, вы научитесь с помощью API-интерфейса схемы Drupal вставлять в файл .install модуля запросы, необходимые для создания и изменения таблиц базы данных.
Работу с API-интерфейсом абстракции баз данных можно полностью оценить, только попробовав отказаться от него. Были ли у вас проекты, где требовалось изменить СУБД, и вы целыми днями просматривали код, чтобы модифицировать в нем вызовы функций и запросы, специфичные для конкретной СУБД? Работа с уровнем абстракции позволяет не задумываться о различиях в именах функций для различных СУБД, а также о совместимости запросов с ANSI SQL — т.е. вам не придется писать различные запросы для различных СУБД.
Drupal автоматически устанавливает подключение к базе данных во время обычного процесса загрузки, поэтому беспокоиться об этом не надо.
Существует несколько способов выборки результатов запросов в зависимости от того, нужна одна строка или же набор результатов, диапазон результатов для внутреннего использования либо для отображения с разбивкой на страницы.