Модуль Drupal: создание страницы программным путем

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

За основу возьмём уже созданный модуль. На этой странице поздравим всех с наступающим новым 2009 годом, до которого осталось какая-то неделя. При создании страницы необходимо реализовать как минимум две вещи:

  1. Саму страницу, вернее её содержимое
  2. Привязать страницу к какому-то адресу - т.е. указать Друпалу, что по адресу http://ваш-сервер/new-year следует выводить эту самую страницу

Создание страницы в Drupal

Содержимое страницы возвращается функцией. Для нашего случая её можно сделать следующим образом:

<?php
function examplepage_new_year(){
    return
"Поздравляем Всех с Новым годом!";
}
?>

Создание пути к странице: хук menu

Путь к странице или ее адрес реализуется с помощью хука menu. В нем как раз и указывается сам путь, название ссылки в меню, права доступа и сама функция, обеспечивающая вывод содержимого на страницу. В данном случае это уже определённая нами функция examplepage_new_year.
Для начала нужно создать функцию examplepage_menu, результатом работы которой будет список путей, которые предоставляются данным модулем.

<?php
function examplepage_menu(){
  
$items['new_year']=array(
                 
'title' => 'С Новым Годом!',
                 
'description' => 'Поздравление к Новому Году!',
                 
'page callback'=>'examplepage_new_year',
                 
'access callback' => 'user_access',
                 
'access arguments' => array('access content'),
                 
'type' => MENU_NORMAL_ITEM
                 
);
    return
$items;
}
?>

Хук меню возвращает массив путей, которые реализуются модулем. Нам нужен только один адрес - задающий адрес к странице.
Каждый элемент массива задаёт одну страницу. Адрес страницы определяется ключом данного элемента. Параметры страницы хранятся в массиве, содержащем параметры этой страницы.
В данном случае используются следующие параметры:

  • title - название пункта меню и заголовок страницы.
  • description - описание страницы
  • page callback - название функции, возвращающей содержимое страницы
  • access callback - функция определяющая права доступа к странице, возвращает истину или ложь. В первом случае доступ, понятное дело, разрешён, во втором запрещён. В данном примере используется стандартная функция Drupal - user_access. Если ее возможностей не хватает, то можно написать свою.
  • access arguments - список аргументов для функции, описанной в access callback. Содержит список прав, необходимых для доступа к этой странице. Если пользователь обладает хотя бы одним из прав, он может ее просмотреть. В Drupal можно создавать собственные права, но в данном случае нам хватит стандартного access content. Это право определяет доступ к содержимому сайта. Назначить права отдельным группам пользователей можно в разделе "Разрешения" пункта меню "Управление"
  • type - тип ссылки. В данном случае используется тип меню по умолчанию - MENU_NORMAL_ITEM. Это обычная ссылка, при создании помещающаяся в меню пользователя, которая может отображается в меню, и может перемещаться в меню администратором или пользователем, обладающим соответствующими правами. Например, на рисунке видно, что данная ссылка помещена в раздел "Конфигурация". Названием ссылки является текст из title, ниже расположен текст из description.


На этом пока все. В данной заметке приведён простейший пример модуля. Этот модуль несовершенен и содержит некоторые неточности. О них будет рассказано в следующий раз.
Сам модуль находится в прикреплённом файле.

ВложениеРазмер
examplepage.zip1.05 кб

Ссылки с других сайтов

Пока ничего нет
Tags:

Комментарии:

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><h2><h3><img><p><b><img>
  • Строки и параграфы переносятся автоматически.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Each email address will be obfuscated in a human readable fashion or (if JavaScript is enabled) replaced with a spamproof clickable link.

Подробнее о форматировании

8 + 0 =
Вычислите и введите результат. Для вопроса "2+3" ответом будет "5".
Синдикация материалов