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 должен сработать.

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

Подключение CSS/JS к форме Drupal

Октябрь 12, 2017 г.

Если необходимо подключить стили или скрипты к своей форме, как это сделать? Первый подход - добавить необходимые стили и скрипты в тему оформления. В этом случае, если к примеру, идет речь о форме редактирования, которая отображается в шаблоне ...

Читать

Как в Delphi записать в файл

Октябрь 16, 2015 г.

Это можно сказать хрестоматийная задача. Как мы это делали ещё в школе на Турбо Паскале (Turbo Pascal), так это до сих пор работает в Delphi. Конечно же похожие примеры можно найти в сети, но Интернет - большой, а хороших примеров мало. Потому я время ...

Читать

Инициировать скачивание файла без обращения к серверу, используя js

Июль 31, 2023 г.

Если файл генерируется на фронт-енд, то как инициировать скачивание файла в js? Давайте посмотрим. Скачивание инициируется после нажатия пользователем на ссылку в браузере. Потому мы создадим элемент ANCHOR и выполним клик по нему. Так как ...

Читать

Основы программирования ботов на SikuliX

Июнь 10, 2016 г.

SikuliX имеет ряд особенностей, о которых я расскажу далее. Этот IDE разработан с целью автоматизации рутины, т.е. для создания роботов, в том числе и для игр. Скрипт не вмешивается в обмен данными по сети или работу игрового клиента. Он действует ...

Читать
 

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