Problemas con los foros de Drupal 5

Identificación del problema.

Desde hace varios días había detectado un problema con el módulo de foros de Drupal, el cual permitía ingresar nuevas colaboraciones (forum posts) al foro pero estas no eran asociadas a ningún tema o contenedor siendo imposible consultarlas posteriormente a través de la página del módulo (?q=forum) pero visibles como nodos de contenido (?q=admin/content/node).

Implementación de la solución.

Después de muchas pruebas infructuosas concluí que el problema no parecía ser de mis datos o de la configuración de los módulos, tenía que ser del core de Drupal.  Verifiqué tres sitios mas y estaban en iguales condiciones.

Gracias a un artículo que publicó NZ WebHosting en su blog, pude determinar que el problema se originaba en un conflicto del vocabulario.

En condiciones normales la tabla cms_vocabulary tiene una entrada para la categoría de los foros.  Su llave primaria es el vid el cual es un valor entero específico que debe coincidir con el esperado por Drupal.

INSERT INTO `cms_vocabulary` (`vid`, `name`, `description`, `help`, `relations`, `hierarchy`, `multiple`, `required`, `tags`, `module`, `weight`) VALUES (vid, ‘Forums’, ”, ”, 0, 1, 0, 1, 0, ‘forum’, -10);

Si no se tiene este registro y es necesario crearlo, antes se debe consultar cual es el valor de vid que se debe utilizar.  Para esto es necesario ejecutar el siguiente código PHP que puede ser inmerso en una página temporalmente.

<?php
$vid = _forum_get_vid();
print 'vid = ' . $vid;
$vid = variable_get('forum_nav_vocabulary', '');
print '<br /> variable_get("forum_nav_vocabulary", "") = ' . $vid;
?>

La ejecución de este código debe mostrar algo similar a lo siguiente.

vid = XXX
variable_get(“forum_nav_vocabulary”, “”) = XXX

Donde XXX deberá ser el valor del vid.  Si no aparece un valor para forum_nav_vocabulary significa que es necesario realizar el siguiente paso tal y como fue mi caso.

Así como en la tabla cms_vocabulary debe existir un registro para la categoría, en la tabla cms_vocabulary_node_types deberá existir un registro para el término asociado mediante el mismo vid.

INSERT INTO `cms_vocabulary_node_types` (`vid`, `type`) VALUES (vid, ‘forum’);

Teniendo estos dos registros asociados el formulario de creación de contenido para los foros empieza a incluír un campo Foros, antes inexistente, para la selección del foro (contenedor o tema) al que va dirigida la participación.  De igual manera, los artículos empiezan a aparecer correctamente desde la página principal de los foros.

Crear contenido > Tema del foro
Crear contenido > Tema del foro

Enlaces.

Leave a Reply

Your email address will not be published. Required fields are marked *