Después del upgrade de Drupal 5 a 6 resultó que mi página
node/add, 'Create Content' (¿Crear Contenidos?), aparecía completamente vacía. Para mí no era un gran problema porque en el menú navigation seguían apareciendo los enlaces a las correspondientes páginas
node/add/foo, así que aún era posible crear nuevas páginas. Además uso más el menú, es más rápido, mucho más ahora que usa
jQuery (que creo será mi biblioteca javascript preferida) para desplegarse y mostrar los submenus con un simple click. El problema vino cuando un usuario avanzado me dijo 'es que no tengo permisos, la página de creación me aparece vacía'.
Después de mucho buscar por las páginas de Drupal había dos candidatos, ambos relacionados con la tabla
menu_links.
La primera cosa que podía ser era que el
plid de todos los enlaces que deberían aparecer listados en
node/add tenía que ser igual al
mlid de
node/add. Sí suena a chino, pero
mlid es el identificador unívoco de cada menú item, mientras que
plid es el identificador de su padre -si lo tiene; si no es 0-. Entonces lo que dije es que debemos asegurarnos que todas las entradas con un
router_path parecido a
node/add deben tener como parent_id el identificador de
node/add. Por desgracia, en mi tabla todo estaba bien y 'Create Content' siguió vacía.
La segunda
idea finalmente fue la solución:
solo debe existir un registro en menu_links en que router_path = 'node/add'. Yo tenía 5. La solución fue corregir todos los registros que deberían apuntar hacia
node/add/foo y que solo quedase un registro como este (hay más campos en la tabla, yo solo muestro acá los que me interesan):
link_title | menu_name | mlid | plid | router_path
---------------+------------+------+------+--------------
Create content | navigation | n | m | node/add
No entiendo todavía cómo puede esta tabla haber estado mala y al mismo tiempo el menú Navigation haber estado bien. Pero la complejidad de Drupal es tal, que por más que leo y leo, no termino de entender.
Ojalá que les ayude a ustedes si se encuentran en la misma situación.