ertttert
Books-CMS.clan.su

Создание элемента меню

Для создания элемента меню предназначена функция hook_menu(). Она принимает массив элементов, которые необходимо добавить в меню, и каждый такой элемент сам представляет собой массив пар “ключ-значение”, определяющих атрибуты элемента меню. Ключи массива элементов меню приведены в табл. 4.1.

Таблица 4.1. Атрибуты “ключ-значение” для функции hook_menu()

Ключ Значение
title (заголовок) Обязательное поле, которое представляет непереводимый заголовок элемента меню
title callback
(обратный вызов заголовка)
Функция, используемая для генерации заголовка. По умолчанию это функция t(), поэтому заголовок (title) не нужно упаковывать в функцию t(). Если заголовок переводить не нужно, укажите значение FALSE
title arguments (аргументы заголовка) Аргументы, которые нужно передать функции t() или собственному обратному вызову
description (описание) Непереведенное описание элемента меню
page callback (обратный вызов страницы) Функция, которую нужно вызвать, чтобы вывести веб-страницу, когда пользователь посещает путь
page arguments (аргументы страницы) Массив аргументов, которые нужно передать функции обратного вызова страницы;
целые значения передают соответствующий компонент URL-адреса
access callback (обратный вызов доступа) Функция, возвращающая логическое значение, которое определяет, имеет ли пользователь право доступа к этому элементу меню;
по умолчанию это user_access(), если значение не унаследовано от родительского элемента меню
access arguments (аргументы доступа) Массив аргументов, которые нужно передать функции обратного вызова доступа;
целые значения передают соответствующий компонент URL-адреса
file (файл) Файл, который будет включен перед обратными вызовами;
это позволяет хранить функции обратных вызовов в отдельных файлах. Файл должен быть указан относительно каталога реализующего модуля, если не задано что-то другое в параметре file path
file path (путь файла) Путь к папке, содержащей файл, который указан в параметре file. По умолчанию это каталог с модулем, реализующим хук
weight (вес) Целое число, определяющее относительное положение элемента в меню;
элементы с большим весом находятся ниже. По умолчанию равно 0. Если вы не знаете, какое число присвоить, не задавайте это значение: обычно вполне годится стандартный алфавитный порядок
menu_name (имя меню) Необязательный параметр, с помощью которого можно указать собственное меню, если не нужно, чтобы элемент находился в меню навигации
type (тип) Битовое сочетание флагов, которые описывает свойства элемента меню;
используются следующие значения: MENU_NORMAL_ITEM — обычные элементы меню помещаются в дереве меню и могут быть перемещены или скрыты администратором;
MENU_CALLBACK — обратные вызовы просто регистрируют путь, чтобы при обращении к URL вызывалась нужная функция;
MENU_SUGGESTED_ITEM — модули могут “предлагать” элементы меню, доступные для активации администратором;
MENU_LOCAL_TASK — по умолчанию локальные задачи отображаются в виде вкладок;
MENU_DEFAULT_LOCAL_TASK — каждый набор локальных задач должен содержать одну “стандартную” задачу, которая при щелчке выполняет переход к родительскому пути.

Перехват управления процессом выполняется с помощью хука меню в модуле. Это позволяет определить элементы меню, которые будут включены в таблицу маршрутизатора. Давайте построим пример модуля по имени menufun.module, чтобы поэкспериментировать с системой меню. Мы выполним отображение пути Drupal menufun на PHP-функцию menufun_hello(), которую также предстоит написать. Вначале необходим файл menufun.info по адресу sites/all/modules/custom/menufun/menufun.info:

name = Menu Fun
description = Learning about the menu system.
package = Pro Drupal Development
core = 7.x
files[] = menufun.module

После этого понадобится создать файл sites/all/modules/custom/menufun/menufun.module, содержащий реализацию hook_menu() и функции, которая должна выполняться.

<?php
/**
* @file
* Модуль для работы с системой меню Drupal.
*/

/**
* Реализация hook_menu().
*/

function menufun_menu() {
 $items['menufun'] = array(
 'title' => 'Greeting',
 'page callback' => 'menufun_hello',
 'access callback' => TRUE,
 'type' => MENU_CALLBACK,
 );
return $items;
}

Приведенный код создает наше меню ($items['menufun']) за счет создания массива с тремя парами “ключ-значение”:

  • title — обязательное значение, которое определяет непереведенный заголовок элемента меню;
  • page callback — функция, которая будет вызываться при посещении пользователем пути меню;
  • access callback — обычно содержит функцию, которая возвращает логическое значение.
/**
* Обратный вызов страницы.
*/
function menufun_hello() {
 return t('Hello!');
}

Активация данного модуля приводит к вставке элемента меню в таблицу маршрутизатора, после чего Drupal может найти и выполнить функцию при переходе по адресу http://example.com/?q=menufun, как показано на рис. 4.3.

drupal
Обратите внимание, что мы определяем путь и отображаем его на функцию. Путь — это путь Drupal. Он определяется в виде ключа в массиве $items. Мы используем путь, совпадающий с именем модуля — это позволяет не затрагивать пространство имен URL. Но в принципе можно определить любой путь.
Всего комментариев: 0
Имя *:
Email *:
Код *:


Бесплатный конструктор сайтов - uCoz