Menu Link Weight
Reemplaza el menú desplegable numérico estándar de peso para enlaces de menú con un widget tabledrag intuitivo, permitiendo a los editores de contenido reordenar visualmente los elementos del menú.
menu_link_weight
Overview
El módulo Menu Link Weight proporciona una alternativa fácil de usar al widget desplegable numérico estándar de peso para enlaces de menú en Drupal. En lugar de requerir que los usuarios entiendan y configuren manualmente valores de peso de -50 a 50, este módulo presenta una interfaz tabledrag que muestra los enlaces de menú hermanos en su orden actual.
Al editar un Node o enlace de menú, los usuarios pueden simplemente arrastrar y soltar elementos del menú para reordenarlos en relación con sus hermanos. El módulo se actualiza dinámicamente mediante AJAX cuando se cambia el menú padre, mostrando todos los enlaces hermanos bajo el padre seleccionado. Para entornos sin JavaScript, se proporciona un botón de respaldo elegante.
Al enviar el formulario, el módulo recalcula los pesos secuencialmente desde -50 hacia arriba para todos los enlaces hermanos afectados, asegurando el orden correcto. Este enfoque hace que la organización del menú sea intuitiva para los editores de contenido que ya no necesitan entender el sistema de pesos subyacente.
Features
- Reemplaza el menú desplegable numérico de peso con una interfaz visual tabledrag para ordenar enlaces de menú
- Actualizaciones dinámicas impulsadas por AJAX al cambiar la selección del menú padre
- Reordenamiento mediante arrastrar y soltar de enlaces de menú hermanos directamente desde los formularios de edición de Node y enlaces de menú
- Degradación elegante con un botón de respaldo para entornos sin JavaScript
- Recálculo automático de pesos de -50 a 50 al enviar el formulario
- Integración opcional con el módulo Client-side Hierarchical Select (CSHS) para una selección de padre mejorada
- Compatibilidad con el módulo Menu Admin Per Menu para control de permisos por menú
- Detección de edición concurrente para evitar que los usuarios sobrescriban los cambios de otros
- Enlace directo a la página de administración del menú desde el widget tabledrag para acceso rápido
- Sincronización del título en tiempo real en la lista tabledrag mientras los usuarios escriben el título del enlace de menú
Use Cases
Editor de contenido reordenando elementos del menú
Un editor de contenido está creando una nueva página y quiere que aparezca entre dos elementos de menú existentes. En lugar de adivinar valores de peso, habilita la casilla de enlace de menú, ve una lista visual de elementos hermanos y arrastra su nueva página a la posición deseada. El módulo maneja el cálculo de peso automáticamente.
Reorganizando la estructura del menú desde el formulario de edición de Node
Al editar un Node, un administrador del sitio nota que el menú necesita reorganización. Usando el widget tabledrag, pueden reordenar no solo el enlace de menú del Node actual sino todos los enlaces hermanos, y luego guardar el Node para aplicar todos los cambios a la vez.
Gestionando menús sin conocimiento de pesos numéricos
Los equipos de contenido no familiarizados con el sistema de pesos de -50 a 50 de Drupal pueden gestionar intuitivamente el orden del menú usando arrastrar y soltar, reduciendo el tiempo de capacitación y previniendo errores de ordenamiento.
Gestión jerárquica de menús con CSHS
Para sitios con jerarquías de menú profundas, los administradores pueden habilitar la integración CSHS para obtener una interfaz desplegable en cascada para la selección de padre, facilitando la navegación y selección del elemento de menú padre correcto.
Tips
- El módulo recalcula todos los pesos de hermanos desde -50 hacia arriba al guardar, así que no se sorprenda si los valores de peso cambian después de guardar
- Puede hacer clic en el enlace del nombre del menú en la descripción del widget para ir directamente a la página completa de administración del menú
- El widget muestra títulos truncados (30 caracteres) para facilitar la lectura; pase el cursor sobre los enlaces para ver los títulos completos
- Los nuevos enlaces de menú se colocan en la parte superior de la lista de hermanos por defecto; arrástrelos a la posición deseada antes de guardar
Technical Details
Admin Pages 1
/admin/config/user-interface/menu-link-weight
Configurar el widget selector de enlace de menú padre utilizado por el módulo Menu Link Weight. Por defecto, se utiliza el menú desplegable estándar de Drupal, pero opcionalmente puede cambiar a Client-side Hierarchical Select (CSHS) para una experiencia de selección jerárquica de menú más intuitiva.
Hooks 4
hook_form_node_form_alter
Altera los formularios de Node para reemplazar el menú desplegable de peso con un widget tabledrag para ordenar enlaces de menú. Añade la tabla tabledrag, campos ocultos db_weights para detección de edición concurrente, y callback AJAX para cambios de padre.
hook_form_menu_form_alter
Altera el formulario de vista general del menú para añadir etiquetas de anclaje (IDs HTML) a cada fila de enlace de menú, permitiendo enlaces directos desde el formulario de Node a elementos específicos del menú.
hook_form_menu_link_content_form_alter
Altera los formularios de entidad de contenido de enlace de menú para añadir el widget tabledrag para reordenar enlaces hermanos.
hook_form_menu_link_edit_alter
Altera el formulario de edición de enlace de menú predeterminado (para enlaces proporcionados por el sistema) para añadir el widget tabledrag.
Troubleshooting 4
Asegúrese de que el usuario tenga el permiso 'Administer menu' o, si usa Menu Admin Per Menu, que se le haya concedido acceso a los menús relevantes.
El módulo detecta ediciones concurrentes. Si ve un error sobre pesos siendo cambiados por otro usuario, recargue el formulario para obtener los pesos más recientes antes de hacer cambios.
El módulo Client-side Hierarchical Select debe estar instalado y habilitado antes de poder usar esta opción. Instálelo mediante Composer: composer require drupal/cshs
Este es el respaldo de degradación elegante. Verifique la consola del navegador en busca de errores de JavaScript. El tabledrag debería funcionar cuando JavaScript está habilitado y funcionando.