Литиевые трассы с разными локалями

У меня есть маршрут i18n в Li3, который выглядит так:

Router::connect('/{:locale:[a-z]{2}/{:args}', [], [
'continue' => true,
'persist' => ['locale'],
]);

Таким образом, когда пользователь (или сканер) входит на мой сайт с префиксом языка, локаль используется для создания каждой ссылки на сайте.

Для целей SEO мне нужно создать URL-адреса в других локалях, таких как:

GET /en/profile/john-doe
Canonical URL: https://www.example.com/en/profile/john-doe
Link hreflang for es: https://www.example.com/es/profile/john-doe
Link hreflang for pt: https://www.example.com/pt/profile/john-doe

Мой валютный подход заключается в клонировании текущего запроса, изменении локали, удалении locale от persist массив и использование $request->to('url', ['absolute' => true]);,

Но я не могу избавиться от локали.

Любые предложения о том, как решить эту проблему?

3

Решение

Я наконец решил это расширение HTML вспомогательный класс:

use lithium\template\helper\Html as BaseHtml;

class Html extends BaseHtml
{
/**
* Returns href lang link for a locale for the current request.
*
* @param string $locale
* @return string <link />
*/
public function getHrefLinkForLocale($locale)
{
return $this->link(
'Canonical URL for ' . $locale,
compact('locale') + $this->getRequest()->params,
[
'absolute' => true,
'rel' => 'alternate',
'type' => 'alternate',
'hreflang' => $locale,
]
);
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]