Перевести ключи URL при переключении магазина

8

Надеюсь, мне удастся помочь с этой проблемой, с которой я столкнулся.

Ситуация:

У меня есть 1 веб-сайт на 5 языках (например, example.com, example.com/it и т. Д.)

Проблема:

Теперь у меня есть example.com/about-us и example.com/it/about-us. Очевидно, я хочу, чтобы итальянская версия была похожа на: example.com/it/chi-siamo.

Я пытался перевести идентификатор и связал его в категориях продуктов, чтобы сказать «чи-сиамо». Проблема в том, что если вы пытаетесь переключиться на другой язык, он использует этот идентификатор.

Например: я в настоящее время на example.com/it/chi-siamo, но я хочу переключиться на немецкую версию, которая должна быть example.com/de/ueber-uns. Если я переключаюсь с итальянского на немецкий с помощью переключателя языка, я получаю: example.com/de/chi-siamo. Что дает 404 .

Какое решение выбрать?

el_machine
источник

Ответы:

4

Там нет решения. Magento не поддерживает это.

Я написал модуль, который проверяет идентификатор и просматривает перевод в конфигурации, а затем делает перенаправление.

Итак, у вас есть два варианта:

  1. выберите один язык и используйте его для всего - не переводите URL
  2. реализовать какой-то модуль, который делает то, что вы хотите.

Вместо описания того, как заставить этот модуль взглянуть на это: https://github.com/klein0r/magento-language-routes

Фабиан Блехшмидт
источник
2
Не могли бы вы поделиться своим модулем?
Симон
Извините, я бы не позволил, если бы я был :)
Фабиан Блехшмидт
@FabianBlechschmidt вы можете объяснить дальше. Я хотел бы разработать этот модуль. Вы вводите URL-адреса других магазинов на страницах CMS для каждого магазина?
Jrosell
1
добавил ссылку на модуль, который должен решить проблему, если он мне не скажет, я опишу более подробно, как это реализовать.
Фабиан Блехшмидт
1
Спасибо. Я нашел этот модуль, который, я думаю, я могу адаптировать. github.com/tzyganu/CmsRewrites
jrosell,
2

Я предполагаю, что у каждого из пяти языков есть свой собственный вид магазина. Если это так, вы можете реализовать это, используя Catalog> URL Rewrite Management для продуктов - по одному для каждого, store_id- а затем расширить Mage_Catalog_Model_Product_Url::getUrlдля поиска переписывания для конкретного магазина и использовать его request_pathвместо значения по умолчанию.

fantasticrice
источник
Да, я использую разные виды магазина. Поскольку я немного Nooby Magento, я не совсем уверен, что вы имеете в виду. Не могли бы вы дать мне пошаговое руководство :) Было бы замечательно.
el_machine
Я не вижу эту проблему на страницах продукта, но на страницах CMS.
Jrosell
1

Вы не должны этого делать.

  1. это добавляет еще один слой в обработке URL. Дает возможность ошибок и узких мест производительности.

  2. переключение языка становится намного сложнее, так как вам нужно не только ссылаться на другой идентификатор языка, вам также нужно выбрать правильные URL-адреса для каждого языка (в случае, если у вас есть переключение языка на вашем сайте)

  3. это почти не приносит пользы. Сегодня многие браузеры даже начинают скрывать полный URL-адрес, показывая только домен или даже только идентификатор в сертификате ssl.

Flyingmana
источник
Тем не менее, для SEO это все еще имеет значение согласно моей информации?
Мелвин
0

Если SEO является вашей главной задачей, то вам просто нужно использовать атрибуты rel = "alternate" hreflang = "x" в вашем заголовке, чтобы сообщить поисковым системам (Google), что просматриваемая страница является точным переводом другой страницы.

Google не только начнет индексировать ваши переведенные страницы, но и удалит любые штрафы за дублирование контента для любой части страницы, которая не переведена.

Первая часть - это язык, а вторая - страна (ит-ит-итальяно-итальянский или де-ч-немецко-швейцарский), если вы так настроены. Также всегда есть набор по умолчанию.

Пример положить в голову:

<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" />

Это объясняет это довольно хорошо:

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

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

SamInMontreal
источник