Как отредактировать и оформить форму комментариев и комментариев?
Я создаю сайт drupal, используя drupal 7 и адаптивную тему.
Я создал некоторый тип контента под названием рецепты. Затем я создал панель содержимого в представлениях для представления рецептов на панелях. Я добавляю форму комментариев и комментариев на ту же панель.
Теперь я хочу представить под любым рецептом форму комментария и все остальные комментарии. Моя проблема в том, что я не знаю, как отредактировать представление формы комментария. Когда я проверил поля комментариев на своем тип контента, я видел только поле "comment_body".
Как я могу отредактировать поля и то, как они будут отображаться в форме комментариев и комментариев?
Ниже приведен скриншот.
Я хочу удалить поле "ваше имя" и изменить кнопку "сохранить" на "оставить комментарий". Как я могу это сделать?
Спасибо!
3 answers
Вы можете скопировать файл с именем comment.tpl.php из папки, в которой находится тема base AT (что-то вроде adaptivetheme\at_core\шаблоны), и вставьте ее в сайты\все\темы\YOUR_AT_SUBTHEME\шаблоны.
Предполагая, что recipes - это имя компьютера вашего типа контента, вы также можете назвать его comment--recipes.tpl.php если вы хотите создать специальную тему для комментариев к рецептам.
Затем с помощью comment.tpl.php API (вы также можете найти много информации в самом файле php), вы можете изменить способ отображения ваших комментариев.
Т.е. вместо
print render($content);
Вы можете отобразить определенные поля:
print render($content['comment_body']);
Или скрыть определенные поля
hide($content['author']);
print render($content);
Чтобы изменить саму форму, вам нужно использовать hook_form_alter()
в пользовательском модуле.
/**
* Implements hook_form_alter().
*/
function YOUR_CUSTOM_MODULE_form_alter(&$form, &$form_state, $form_id) {
//get the form id
drupal_set_message("Form ID is : " . $form_id);
$print = '<pre>' . print_r($form, TRUE) . '</pre>';
drupal_set_message($print);
switch($form_id){
case 'YOUR_COMMENT_FORM_ID':
//alter your form (with the complete correct fields names)
$form['YOUR_FIELD_YOUR_NAME']['#type'] = 'hidden';
$form['YOUR_FIELD_SUBMIT']['#value'] = t('Post comment');
break;
}
}
Вы также можете использовать dpm($form)
, если у вас установлен Devel, или создать
$print = '<pre>' . print_r($form, TRUE) . '</pre>';
drupal_set_message($print);
Для того, чтобы получить точные поля формы
При использовании формы решения @Kojo, если вы не хотите использовать свой собственный модуль, создайте функцию в template.php
:
function THEMENAME_form_FORMID_alter(&$form, &$form_state) {
//...
}
Например
function bartik_form_comment_form_alter(&$form, &$form_state) {
//...
}
Этот код изменит все формы комментариев, вы можете быть более конкретными и указать идентификатор формы определенного типа. Чтобы получить ФОРМИД, откройте отрисованную страницу и найдите следующее поле в html:
<input type="hidden" value="HERE-WILL-BE-THE-FORMID" name="form_id">
Вы можете сделать это, загрузив форму комментария.
$комментарий =загрузка комментария($cid);//$cid - идентификатор комментария $форма =drupal_get_form('форма комментария', $комментарий); распечатать drupal_render($форма);
Url-адрес: https://api.drupal.org/api/drupal/modules!comment!comment.module/function/comment_load/7.x