Пишем модуль под Друпал

Пишем модуль под Drupal. Часть 9. Выводим трэкер в профиле пользователя

ср, 21.04.2010 10:47 :: olk

В этой части мы избавимся от стандартного модуля tracker и организуем вывод трэкера с сообщениями пользователя в его профиль. А заодно проделаем не большой трюк, чтобы не потерять ссылки на поисковиках относящиеся стандартному трэкеру. Также мы поправим вывод заголовков.

В файле cctracker.module изменим наш хук menu и добавим вспомогательную функцию _cctracker_user_access, отвечающую за доступ к трэкеру профиля пользователя.

Шаг номер 20: Меняем функция cctracker_menu.

Пишем модуль под Drupal. Часть 8. Оформляем вывод

чт, 15.04.2010 13:47 :: olk

В этой небольшой части мы оформим вывод трэкера (а проще - займемся «украшательством»)

Шаг номер 18:

Для начала в графическом редакторе создадим две небольшие картинки (иконки обозначающие «прикрепление» материала и иконку сигнализирующую о том, что нода помещена на главную страницу), я не стал сильно извращаться и сделал две несложные пнг-эшки размером 32х32.

Кнопка - кнопка (knopka.png)

На главной - на главной (promote.png)

Пишем модуль под Drupal. Часть 7. Переделываем вывод трэкера

ср, 14.04.2010 11:03 :: olk
В этой части мы переделаем вывод страницы трэкера с учетом дополнительных данных сохраняемых в ноде. Нам надо исключить ноды помеченный как не публикуемые в трэкере, и поместить сверху списка ноды, помеченные как «закрепление вверху трэкера». Все изменения мы будем проводить в файле cctracker.page.inc.

Шаг номер 16:

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

Пишем модуль под Drupal. Часть 6. Хуки form_alter и nodeapi

вт, 13.04.2010 14:39 :: olk
Теперь нам надо позволить пользователям (с разрешением на закрепление ноды вверху трэкера и/или запрещением публикации ноды в трэкере) при редактировании материала как-то устанавливать данные признаки. В этом нам поможет хук form_alter.
Хук form_alter позволяет добавить либо изменить элементы формы еще до рендеринга этой самой формы, причем если это форма редактирования (добавления) ноды, то в элементе $form['#node'] будет присутствовать текущий объект ноды.

Пишем модуль под Drupal. Часть 5. Хук пермишен и файл инсталляции

вт, 06.04.2010 13:30 :: olk

Помните, в начале статьи я говорил о том, что мы добавим несколько «фич» к нашему трэкеру:

  • возможность не показывать конкретный материал (в независимости от типа)
  • возможность закрепить материал вверху списка.
Причем эту возможность мы дадим не всем пользователям, а только пользователям с определенными ролями. Поэтому настала пора определить хук perm.
Данный хук определяет права доступа пользователя. После реализации хука на странице прав доступа пользователей появится возможность разрешить или запретить определенные действия, выполняемые модулем. Для проверки права доступа используется функция user_access().

Нам надо регулировать доступ к двум действиям нашего модуля:

  • Разрешение на запрет размещение ноды в трэкере
  • Разрешение на закрепление ноды вверху списка трэкера.

Пишем модуль под Drupal. Часть 4. Добавляем закладку «Сообщения с моим участием»

чт, 01.04.2010 13:47 :: olk

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

Ну а что бы было совсем интересно (не повторять же код модуля tracker), добавим еще закладочку с материалами, опубликованными текущим пользователем, и закладочки с разбивкой по типам материалов (выбрать тип материалов можно будет на странице настройки модуля)

Шаг номер 8: Первое, что надо сделать, это модифицировать код функции cctracker_menu, что бы определить закладки на странице вывода.

Пишем модуль под Drupal. Часть 3. Вывод трэкера.

ср, 31.03.2010 14:38 :: olk

Ну вот мы и добрались до вывода трэкера. Сначала просто повторим стандартный вывод (c небольшими дополнениями). Для более структурированной организации нашего модуля, все, что связано с выводом, будем размещать во вновь созданном файле cctracker.page.inc

Шаг номер 6:

Пишем модуль под Drupal. Часть 2. Создаем форму конфигурации модуля.

вт, 30.03.2010 22:33 :: olk

Друпал версии 6.x дает возможность подгружать файлы по мере необходимости (вернее не совсем автоматом, а в зависимости от текущего пути), воспользуемся этой возможностью и создадим файл для страницы администрирования модуля.

Шаг номер 4:

Пишем модуль под Drupal. Часть 1. Определение модуля.

вт, 30.03.2010 20:36 :: olk

Для того чтобы Друпал «увидел» модуль, нам необходимо создать директорию (с именем соответствующим названию модуля) в пути где друпал ищет модули (обычно это /sites/all/modules) и создать два файла имя_моуля.info и имя_моуля.module.

Давайте, что бы перейти к конкретике и не оперировать вымышленными или условными именами, дадим нашему модулю имя. Назовем его для примера - cctracker. (В данном случае приставка «cc» - для тех, кто обладает чувством юмора, расшифровывается как - «Cool code») Итак приступаем.

Пишем модуль под Drupal

вт, 30.03.2010 20:13 :: olk

Начинаю цикл небольших статей, где на конкретном примере будет показано, как сделать свой модуль под Drupal.

Часто у новичков возникает мнение, что свой модуль, это нечто сверхсложное и не достижимое. Хочу развеять этот миф, конечно, если вы владеете PHP и основами SQL. Также желательно хоть немного ознакомится с Drupal API, но в принципе, по мере создания модуля, мы «пройдемся» по основным возможностям Drupal api.

Построение модулей для разных целей описано на официальном сайте, на странице «Module developer's guide», но для тех, у кого трудности с переводом или пониманием, я попробую шаг за шагом пройти с вами процесс построения модуля.

Подписка на Пишем модуль под Друпал