(ремарка : речь идет о 6-й версии drupal)
Если вам иногда приходится писать модули для Drupal, или вы вдруг этим только решили заняться, то однажды вы, возможно, захотите написать код модуля полностью соответствующий спецификациям и рекомендациям drupal.org.
Тогда часть кода вашего модуля неизбежно начнет кочевать в файл module-name.install. Вы напишите зацепку hook_install, сделаете там, к примеру, объявление таблиц (конечно же через drupal_install_schema и hook_schema). Переустановите модуль… и тут вас ждет небольшой неприятный сюрприз — hook_install не вызовется. В принципе, drupal вообще не заметит созданного вами module-name.install файла.
По всей видимости, инсталляция может быть запущена единожды и, повторно инсталлируя модуль, drupal считает необязательным выполнять код инсталляции. После первой установки он создаёт запись в system о данном модуле. Запись эту следует удалить. Найдите в таблице system запись c полем filename == «modules/module-name/module-name.module»; жмите delete. После этого установите ваш модуль. Теперь hook_install должен сработать.
Данная запись опубликована в 19.01.2010 23:08 и размещена в рубрике Drupal, На первой полосе.
'Вы можете оставить отклик
Мало букафф? Читайте есчо !
Январь 19, 2023 г.
Допустим, у вас запущен локально сервер, и есть база myBase с и учетка пользователя UserName/MyPass. Вы хотите выполнить запрос "SELECT * FROM TABLE" из командной строки.
Команда передаётся с параметром -e, в общем виде запрос будет выглядеть так: ...
Читать
Август 2, 2015 г.
Продолжая эксперимент, могу отметить, что в данном примере я должен упомянуть ключ где то в тексте статьи.
На сколько абсурдно словосочетание полиуретановая астролябия? Возможно ли из данного материала сделать названный прибор? По всей видимости, часть ...
Читать
Март 24, 2020 г.
Для отладки или выполнения какого то разового кода иногда требуется выполнить php код в системном окружении вашего сайта на Drupal.
Без drush приходится добавлять код вроде следующего в файл темы (а в последствии его удалять от туда):
[crayon-6a37e2cb5bd7b570901197/] ...
Читать
Март 20, 2010 г.
Приближается к окончанию создание проекта att-iveco.ru. Представительский сайт регионального дилера компании iveco. Технически проект готов, осталось завершить ...
Читать
Ооо, спасибо! Часа два мучался с этим, пытаясь понять и нагуглить, почему же install не вызывается :(
>Часа два мучался
В отличие от моего коллеги, я развлекался с хук_инсталл часа 4, прежде чем полез гуглить.
Спасибо.
«(ремарка : речь идет о 6-й версии drupal)»
Для 7-й версии тоже актуально
В Drupal есть действия: install — установка модуля, disable — отключение модуля, enable — включение модуля, uninstall — удаление модуля.
Многие не замечают вкладку «Удаление» на странице модулей. и думают, что снятие чекбокса у модуля — это удаление. однако это не всегда так.
если у модуля существует hook_uninstall(), то снятие чекбокса на странице модулей приведет не к удалению (запуск hook_uninstall()), а лишь к отключению модуля (запуск hook_disable()).
Описываемая проблема как раз из области не хватки знания. Переустановка модуля это:
1. На странице модулей отключить модуль.
2. Если модуль остался на вкладке «удаление» — удалить модуль.
3. Важно: если вы изменяете схему (hook_schema()), то проверьте удалены ли таблицы вашего модуля в базе. если не удалены — делаем из бэкап и удаляем.
4. Включаем модуль снова.
Учим мат часть =))
http://api.drupal.ru/api/group/schemaapi/6
Присоединяюсь, учим мат часть :)
Спасибо за содержательный комментарий.