Drupal модуль, создаем страницу
Не освящал никаких тем в блоге уже несколько дней. Действительно навалилось много дел и забот, сейчас появилась возможность исправить свою ошибку.
Как то я говорил, что по мере изучения CMF Drupal, я буду рассказывать об этом. Вот совсем недавно передо мной стала задача, которая заключается в том, чтобы написать модуль под Drupal, только отображение его будет не в блоке, а на одной из страниц сайта. Его функция – импорт данных в mysql из .csv файла, но об этом позже. Считаю что на drupal.org недостаточно подробно расписано пояснение о создании своих страниц, потому далее покажу чему научился.
Итак, чтобы программно создать свою страницу для Drupal, нам необходимо будет для начала создать свой модуль. Как это делается я показывал здесь. Допустим, что название нашего модуля будет dm.module. Соответственно для создания странички нам понадобится хук – dm_menu. Подробнее у хуках можно прочитать на русском сайте drupal.ru или официальном, английском сайте – drupal.org.
Далее распишу минимальный код для создания drupal-страницы с комментариями:
function dm_menu() { //применяем наш хук
$items = array(); //этот массив необходим для передачи необходимых данных друпалу (читайте подробнее о hook_menu)
$items['pagegood'] = array(’title’ => t(’Какая-то страница’), //здесь pagegood это будет название нашей страницы, а title соответственно титл страницы.
‘page callback’ => ‘_dm_page’, //вызываем функцию построения страницы, она находится немножко ниже в коде
‘page arguments’ => array(0), //передаем необходимый аргумент функции, которая строит страницу, в нашем случае array(0) будет равно ‘pagegood’
‘access arguments’ => array(’access content’), //устанавливаем права доступа к странице
‘type’ => MENU_NORMAL_ITEM,
);return $items; //возвращаем массив
}function _dm_page($page){ //это уже совсем не хук, а наша функция для построения страницы, в нашем случае переменная $page будет равна значению ‘pagegood’
switch ($page){ // что такое switch можно прочитать в любом справочнике php, тогда сразу станет ясно зачем здесь оставшиеся строчки
case ‘pagegood’:break;
}
return ($page);
}
Теперь этот код создаст пустую drupal-страницу с титлом “Какая-то страница”. Дальше программим для нее что угодно
. Конечно это не единственный способ, есть несколько других.
Если возникнут вопросы – пишите. Я еще не профессионал в сфере веб-разработок, поэтому всегда будет интересно послушать дополнения так же более опытных людей.
----------------------------------Понравилась статья? Подпишись на обновление блога через RSS или e-mail! 

А где, собственно, функция, которая исполняет код импорта с файла в базу?
Ну, или хотя-бы указание места, куда пишется этот функционал: в _dm_page($page) или в отдельных функциях?
Валера, _dm_page модуль должен получать форму, которая в свою очередь должна уметь импортировать.
То есть в конечном итоге получится что-то вроде:
function _csv_import_page($page){
return drupal_get_form(’csv_import_form’); //csv_import_form и есть та самая функция формы
return ($page);
}
Я писал полный скрипт импорта, попробую найти, кажется я его таки дописал тогда.
А как проверить, что модуль работает?
На странице модулей я его подключила. Захожу по ссылке http://yoursite.pp.ua/test-drupal/?q=имя_модуля и вижу:
“Page not found
The requested page could not be found.”
Что я делаю не так?