Я установил мультиязычный сайт в Drupal 7. В шаблоне мне нужно добавить ссылку на определенный узел контента. Этот узел имеет переводы и псевдонимы пути, например:
node/42 = pathalias_de (german version)
node/43 = pathalias_en (english version)
В шаблоне я хотел бы позвонить, url()
чтобы получить ссылку на псевдоним версии узла содержимого на текущем языке.
На немецкой странице должна быть ссылка /de/pathalias_de
на английскую страницу/en/pathalias_en
Я пробовал несколько вариантов, таких как вызов nid, вызов псевдонима, передача текущего объекта языка url()
.
Это что-то url()
должно уметь делать или мне нужна другая функция? Спасибо!
источник
$translations = translation_path_get_translations(drupal_get_normal_path("pathalias_de","de"));
для поиска псевдонима вместо идентификатора узла, это более гибко. Вы должны передать правильный язык, хотя.источник
Посмотрите на функцию drupal_get_path_alias
Как вы можете заметить, он принимает параметр path_language. Таким образом, вы можете узнать текущий язык и затем перейти к этой функции.
Или просто используйте модуль Multilink
источник
drupal_get_path_alias()
не будет искать для перевода данного узла, только для псевдонимов уже в данном языке. Я нашел другой обходной путь, см. Мой ответ ниже.Похоже, что ни один из приведенных выше ответов не правильно использует i18n_path. Если вы хотите связать с переведенным узлом, вы должны просто включить модуль i18n_path и отформатировать путь таким образом,
источник
Вы, вероятно, должны использовать функцию ссылки . Он позволяет передавать язык в качестве параметра, и это подходящая функция для создания ссылки с Drupal.
источник
l()
используетurl()
внутри, так что это не имеет значения в этом случае.Используя Перенаправление переводов, вы можете связать узлы с префиксом языка.
Вот что он говорит:
Например, если nid 22 для английской версии и имеет французскую и немецкую версии, вы можете просто ссылаться на них как fr / node / 22 и de / node / 22. Это 22 также может быть любой nid переведенной версии.
Если конкретный перевод не найден, например, если вы не добавили японский, то ja / node / 22 выдаст 404 для анонимных пользователей.
источник
Чтобы получить правильный путь префикса, я использую:
Drupal_get_path_alias () возвращает только псевдоним, а url () - тот, который добавляет префикс ("en /").
источник