PHP не допускает дублирования имен функций. node_form_submit
, который на самом деле не является ловушкой, а обработчиком отправки формы, реализован в модуле узла. Вот почему вы получаете ошибку.
Все хуки всегда должны начинаться с названия вашего модуля / темы. Это сделано, чтобы избежать точной проблемы с дублирующимися именами функций, которые у вас есть.
Если вы хотите добавить в форму обработчик отправки формы, вам нужно использовать hook_form_alter
в форме и добавить обработчик отправки в $form['submit']
.
Модули:
При разработке модуля вам необходимо использовать файл module_name.module
. Вот куда должно идти ядро вашего кода вместе с каждой реализацией хука.
Тема:
При разработке темы вы должны использовать файл template.php
для всех функций предварительной обработки, переопределения тем, реализации ловушек и т. Д.
Что не так:
Вы говорите, что у вас обоих есть модуль и тема bluemarine. Если у вас действительно есть оба, вы должны переименовать их.
При использовании hook_form_alter
необходимо указать $form_id
, чтобы не переопределять все формы.
Если вы хотите, чтобы ваши эффекты на $form_state
проходили, вам нужно передать его по ссылке, используя обозначение &
.
Обновление 2:
Если вы не используете Drupal 7, вы не можете использовать hook_form_alter
в файле темы template.php
. Вам нужно будет создать собственный модуль для реализации любого хука.