Estoy ocupado trabajando en un sitio en mi host local que necesita vincular a un contenido que es independiente de Drupal.
Tengo las rutas de menú actuales configurados como esto: http://mylocalsite/the_folder_for_the_other_content
. Si trato
<front>/the_folder_for_the_other_content
o /the_folder_for_the_other_content
, o the_folder_for_the_other_content
, me sale el error "La ruta 'whatever_I_use' no es válida o no tiene acceso a ella."
Cuando en vivo, obviamente, necesito todos los elementos del menú para señalar http://myrealsite/the_folder_for_the_other_content
.
¿Cómo puedo configurarlo para que no tenga que editar todas las rutas del menú cuando entre en funcionamiento?
http://example.com/
.Respuestas:
La respuesta de Kiamlaluno no me funcionó del todo. El uso de% menu_tail produjo una tormenta de errores de que la función menu_tail_load estaba teniendo problemas con los argumentos faltantes:
Lo que funcionó para mí fue
Luego, podría servir archivos en la carpeta sitios / d8 / archivos (y subcarpetas) usando elementos de menú con rutas como
sites/d8/files/Documents/MyFile.pdf
El sistema de menús generará un enlace como
href="/drupal//sites/d8/files/Documents/MyFile.pdf"
Si no utiliza el módulo de menú personalizado, el sistema de menús rechazará una ruta que comience como se indicó anteriormente.
Si intenta utilizar una ruta como
http:sites/d8/files/Documents/MyFile.pdf
, generará un enlace comohref="http:sites/d8/files/Documents/MyFile.pdf"
, que funcionará cuando esté en la raíz del sitio, pero cuando esté en una página de contenido, el navegador interpretará la URL relativa a la página de contenido, y no funcionaráSi utiliza una ruta como
http:/sites/d8/files/Documents/MyFile.pdf
, el sistema de menús la aceptará, pero el sistema de menús generará un enlace comohref="http:/sites/d8/files/Documents/MyFile.pdf"
, que el navegador (al menos Safari) interpretaráhref="http://sites/d8/files/Documents/MyFile.pdf"
y no intentará encontrar el servidor llamado "sitios".(En una investigación adicional, la razón por la que el código que usa menu_tail falla es que necesita agregar los 'argumentos de carga', como se señala aquí: http://api.drupal.org/api/drupal/includes--menu.inc/function / menu_tail_load / 7. Si agrega
'load arguments' => array('%map', '%index'),
a la definición de $ items en el código de kiamlaluno, funcionará. La cuestión de si menu_tail_load debería requerir los argumentos explícitos de carga también se discute aquí: http://drupal.org/node/298561 )(No olvide habilitar su nuevo módulo, o el sistema de menús no aceptará los nuevos enlaces)
fuente
Cuando agrega un nuevo enlace, el enlace se valida desde menu_edit_item_validate () , que llama a drupal_valid_path () para verificar si la ruta es válida o si el usuario puede acceder a ella.
drupal_valid_path()
devuelveTRUE
si<front>
(<front>/directory
o se excluyen rutas similares)TRUE
)Además de usar URL absolutas, la única solución es tener un módulo personalizado que defina una devolución de llamada de menú asociada con la ruta que desea usar.
Cuando utiliza la URL que apunta a un archivo o directorio, el servidor web debe mostrar ese archivo o directorio, sin invocar a Drupal. Eso es lo que sucede con Apache, ya que el archivo .htaccess que viene con Drupal contiene las siguientes directivas:
En su caso, el módulo personalizado debe contener un código similar al siguiente:
Puede usar cualquier valor para la devolución de llamada de título y página , ya que esa devolución de llamada de menú nunca debe llamarse. El valor de la devolución de llamada de acceso le dice a Drupal que cada usuario tiene acceso a esa devolución de llamada de menú.
Como alternativa, puede definir una devolución de llamada de menú asociada a "alias_for_directory /% menu_tail" que redirige al usuario al directorio que desea que vean (usando drupal_goto () ). Usaría esta solución cuando el servidor no usa el contenido de .htaccess, e invocaría a Drupal incluso cuando la URL apunte a un archivo o directorio existente.
fuente
Para mí lo siguiente hizo el truco (en drupal 6).
Quiero dirigirme a otra URL en el mismo dominio, digamos que Drupal se está ejecutando
http://www.example.com
y quiero tener un enlace ahttp://www.example.com/frontend
En el elemento del menú, ingrese como ruta:
El menú de drupal se vinculará a:
http://www.example.com/frontend
Cuando usa https, debe ingresar https: / frontend en el campo de ruta para el elemento del menú.
fuente
Resolví mis problemas de enlace con lo siguiente:
http://groups.drupal.org/node/210308 y http://drupal.org/node/372252
Resulta que mi tema estaba imprimiendo el menú incorrectamente para que todos los elementos estuvieran relacionados con mi ubicación actual (es decir, admin / logout, en lugar de / logout).
Espero que esto ayude.
fuente
Usé sql para reemplazar el enlace en la estructura del menú:
No estoy seguro de si necesitaba hacer esto, pero luego eliminé los cachés del menú.
fuente