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

Октябрь 18, 2023 г.

Сущность возвращает язык в контексте выбранного языка, но иногда нужно получить оригинальный язык node или другой entity. Вот так выглядит запрос в контексте: [crayon-6acc1eff68afe909124428/] А так можно получить код языка оригинальной версии ...

Читать

Чистим пользовательский ввод числа в javascript

Февраль 3, 2017 г.

Это еще одна из функций-хелперов. На этот раз мы пытаемся прочитать введенное пользователем число средствами javascript. Javascript уже имеет довольно не плохую функцию parseFloat(strValue). Но она обладает некоторыми особенностями. В частности, ...

Читать

Прерывание цикла jQuery функции $.each()

Ноябрь 17, 2018 г.

Часто использую функцию jQuery API each(), но иногда требуется досрочно прервать выполнение этого цикла. Итак, как выйти из $.each()? Обработка происходит внутри функции, и на выходе требуется сигнализировать API что делать дальше. Перебор элементов ...

Читать

301 редирект на PHP

Июнь 6, 2023 г.

Чтобы перенаправить на другую страницу или даже другой домен, достаточно использовать следующий код. [crayon-6acc1eff68edf201878993/] Использовать редирект на уровне кода следует только, если других возможностей перенаправления нет. Скорее ...

Читать
 

Комментарии к «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