была такая задача - убрать ненужные табы при создании контента - аттачменты, настройки меню, прочее. конечному пользователю оно не надо)
делали это естественно form_alter'ом. как оказалось, из модуля всю форму видно не было - например я не видел в ней URL settings. Почему? потомучто к форме этот таб добавлялся тоже форм_альтером. и как дальше оказалось, форм_альтеры эти, из всех модулях применяются в порядке их следования, т.е буквально - по имени модуля. мой модуль начинался с буквы M, урловский - с буквы U. решение естественно нашли сразу - модуль с именем zzzz:) но так как этот подход посчитался негламурным, начали ковырят. итог: база данных, таблица system - где храниться список модулей сайта - имеет поле weight. по умолчанию вес 0, что нужно было - поставить "тяжелый" вес для нашего модуля, то есть form_alter, написанный в нем, применится в самую последнюю очередь. из админки весы эти редактировать нельзя, поэтому лезем в базу и редактируем там. все:-)
Комментарии
существует http://drupal.org/project/moduleweight
Да, наверное 90% людей проходит через модули типа "zzz"
о, модуль. да, как-то не подумал поискать модуль))
Есть еще и такой вариант:
в файле mymodule.install в хуке mymodule_update_N
$ret = array();
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
$max_weight = (int)db_result(db_query('SELECT MAX(weight) '.
'FROM {system} '.
"WHERE type = 'module'"));
$max_weight ++;
$ret[] = update_sql('UPDATE {system} '.
'SET weight = '. $max_weight .
" WHERE name = 'mymodule' AND type = 'module'");
break;
}
return $ret;
}
...
можно и в хуке mymodule_install() тоже