¿Cómo evitar que Drupal redirija mis páginas de Vistas multilingües?

8

Tengo una página de Vistas en un sitio web multilingüe donde necesito una URL diferente para cada idioma, es decir:

  • es: mysite / apartamentos.
  • en: mysite / appartments.
  • fr: mysite / appartements.
  • ru: mysite / arendu.

Creé un alias de URL para cada idioma (que es mysite / appartments aunque el idioma predeterminado de mi sitio es el español), por lo que el alias en español appartmentses apartamentosy así sucesivamente. Creé estos alias usando configuration >> Search and Metadata >> URL aliases >> add alias.

Tengo que pasar parámetros de consulta a la vista para filtrar los resultados, por lo que mi URL es algo así como mysite / en / appartments / p / location_field / 2 y tengo un formulario donde pongo manualmente la acción como:

echo "/".$language."/".$translated_page

donde la página traducida puede ser apartamentos, apartamentos, apartamentos o arendu, haciendo la url de acción:

/ es / apartamentos, / fr / appartements, / es / appartments y / ru / arendu

Mi problema es que cuando se envía este formulario, Drupal me envía a

mysite / es / appartments / p / location_field / 2

en vez de

mysite / es / apartamentos / p / location_field / 2

y lo mismo ocurre para todos los idiomas. El resto de la cosa parece estar bien e incluso la miga de pan (que se genera usando la URL) parece correcta (Inicio >> Apartamentos Costa Dorada, en español).

Cuando uso el cambio de idioma, me redirige a la página traducida correcta pero sin los parámetros de consulta (de mysite/es/appartments/p/location_field/2donde me envía mysite/es/apartamentos).

No sé qué puede estar causando este problema, ¿tal vez los parámetros de consulta interfieren con la interpretación del alias?

Nota : Tengo muchos módulos de traducción habilitados. Para los módulos i18n hay: bloque, campo, menú, nodo, ruta, cadena, taxonomía, traducción (conjuntos de traducción), variable y vistas.

Miquel Correa Casablanca
fuente
echa un vistazo aquí drupal.stackexchange.com/questions/22989/…
rémy

Respuestas:

6

submódulo i18n_path

Supongo que también estás usando el módulo i18n . Así que asegúrese de habilitar también el i18n_pathsubmódulo (= Traducción de ruta). Más detalles al respecto, de la documentación de la comunidad (marcado en negrita agregado aquí):

... le permite mapear páginas existentes que son traducciones entre sí. Esto permitirá a los usuarios usar el selector de idiomas para navegar entre las páginas asociadas.

El módulo está destinado a ser utilizado como último recurso para traducir rutas que de otro modo no podrían asignarse juntas como traducciones. Por ejemplo, las rutas a los nodos traducidos ya se pueden vincular con el módulo de traducción de Contenido y las rutas a los términos de taxonomía traducidos se pueden vincular con el módulo de traducción de Taxonomía. Las traducciones de ruta deben usarse para vincular rutas genéricas, como las proporcionadas por Vistas o Paneles.

Para configurar las traducciones de una ruta en particular, debe crear un conjunto de traducción de ruta yendo a Configuración> Regional e idioma> Conjuntos de traducción> Rutas y haciendo clic en Agregar traducción de ruta.

Vistas de página i18n

También es posible que desee verificar si puede hacerlo funcionar utilizando el módulo de vistas de página i18n . Algunos detalles de su página de proyecto:

... proporciona una nueva visualización de vistas, donde puede seleccionar diferentes rutas para cada idioma habilitado en su sitio, por lo que una vista tiene una ruta localizada para cada idioma.

Nota 1 : " si no puede encontrar ninguna opción en la vista para traducir la ruta " (como en su comentario a continuación), es posible que desee ver lo que se menciona en el Comentario n. ° 1 del problema 2389535 , que establece:

... Puede que haya elegido una visualización de página en lugar de una visualización de página i18n cuando creó su vista. Asegúrese de haber seleccionado la visualización de vistas correcta. Adjunto algunas capturas de pantalla para ayudar:

Serigrafía 1 :

ingrese la descripción de la imagen aquí

Serigrafía 2 :

ingrese la descripción de la imagen aquí

Nota 2 : Para responder a la pregunta sobre " ¿Tendré que volver a crear la página de vista completa para convertirla en una página i18n_? " (Como en uno de sus comentarios (ahora eliminados) debajo de esta respuesta), lo probaría usando ¿Alguno de los enfoques descritos en las respuestas a la pregunta en Cómo duplicar una visualización de Vistas (que no es la maestra) como un tipo de visualización diferente? ... Si eso no funciona / aplica, la recreación de la página de vista completa parece ser la única opción que queda.

Pierre.Vriens
fuente
3

Elimine el alias de ruta e intente codificar este caso especial usted mismo, utilizando

hook_url_inbound_alter y o hook_url_outbound_alter

o simplemente haga sus propios caminos mediante devoluciones de llamada de página personalizadas (hook_menu) y luego muestre la vista con views_embed_view.

También podría alterar la acción de la forma del filtro expuesto:

/**
 * Implements hook_form_alter().
 */
function foo_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'views_exposed_form') {
    $form['#action'] = current_path();
  }
}

O:

/**
 * Implements hook_form_views_exposed_form_alter().
 */
function foo_form_views_exposed_form_alter(&$form, &$form_state) {
  if ($form['#id'] == 'views-exposed-form-foo-default') { // Or: if ($form['#action'] === '/foo')
    $form['#action'] = '/bar';
  }
}

Formulario tomado aquí ¿Cómo cambio la URL de envío del filtro de búsqueda expuesto?

rémy
fuente