Добрый день.
Имеется сайт с кастомной темой, добавляю 2й язык. переводы лежат в тех же нодах, что страницы на оригинальном языке. При построении меню использую следующий код:
<?php
$items = get_menu_weight($menuName, $language->language);
foreach($items as $item) {
$alias = drupal_lookup_path('alias',$item->link_path,$item->language);
...
if ($item->link_path == "http://"){
$drawItems .= '<li><i>'.$item->link_title.'</i>';
}else{
if($alias == "/"){
$drawItems .= '<li><a href="http://'.$_SERVER['HTTP_HOST'].'/" title="'.$item->link_title.'">'.$item->link_title.'</a>';
}else{
$drawItems .= '<li><a href="http://'.$_SERVER['HTTP_HOST'].'/'.$alias.'" title="'.$item->link_title.'">'.$item->link_title.'</a>';
}
}
...
}
?>
в случае с языком оригинала ulr возвращается в виде:
mysite.com/mypage
в случае со вторым языком:
mysite.ru/node/id
как привести все к виду основного языка?
Буду рад любым советам так как потратил уже довольно много времени на поиск решения самостоятельно.
Комментарии
попробуй использовать функцию drupal_lookup_path без указания языка.
В общем посмотреть подобные или эти функции drupal_get_normal_path, drupal_get_path_alias.
Так же было увидено в интернете:
$aliaspath = drupal_get_path_alias(arg(0).'/'.arg(1));
$aliaspath = explode('/', $aliaspath );
В общем я только накидал варианты для размышления... если все совсем печально, то выведи на языке где ссылки не айс print_r($items) и скинь сюда.
покрутил варианты с описанными функциями, ни одна из них не вернула алиас, добавленный в перевода только node/id.
мне кажется что то пропущено в настройках языка
случайно запостил ответ дважды, не нашел возможности удалить, ссори за оффтоп
Попробуй корректно настроить модуль pathauto и обнови ссылки. Из вопросов, какой модуль мультиязычности используется? И доступна ли английская версия сайта по красивому адресу?
я в описании кинул пример с языками наугад, для наглядности. а сайт:
http://www.optionrally.com.au/ <- оригинальный язык
http://www.optionrally.com.sa/ <- перевод, но этот домен не реган (109.201.133.6)
Я так понимаю должно быть что то типа http://www.optionrally.com.au/my_page на одном языке и на втором языке http://www.optionrally.com.sa/my_page? такие вещи требуют дополнительной настройки апатча если не ошибаюсь, по крайней мере с вордпрессом было необходимо...
да, но сами url доступны, проблема в том, что drupal не выдает их в таком виде для второго языка
Не знаю как объяснить то, что мой пример не работал, но я переписал код:
<?php
$hstpath = translation_path_get_translations($item->link_path);
array_walk($hstpath, function(&$v, $k){$v = drupal_get_path_alias($v,$k);});
?>
и проблема решилась.
В любом случае, всем спасибо за помощь
Не знаю как объяснить то, что мой пример не работал, но я переписал код:
<?php
$hstpath = translation_path_get_translations($item->link_path);
array_walk($hstpath, function(&$v, $k){$v = drupal_get_path_alias($v,$k);});
?>
и проблема решилась.
В любом случае, всем спасибо за помощь
поставь в теме пометку [решено] тут как бы так заведено.