Есть задача - темизировать форму ввода конкретного типа материалов. По аналогу с шаблоном вывода материалов (node-тип материала.tpl.php) Если создаем шаблон page-node-add.tpl.php - он отвечает за всю страницу, это не подходит. Как выйти на шаблон node/add/тип материала, чтобы не вбивать в page-node-add.tpl.php то, что уже задано page.tpl.php?
Комментарии
например можно вынести повторяющиеся части тэмплэйтов в файлы .inc
Можно, понял, хороший вариант. Но почему для вывода есть возможность задать отдельным файлом именно то что нужно(node-тип материала.tpl.php), для ввода так не получится? Может форму ввода отдельным файлом как-то можно задать?
Можно темизировать как форму определенного типа материала, так и вообще любую форму по ее Id (теоретически:)).
К примеру, следующими функциями в template.php:
* Регистрируем функцию темизации формы для материала типа NODETYPE
*/
function THEMENAME_theme() {
return array(
'NODETYPE_node_form' => array(
'arguments' => array(
'form' => NULL
)
)
);
}
/**
* Темизируем форму
*/
function THEMENAME_NODETYPE_node_form($form) {
$form['menu']['#access'] = false; // скрываем блок "Параметры меню"
$form['author']['#access'] = false; // скрываем блок "Информация об авторе"
$form['revision_information']['#access'] = false; // скрываем блок "Информация о редакции"
$form['path']['#access'] = false; // скрываем блок "Параметры адреса"
$form['options']['#access'] = false; // скрываем блок "Параметры публикации"
return drupal_render($form);
}
NODETYPE - системное название типа материала, для которого темизируется форма,
THEMENAME — название темы.
Например garland_story_node_form.
Так же темизируется любая форма друпала. Для этого вместо NODETYPE_node_form прописывается id нужной формы.
Чтобы наглядно посмотреть какие поля, с какими значениями передаются в форму, рекомендую модуль Devel.
PS: Theming the node/add form using template.php
Это все прекрасно работает, только как в таком случае будет называться файл шаблона формы? Дальше с devel порядок работы ясен.
все вышеописанное пишется в файл template.php в текущей теме. это уже и есть темизация формы.
кстати, InternetStranger, спасибо, дельный совет.
Все получилось, спасибо. При темизации самой формы возник вопрос - при изменении порядка вывода полей, как обратиться к названию материала - $form['title']['#weight'] не работает?