He configurado un sitio multilenguaje en Drupal 7. En una plantilla necesito agregar un enlace a un nodo de contenido específico. Este nodo tiene traducciones y alias de ruta de esta manera:
node/42 = pathalias_de (german version)
node/43 = pathalias_en (english version)
En la plantilla me gustaría llamar url()
para obtener el enlace a la versión con alias del nodo de contenido en el idioma actual.
En la página alemana, debe enlazar a /de/pathalias_de
en la página inglesa a/en/pathalias_en
He intentado varias variaciones, como llamar al nid, llamar al alias, pasar el objeto del lenguaje actual a url()
.
¿Es esto algo que url()
debería poder hacer o necesito una función diferente? ¡Gracias!
fuente
$translations = translation_path_get_translations(drupal_get_normal_path("pathalias_de","de"));
para buscar el alias en lugar de la identificación del nodo, es más flexible. Sin embargo, debes pasar el idioma correcto.fuente
Echa un vistazo a la función drupal_get_path_alias
Como puedes ver, toma un parámetro path_language. Para que pueda averiguar el idioma actual y luego pasar a esta función.
O simplemente use el módulo Multilink
fuente
drupal_get_path_alias()
no buscará traducciones de un nodo dado, solo alias que ya estén en el idioma dado. Encontré otra solución, vea mi respuesta a continuación.Ninguna de las respuestas anteriores parece hacer un uso correcto de i18n_path. Si desea vincular al nodo traducido, simplemente debe habilitar el módulo i18n_path y formatear la ruta de esta manera,
fuente
Probablemente deberías usar la función de enlace . Le permite pasar el idioma como parámetro y es la función apropiada para crear un enlace con Drupal.
fuente
l()
utilizaurl()
internamente, por lo que no importa en este caso.Usando el redireccionamiento de traducción puede vincular a nodos con prefijo de idioma.
Esto es lo que dice:
Por ejemplo, si nid 22 es para la versión en inglés y tiene versiones en francés y alemán, simplemente puede vincularlos como fr / node / 22 y de / node / 22. Este 22 también puede ser cualquier nid de la versión traducida.
Si no se encuentra una traducción particular, por ejemplo, si no ha agregado para japonés, entonces ja / node / 22 dará 404 para usuarios anónimos.
fuente
Para obtener la ruta de prefijo correcta, uso:
Drupal_get_path_alias () devuelve solo el alias, la url () es la que agrega el prefijo ("en /").
fuente