Limitar el largo de los comentarios - Drupal 6

 

En ocasiones lo usuarios abusan de la carencia de un límite de caracteres del modulo comment de Drupal, por lo que surge la necesidad de limitar los caracteres de los comentarios ingresados en el sitio.

A continuación explicare poco a poco como crear un módulo que se integrara con las opciones de comentarios de los tipos de contenido donde podrá ser configurado el limite de caracteres y también incluir la validación que bloquearía los comentarios con mayor tamaño. Para lograr una configuración para cada uno de los tipos de contenido se crea una variable de sistema con el prefijo comment_max_length_ para cada uno de los tipos de contenido.

El primer paso consiste en utilizar el hook "hook_form_alter", para modificar el formulario de comentarios y el formulario de configuración de tipo de contenido.

function limit_comments_form_alter(&$form, $form_state, $form_id) {
 
// comment form
 
if ($form_id == 'comment_form') {
   
$node = node_load($form['nid']['#value']); // we load node to get content type
   
$form['#validate'] = array('limit_comments_validate');
   
$form['comment_filter']['comment']['#description'] = t('Comments are limited to a maximum of %num characters.', array('%num' => variable_get('comment_max_length_'.$node->type, 0)));
  }
 
// content type form
 
elseif ($form_id == 'node_type_form' && isset($form['identity']['type'])) {
   
$form['comment']['comment_max_length'] = array(
     
'#type' => 'select',
     
'#title' => t('Maximum comment length'),
     
'#default_value' => variable_get('comment_max_length_'. $form['#node_type']->type, 1000), // we set variable for each content type
     
'#options' => drupal_map_assoc(array(300, 500, 700, 1000, 1500, 2000, 2500, 3000, 5000)),
     
'#description' => t('Maximum permitted length of a comment (in characters) for non-administrators.'),
     
'#weight' => -1,
    );
  }
}

Paso final la función que validara el formulario de comentarios:

function limit_comments_validate($node, &$form) {
  $node = node_load($node['nid']['#value']);
 
$max = variable_get('comment_max_length_'.$node->type, 1000);
  if (
strlen(trim($form['values']['comment'])) > $max) {
   
form_set_error('comment', t('Your comment is too long. Comments are limited to a maximum of %num characters.', array('%num' => $max)));
  }
}

Se carga el nodo en una variable, seguidamente se obtiene el limite configurado para el tipo de contenido, se valida el largo del comentario y si se supera se genera el mensaje de error.

Fuente: http://drupal.org/node/102787

Imagen por admin