Нет вызова mytheme_form_alter

Главные вкладки

Аватар пользователя small small 5 октября 2010 в 15:35

Делаю тему, написал так:

function mytheme_preprocess_page(&$vars) {
  file_put_contents('__page', print_r($vars, true));
}

вызов вижу, написал так:

function mytheme_form_alter(&$form, &$form_state, $form_id) {
  file_put_contents('__form', print_r($form, true));
}

вызова нет. Подскажите почему? Я новенький в друпал, подскажите какой вообще алгоритм
чтобы тему делать? Тут есть вообще трассировка какая-то? Я придумал
file_put_contents('__form', print_r($form, true)); но может есть более правильный способ
двигаться вперед?

Комментарии

Аватар пользователя small small 5 октября 2010 в 16:24

использую
http://api.drupal.ru/
http://drupal.org/node/92657
http://www.drupal.ru/

какие есть еще хорошие источники по друпалу? Дюка поищу сейчас... есть ли в .chm формате хорошая документация? Какие есть хорошие оффлайн доки?
Кто-что использует в работе?

Аватар пользователя glu2006 glu2006 5 октября 2010 в 16:33

Значит используете по принципу "смотрю в книгу вижу фигу" где написано что hook_form_alter можно вызывать в теме?
hook_form_alter вызывается только в модулях, но никак не в template.php, в template.php можно перекрывать только препроцессы и theme функции.

с Вашей второй ссылки инфа:

function YOURMODULENAME_form_alter($form_id, &$form) {} - это типа теста на внимательность.

Аватар пользователя small small 5 октября 2010 в 16:46

Я прошу прощения, но хорошего руководства (все в одном) по друпал я не нашел, поэтому пришлось обратиться к сообществу...

Темы друпал выполняются похоже как и модули - логично было мне предположить что хуки можно равно использовать как в модулях так и в темах..

Как же тогда мне быть? Я пишу просто новую тему и мне нужно изменить "обертку" элементов формы? Для измеения форм в модулях есть hook_form_alter, а в теме как быть?

Аватар пользователя jsv jsv 5 октября 2010 в 16:47

"small" wrote:
Как же тогда мне быть? Я пишу просто новую тему и мне нужно изменить "обертку" элементов формы? Для измеения форм в модулях есть hook_form_alter, а в теме как быть?

Создать служебный модуль и там писать хуки.

Аватар пользователя small small 5 октября 2010 в 16:56

неудобно... Sad

однако был приятно удивлен быстрой реакцией друпал гуру на мой вопрос.
Спасибо.

PS: Дюка качаю... посмотрим что там.

Аватар пользователя jsv jsv 5 октября 2010 в 19:06

"small" wrote:
неудобно... :(

Да ладно, взять любой модуль , удалить все внутренности у *.module и написать там функцию и изменить имя в *.install . И потом юзать его в каждом проекте

Аватар пользователя glu2006 glu2006 5 октября 2010 в 20:48

jsv wrote:
Да ладно, взять любой модуль , удалить все внутренности у *.module и написать там функцию и изменить имя в *.install . И потом юзать его в каждом проекте

так как вы описали Smile породит еще кучу вопросов.
Во первых не инсталл а info. Юзать в каждом проекте абсолютно не обязательно поскольку Вы и сами не знаете какой будет следующий дизайн или проект.
Для большего понимая лучше создать и инфо файл и файл модуля самостоятельно.

Топик стартеру если лень юзать форм альтер и писать свои модули, то к сведению у большого количества форм друпала есть свои theme функции.

Аватар пользователя riyuzakki riyuzakki 6 октября 2010 в 1:38

"small" wrote:
пишу просто новую тему и мне нужно изменить "обертку" элементов формы? Для измеения форм в модулях есть hook_form_alter, а в теме как быть?

[ru-api=theme_form_element]MYTHEME_form_element[/ru-api]?