Modificar las funciones de comentarios, parte I

La propuesta es sencilla, que los comentarios de los blogs sean moderados, y que los comentarios de los foros no sean moderados, esto que parece una cosa sencilla y fácil de hacer resulta que no lo es tanto.

Vamos a ver los pasos que he llevado a cabo, como siempre cuando queremos tocar algo tenemos que ir a la documentación de Drupal, a mi me encanta usar la web de Toletum para consultar toda la documentación de Drupal.

Lo primero que hice fue en el módulo propio añadir lo siguiente para sacar toda la información del formulario de comentario.

<?php
**
*
Implementation of hook_form_alter
*/
function
mimodulo_form_alter ($form_id, $form_values){
drupal_set_message($form_id);
    }
?>

Con este código metido en un módulo propio al navegar por Drupal nos va mostrando los form_id, que no son más que los nombres que tienen los formularios, con texto, no son numéricos. Una vez tenemos el $form_id añadidos la siguiente línea de código:

<?php
if ($form_id == 'comment_form'){
   
drupal_set_message (dprint_r($form_values, TRUE));
    }
?>

al hook_form_alter, nos quedaría tal que así:

<?php
/**
* Implementation of hook_form_alter
*/
function kiddiamodulo_form_alter ($form_id, $form_values){
drupal_set_message($form_id);
    if (
$form_id == 'comment_form'){
   
drupal_set_message (dprint_r($form_values, TRUE));
    }
}
?>

De esta manera, si tenemos activado el módulo Devel, y entramos como user 1, nos mostrará el array que compone el formulario.

En este caso el array del form_comment que nos devuelve Drupal es:

<pre>
Array
(
    [_author] => Array
        (
            [#type] => item
            [#title] => Tu nombre
            [#value] => <a href="/limpio/?q=user/1" title="Ver el perfil de usuario.">admin</a>
        )

    [author] => Array
        (
            [#type] => value
            [#value] => admin
        )

    [subject] => Array
        (
            [#type] => textfield
            [#title] => Título
            [#maxlength] => 64
            [#default_value] =>
        )

    [comment_filter] => Array
        (
            [comment] => Array
                (
                    [#type] => textarea
                    [#title] => Comentario
                    [#rows] => 15
                    [#default_value] =>
                    [#required] => 1
                )

            [format] => Array
                (
                    [#type] => fieldset
                    [#title] => Formato de entrada
                    [#collapsible] => 1
                    [#collapsed] => 1
                    [#weight] =>
                    [#validate] => Array
                        (
                            [filter_form_validate] => Array
                                (
                                )

                        )

                    [1] => Array
                        (
                            [#type] => radio
                            [#title] => Filtered HTML
                            [#default_value] => 1
                            [#return_value] => 1
                            [#parents] => Array
                                (
                                    [0] => format
                                )

                            [#description] => <ul class="tips"><li>Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.</li><li>Allowed HTML tags: &lt;a&gt; &lt;em&gt; &lt;strong&gt; &lt;cite&gt; &lt;code&gt; &lt;ul&gt; &lt;ol&gt; &lt;li&gt; &lt;dl&gt; &lt;dt&gt; &lt;dd&gt;</li><li>Saltos automáticos de líneas y de párrafos.</li></ul>
                        )

                    [2] => Array
                        (
                            [#type] => radio
                            [#title] => PHP code
                            [#default_value] => 1
                            [#return_value] => 2
                            [#parents] => Array
                                (
                                    [0] => format
                                )

                            [#description] => <ul class="tips"><li>Puede enviar código PHP. Debe incluir las etiquetas &lt;?php ?&gt;.</li></ul>
                        )

                    [3] => Array
                        (
                            [#type] => radio
                            [#title] => Full HTML
                            [#default_value] => 1
                            [#return_value] => 3
                            [#parents] => Array
                                (
                                    [0] => format
                                )

                            [#description] => <ul class="tips"><li>Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.</li><li>Saltos automáticos de líneas y de párrafos.</li></ul>
                        )

                    [4] => Array
                        (
                            [#value] => <p><a href="/limpio/?q=filter/tips">Más información sobre opciones de formato</a></p>
                        )

                )

        )

    [cid] => Array
        (
            [#type] => value
            [#value] =>
        )

    [pid] => Array
        (
            [#type] => value
            [#value] =>
        )

    [nid] => Array
        (
            [#type] => value
            [#value] => 852
        )

    [uid] => Array
        (
            [#type] => value
            [#value] =>
        )

    [preview] => Array
        (
            [#type] => button
            [#value] => Vista previa del comentario
            [#weight] => 19
        )

    [#token] => comment852
    [submit] => Array
        (
            [#type] => submit
            [#value] => Enviar comentario
            [#weight] => 20
        )

    [#action] => /limpio/?q=comment/reply/852
    [#parameters] => Array
        (
            [0] => comment_form
            [1] => Array
                (
                    [pid] =>
                    [nid] => 852
                )

            [2] => Responder
        )

    [#type] => form
    [#post] => Array
        (
            [subject] => hola mundo
            [comment] => hola mundo
            [format] => 1
            [form_token] => 547133cec0aa88165077a0315e55aacc
            [form_id] => comment_form
            [op] => Enviar comentario
        )

    [#programmed] =>
    [form_token] => Array
        (
            [#type] => token
            [#default_value] => 547133cec0aa88165077a0315e55aacc
        )

    [form_id] => Array
        (
            [#type] => hidden
            [#value] => comment_form
            [#id] => edit-comment-form
        )

    [#id] => comment-form
    [#description] =>
    [#attributes] => Array
        (
        )

    [#required] =>
    [#tree] =>
    [#parents] => Array
        (
        )

    [#method] => post
    [#validate] => Array
        (
            [comment_form_validate] => Array
                (
                )

        )

    [#submit] => Array
        (
            [comment_form_submit] => Array
                (
                )

        )

)

siento la longitud del array.

Sigo en la siguiente entrada con la segunda parte.

Oskar

Trackback URL for this post:

http://www.documentados.com/trackback/173

Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Allowed HTML tags: <a> <em> <strong> <cite> <strike> <code> <ul> <ol> <li> <dl> <dt> <dd><img><p><div><blockquote>
  • Saltos automáticos de líneas y de párrafos.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.

Más información sobre opciones de formato

CAPTCHA
Esto es para evitar spam, y ver que eres humano :)
Image CAPTCHA
Enter the characters shown in the image.