(ремарка : речь идет о 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, На первой полосе.
'Вы можете оставить отклик
Мало букафф? Читайте есчо !
Июль 14, 2023 г.
Как без хуков preprocess в Drupal добавить, например, атрибут target для ссылки в шаблоне?
Например, возьмем штатный шаблон file-link.html.twig:
[crayon-69981bc14b2c8018823907/]
Используем фильтр merge, добавляя нужные атрибуты:
[crayon-69981bc14b2d6367896359/]
Читать
Март 6, 2019 г.
Для mySQL 8й версии эта статья не актуальна, т.к. там появилась целая серия замечательных функций, в том числе ROW_NUMBER(). Но пока на значительном количестве хостингов используется 5я версия.
Приём прост: требуется объявить переменную и инкрементировать ...
Читать
Июнь 15, 2016 г.
Всем привычна схема, при которой известно имя файла, и вы совершаете с ним какие то манипуляции. В PHP много функций, которые предоставляют именно такой функционал.
Что делать, когда есть только file handle? Как получить имя открытого файла?
...
Читать
Апрель 15, 2017 г.
Раздражает короткое время сессии в phpMyAdmin при работе с Open Server? Тогда вы попали по адресу. Меня тоже это раздражает - всего 1440 секунд, о чем они думали вообще? :).
Сегодня дошли руки, чтобы сделать более удобные настройки.
Файлы конфигурации ...
Читать
Ооо, спасибо! Часа два мучался с этим, пытаясь понять и нагуглить, почему же 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
Присоединяюсь, учим мат часть :)
Спасибо за содержательный комментарий.