Traducir claves de URL al cambiar de tienda

8

Espero que uno pueda ayudarme con este problema que estoy enfrentando.

Situación:

Tengo 1 sitio web en 5 idiomas (por ejemplo, ejemplo.com, ejemplo.com/it, etc.)

Problema:

Ahora tengo example.com/about-us y example.com/it/about-us. Obviamente quiero que la versión italiana sea como: example.com/it/chi-siamo.

Intenté traducir el identificador y lo vinculé en categorías de productos para decir "chi-siamo". El problema es que si intenta cambiar a un idioma diferente, toma ese identificador.

Por ejemplo: actualmente estoy en example.com/it/chi-siamo pero quiero cambiar a la versión alemana, que debería ser example.com/de/ueber-uns. Si cambio de italiano a alemán usando el cambio de idioma, obtengo: example.com/de/chi-siamo. Lo que da un 404 .

¿Cuál es la solución para ir?

el_machine
fuente

Respuestas:

4

No hay solución. Magento no es compatible con eso.

Escribí un módulo que verifica el identificador y busca la traducción en la configuración, luego realiza una redirección.

Así que tienes dos opciones:

  1. elige un idioma y úsalo para todo; no traduzcas la URL
  2. Implemente algún módulo que haga lo que quiera.

En lugar de describir cómo hacer que este módulo eche un vistazo a esto: https://github.com/klein0r/magento-language-routes

Fabian Blechschmidt
fuente
2
¿Te importaría compartir tu módulo?
Simon
Lo siento, no estoy permitido, si lo fuera :)
Fabian Blechschmidt
@FabianBlechschmidt puede explicar más. Me gustaría desarrollar este módulo. ¿Ingresa las URL de otras tiendas en las páginas de cms para cada vista de tienda?
jrosell
1
agregó un enlace a un módulo que debería resolver el problema, si no me dice, entonces describiré más en profundidad cómo implementar esto.
Fabian Blechschmidt
1
Gracias. Encontré este módulo que creo que puedo adaptar. github.com/tzyganu/CmsRewrites
jrosell
2

Supongo que sus cinco idiomas tienen cada uno su propia vista de la tienda. Si ese es el caso, puede implementar esto usando Catálogo> Gestión de reescritura de URL para los productos, uno para cada uno store_id, y luego extendiéndose Mage_Catalog_Model_Product_Url::getUrlpara buscar una reescritura específica de la tienda y usarla en request_pathlugar de la predeterminada.

arroz fantástico
fuente
Sí, estoy usando diferentes vistas de la tienda. Como soy un novato de Magento, no estoy exactamente seguro de lo que quieres decir. ¿Te importaría darme una guía paso a paso :) Sería maravilloso.
el_machine
No veo este problema en las páginas de productos, sino en las páginas de cms.
jrosell
1

No deberías hacerlo.

  1. agrega otra capa en el procesamiento de URL. Da la posibilidad de errores y cuellos de botella de rendimiento.

  2. cambiar el idioma se vuelve mucho más difícil, ya que no solo necesita vincular a otro identificador de idioma, también debe buscar las URL correctas para cada idioma (para el caso de que tenga un cambio de idioma en su sitio)

  3. No tiene casi ningún beneficio. Muchos navegadores hoy en día incluso comienzan a ocultar la url completa, solo muestran el dominio, o incluso solo el identificador en el certificado ssl.

Flyingmana
fuente
Sin embargo, ¿para el SEO todavía importa según mi información?
Melvyn
0

Si el SEO es su principal preocupación, entonces simplemente debe usar los atributos rel = "alternate" hreflang = "x" en su encabezado para decirle a los motores de búsqueda (Google) que la página que se está viendo es una traducción exacta de otra página.

Google no solo comenzará a indexar sus páginas traducidas, sino que también eliminará cualquier penalización por contenido duplicado para cualquier parte de la página que no esté traducida.

La primera parte es el idioma y la segunda es el país ("it-it" Italiano-Italia o "de-ch" alemán-Suiza) si así es como se está apuntando. También siempre tiene un conjunto predeterminado.

Ejemplo para poner en cabeza:

<link rel="alternate" href="example.com/about-us" hreflang="x-default" />
<link rel="alternate" href="example.com/about-us" hreflang="en-us" />
<link rel="alternate" href="example.com/it/about-us" hreflang="it-it" /> 
<link rel="alternate" href="example.com/de/about-us" hreflang="pt-pt" />

Esto se explica bastante bien:

https://support.google.com/webmasters/answer/189077?hl=en

https://moz.com/learn/seo/hreflang-tag

SamInMontreal
fuente