Очень часто начинающие друпалеры задают один и тот же вопрос-
как создать таб(или вкладку,кому как нравится). Или ещё что-нибудь несложное. Более опытные пользователи предлагают им набор модулей. Или же написать свой модуль. В этом нет ничего сверхсложного, но многие тем не менее не могут это переварить. В этой статье я расскажу как написать модуль с минимальными затратами, используя только самое главное, без чего не обойтись по определению,отбросив всё более-менее сложное.
В конце статьи лежит прямая ссылка на исходники.Пожалуйста качайте, изучайте, задавайте свои вопросы.
Написать свой модуль не так сложно.
Необходимы хоть какие то знания php, хотя бы синтаксис и понимание Drupal API.
Почти в каждом модуле используется
hook_menu , для создания страниц на сайте.
hook_permission позволит установить уровень доступа к вашим страницам.
Это минимум.
Как использовать эти хуки?
В каждом хуке необходимо изменить слово hook на название вашего модуля. Таким образом вы получите название функции,которая сработает в том или ином случае(в зависимости от того какой хук вы используете).
Назовем наш модуль test. Тогда в файле этого модуля напишем функцию
test_menu. Эта функция должна возвратить элементы меню(адреса страниц).
Например:
function test_menu(){
$items['my_custom_url']=array( 'title' => t('Заголовок страницы'),
'description' => t('Эта страница скрыта от посторонних.'),
'page callback' => 'first_test_custom_page',
'access arguments' => array('access test module'), 'type' => MENU_NORMAL_ITEM,
);
return $items;
}
Кто знаком с php-понимают что это обыкновенный массив.
my_custom_url - адрес нашей страницы.
title - заголовок страницы
description - описание
page callback - функция,которая будет вызвана при открытии этой страницы
access arguments - аргумент, необходимый для определения уровня доступа к странице
type - тип страницы
Функция для установки прав будет выглядеть так:
function test_permission() {
'access test module' => array( 'title' => t('Access my test module'),
'description' => t('Доступ к первой кастомной странице моего модуля')
),
);
}
И наконец функция вывода самой страницы:
Внимание,эта функция уже не является хуком и начинаться она может как угодно.
function first_test_custom_page(){
return 'Содержимое страницы';
}
Помещаем эти три функции в
файл test.module
Также создаем
файл test.info - он необходим друпалу для распознания модуля.
В дальнейшие подробности я вдаваться не стану-качайте исходники-там всё более подробно о создании табов и всего прочего, но ничего лишнего;)