[Решено] Помогите переопределить функцию comment_form

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

Аватар пользователя Photoshopper Photoshopper 9 февраля 2013 в 2:03

Мне нужно сделать поле имя обязательным к заполнению. Нашел в comment.module

<?php'#required' => (!$user->uid && $anonymous_contact == COMMENT_ANONYMOUS_MUST_CONTACT),?>

Заменил на

<?php'#required' => TRUE,?>

Все прекрасно работает. Но как эту функцию переопределить через template.php не пойму.

Пробовал так, но не получилось

<?phpfunction galinatheme_comment_form($form) {

     $form['author']['name'] = array(
      '#type' => 'textfield',
      '#title' => t('Your name'),
      '#default_value' => $author,
      '#required' => TRUE,
      '#maxlength' => 60,
      '#size' => 30,
    );

    $output = '';
    $output .= drupal_render($form);

    return $output;
}?>

Помогите знающие люди

Комментарии

Аватар пользователя Photoshopper Photoshopper 9 февраля 2013 в 13:04

Большое спасибо! Получилось

<?phpfunction galina_form_comment_form_alter(&$form, $form_state, $form_id) {
    
    global $author;
    
     $form['author']['name'] = array(
      '#type' => 'textfield',
      '#title' => t('Your name'),
      '#default_value' => $author,
      '#required' => TRUE,
      '#maxlength' => 60,
      '#size' => 30,
    );
}?>
Аватар пользователя Photoshopper Photoshopper 9 февраля 2013 в 13:34

Правда у тех у кого будет на сайте регистрация, то придется этот код допиливать, т.к. он не подставляет автоматически имя.

Аватар пользователя Photoshopper Photoshopper 9 февраля 2013 в 14:26

Сделал вот так. Не знаю на сколько это правильно

<?phpfunction galina_form_comment_form_alter(&$form, $form_state, $form_id) {
    
    global $author, $user, $is_admin;
    
    if (!isset($form_state['comment'])) {
    $defaults = array(
      'name' => '',
      'mail' => '',
      'homepage' => '',
      'subject' => '',
      'comment' => '',
      'cid' => NULL,
      'pid' => NULL,
      'language' => LANGUAGE_NONE,
      'uid' => 0,
    );
    foreach ($defaults as $key => $value) {
      if (!isset($comment->$key)) {
        $comment->$key = $value;
      }
    }
    $form_state['comment'] = $comment;
  }
  else {
    $comment = $form_state['comment'];
  }
    
    if ($is_admin) {
    $author = (!$comment->uid && $comment->name ? $comment->name : $comment->registered_name);
    $status = (isset($comment->status) ? $comment->status : COMMENT_NOT_PUBLISHED);
    $date = (!empty($comment->date) ? $comment->date : format_date($comment->created, 'custom', 'Y-m-d H:i O'));
  }
  else {
    if ($user->uid) {
      $author = $user->name;
    }
    else {
      $author = ($comment->name ? $comment->name : '');
    }
    $status = (user_access('skip comment approval') ? COMMENT_PUBLISHED : COMMENT_NOT_PUBLISHED);
    $date = '';
  }
  
    if ($is_admin) {   
    $form['author']['name'] = array(
      '#type' => 'textfield',
      '#title' => t('Authored by'),
      '#default_value' => $author,
      '#maxlength' => 60,
      '#size' => 30,
      '#description' => t('Leave blank for %anonymous.', array('%anonymous' => variable_get('anonymous', t('Anonymous')))),
      '#autocomplete_path' => 'user/autocomplete',
    );
  }
  elseif ($user->uid) {
    $form['author']['_author'] = array(
      '#type' => 'item',
      '#title' => t('Your name'),
      '#markup' => theme('username', array('account' => $user)),
    );
    $form['author']['name'] = array(
      '#type' => 'value',
      '#value' => $author,
    );
  }
  else {
    $form['author']['name'] = array(
      '#type' => 'textfield',
      '#title' => t('Your name'),
      '#default_value' => $author,
      '#required' => TRUE,
      '#maxlength' => 60,
      '#size' => 30,
    );
  }
}?>