Многие веб-мастера, начинающие изучать cmf drupal, часто интересуются как темизировать (то бишь изменить вид) формы отправки комментариев. Многие же drupal-гуру отмахиваются от таких вопросов, говоря "используйте css". Так вот, css — это конечно хорошо .. display:none там, display:block тут... но нужно все таки научиться менять и html-код, выдаваемый системой. Это мы сегодня и попробуем ...
Пусть задача стоит такая: убрать из формы добавления комментариев поля "домашняя страничка" и "электронная почта", скрыть подсказки по форматированию. Сразу скажу, что я сотворял это на шестом drupal-е, но по идее, аналогичная ситуация была и на пятерке.
Итак, открываем папку вашей темы. Смотрим, есть ли там template.php — если нет — создаем, если есть — открываем редактором.
Нам нужно определить свою функцию, которая будет обрабатывать объект формы добавления комментария. Этим мы незамедлительно и займемся:
function garland_comment_form($form) {
$form['comment_filter']['comment']['#rows'] = 5;
$form['comment_filter']['format'] = NULL;
$form['mail'] = NULL;
$form['homepage'] = NULL;
return drupal_render($form);
}
Здесь я, кроме удаления полей homepage и mail и подсказки по форматированию, задал число строк для текстареи комментария. Вобщем-то делать можно что угодно если знать что находится в $form. А узнать это проще простого:
function garland_comment_form($form) {
var_dump($form);
}
Заметьте, что в имени функции присутствует слово garland — его обязательно нужно заменить на название вашей темы... Ну вот и все, очень надеюсь кому этот бред пригодится. По крайней мере, мне был бы этот пост очень полезен полгода-год назад :)
Комментарии
Вы пишете, что узнать проще простого :) А как?
Я так понимаю вставить код в template.php. А дальше что?
Ну да, сначала вставляете в template.php эту функцию -
function garland_comment_form($form) {
var_dump($form);
}
Обновляете страничку на которой показывается форма комментария - вам выпадет стандартный php-шный дамп объекта $form. Ну или если с php вы совсем не дружите, уверен, что можно посмотреть структуру этого объекта где-нибудь на drupal.org.
Вставил код
function garland_comment_form($form) {
var_dump($form);
}
в template.php. Заменил garland на название своей темы. Открываю страницу с формой комментария - и ничего. Очистил кэш, очистил реестр темы - тоже никаких изменений.
Посмотрел вот здесь
http://api.drupal.ru/api/group/themeable/6
theme_comment_form не нашел. Есть theme_form, но это, я так, понял для всех форм на странице, а не только для формы комментариев.
Отправить комментарий