Drupal и hook_install

(ремарка : речь идет о 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 должен сработать.

Мало букафф? Читайте есчо !

Ошибка в Drupal Adding non-existent permissions to a role is not allowed. The incorrect permissions are "..."

Июль 25, 2023 г.

Такое иногда вылазит как следствие удаления кастомных классов/модулей, создающих собственные права или инициализирующие права через родительский модуль. Как это пофиксить? Права из роли не были удалены штатно, потому придется сделать следующее: ...

Читать

Российские колонии Америки

Март 1, 2014 г.

Лето 1784 год. Экспедиция под командованием Г. И. Шелихова (1747—1795 гг.) высадилась на Алеутских островах. В 1799 году Шелихов и Резанов основали Российско-американскую компанию, управляющим которой стал А. А. Баранов (1746—1818 гг.). Компания вела ...

Читать

Обновить path alias в таксономии

Октябрь 24, 2024 г.

Пример кода работы с entityQuery и Entity API. В данном примере мы пройдемся по синонимам терминов таксономии и произведем простую замену или создадим новый синоним согласно установленному в системе шаблону. В 8ке синонимы (path_alias) - это ...

Читать

Тонкости настройки в .gitignore

Июль 17, 2017 г.

Настройки в файле .gitignore позволяют исключить из списка файлов сканируемых GIT, все то что отслеживать не надо. Обычно это так называемые юзер-файлы, изображения, архивы, документация и т.п. В данной статье рассмотрим типовой случай настоек в .gitignore. ...

Читать
 

Комментарии к «Drupal и hook_install»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий:

Много комментариев в “Drupal и hook_install”

  1. Николай:

    Ооо, спасибо! Часа два мучался с этим, пытаясь понять и нагуглить, почему же install не вызывается :(

  2. Александр:

    >Часа два мучался
    В отличие от моего коллеги, я развлекался с хук_инсталл часа 4, прежде чем полез гуглить.
    Спасибо.

  3. Васек:

    «(ремарка : речь идет о 6-й версии drupal)»

    Для 7-й версии тоже актуально

  4. Евгений:

    В 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