Создание модуля Drupal

Опубликовано 2011.12.12 в разделе Drupal

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

7 Комментариев

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

  1. Гость 2014/01/27

    Подскажите, поставил я ваш исходник и возник вопрос, если обратиться не авторизованному пользователю к node/1/custom то ему пишет "Доступ запрещен" в функции стоит
    'access arguments' => array('access custom node tab'),

    Ответить

    1. Админ 2014/01/28

      Тогда вам нужно дописать хук:

      1. function test_permission() {
      2. return array(
      3. 'access custom node tab' => array(
      4. 'title' => t('Access my custom tab'),
      5. 'description' => t('Доступ к кастомному табу ноды')
      6. ),
      7. );
      8. }

      И в настройках прав разрешить этот доступ незарегистрированным пользователям.

      Ответить

  2. Админ 2013/04/26

    Ну незнаю. Если уж так надо-ищите исполнителя.

    Ответить

  3. Гость 2013/04/23

    Добрый день.
    мне нужен один функция чтобы он толька работал у моим сервером. (Server lunix - panel DirectAdmin) мне сказали за это нужно писать на языке C++ модуль для PHP с расширением .so
    если так я хочу под заказом купить один функция (.so) формате, которые он у мне ест как PHP формате. (надо переводить его php на .so) файл меньше 1 КБ. буду платить за заказу пишите цену.
    спасибо за внимания

    Ответить

    1. Админ 2013/04/24

      Добрый день. Я таких функций не пишу. А вам обязательно функция нужна в виде расширения для PHP? По каким причинам нельзя обойтись функцией, написанной на PHP?

      Ответить

      1. Гость 2013/04/25

        здравствуйте. у мне есть свае клиент. а этот функция для кодировка, я хочу скрыть свае функция чтобы не украли его.

        Ответить

        1. Гость 2015/11/11

          имя любимае твае...

          Ответить

Ваш комментарий успешно создан

Ваш комментарий

  • Для выделения кода оберните его в тэги <code> и </code>
  • Отметьте кубик