Как отредактировать и оформить форму комментариев и комментариев?


Я создаю сайт drupal, используя drupal 7 и адаптивную тему.

Я создал некоторый тип контента под названием рецепты. Затем я создал панель содержимого в представлениях для представления рецептов на панелях. Я добавляю форму комментариев и комментариев на ту же панель.

Теперь я хочу представить под любым рецептом форму комментария и все остальные комментарии. Моя проблема в том, что я не знаю, как отредактировать представление формы комментария. Когда я проверил поля комментариев на своем тип контента, я видел только поле "comment_body".

Как я могу отредактировать поля и то, как они будут отображаться в форме комментариев и комментариев?

Ниже приведен скриншот.
Я хочу удалить поле "ваше имя" и изменить кнопку "сохранить" на "оставить комментарий". Как я могу это сделать?

enter image description here

Спасибо!

Author: EB84, 2014-01-17

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);

Для того, чтобы получить точные поля формы

 3
Author: Kojo, 2014-01-17 22:57:10

При использовании формы решения @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">
 1
Author: hennadiy.verkh, 2015-07-25 14:09:18

Вы можете сделать это, загрузив форму комментария.

$комментарий =загрузка комментария($cid);//$cid - идентификатор комментария $форма =drupal_get_form('форма комментария', $комментарий); распечатать drupal_render($форма);

Url-адрес: https://api.drupal.org/api/drupal/modules!comment!comment.module/function/comment_load/7.x

 0
Author: Drock, 2017-02-13 07:33:26