Всем привет!
По данной теме поискал ответы на форуме, но так ничего толком и не нашёл, поэтому прошу направить в нужном направлении.
Разбираюсь с Drupal и пишу пробный модуль.
Установка модуля: файл module.install
Хочу сделать, чтобы при установки модуля, автоматически создавался новый пользователь.
Почитал книжку, статьи - алгоритм реализации ясен, начал писать код и ...
Вот тут и встал. Никакого отладочного механизма.
Я даже и не могу толком понять, запускается моя функция или нет.
Создал файл в папке с модулем - название_модуля.install
в нём объявил функцию
название_модуля_install(){}
Для начала хотелось бы вообще увидеть отклик это функции, т.е. использовать какой-нибудь отладчик
Поискал на форуме решения. Из того что нашёл:
1. drupal_set_message('Install function!');
никакой реакции...
2. watchdog() - пишет в логи. Но к сожалению документация по данной функции оставляет желать лучшего - вот она
И где расположен этот файл?
3. Написал свою функцию записи в лог. (тут оговорюсь, с php столкнулся лишь недавно)
тестировал на "не Drupal" сайте, т.е. просто запускал скрипт - всё работает. Скопировал функцию в файл module.install - никакой реакции. Что опять наводит на мысли, что drupal туда и не заходит, но сказать наверняка опять же нельзя... в общем я запутался... помогите!
Вот функция записи:
<?php
function my_print($string)
{
$fp = fopen('c:\\debug.txt', 'a');
fwrite($fp,"\r\n");
fwrite($fp, $string);
fclose($fp);
}
?>
Комментарии
что в ней непонятного? на той же странице есть 89 примеров как использовать эту функцию
Заработал watchdog, и, как я и предполагал, не вызывается функция module_install...
Скачал пример из книжки - там всё работает. Сделал всё тоже самое - у меня не работает.
функция выглядит вот так:
<?php
function newone_install() {
watchdog('content', 'Install func');
}?>
Имена проверил ни один раз, функция newone_module() вызывается, выводится меню, форма настройки модуля описана в другом файле и тоже срабатывает. watchdog проверял именно в функции newone_module() - выполняется успешно, запись появляется.
А вот функции установки почему-то игнорируется
в чём может быть проблема?
Сам с собой тут веду беседу)))
В общем проблема частично решена, но вопрос отладки так и остаётся.
Функция install срабатывает, но только при первой установки (сам виноват - забыл...).
Но вопрос с отладкой не до конца прояснился. Выходит, чтобы отлаживать установщик модуля, надо каждый раз удалять строку моего модуля из таблицы systems. Это единственный вариант?
Нет конечно. Можно отладить функционал в другом месте, а потом поставить его в установщик, и проверить интеграцию. Ну, скажем сделать что-то вроде этого:
<?php
function module_perform_install_functions(){
// Here all we need
}
function
module_install(){module_perform_install_functions();
}
function
module_debug(){// Or even module_install()
module_perform_install_functions();
}
function
module_menu(){return array(
'module/debug' => array(
'title' => 'Module debug',
'page callback' => 'module_debug'
)
);
}
?>
devel - reinstall