Добрый день.
Помогите пожалуйста решить проблему.
Есть сайт на английском и русском языках, необходимо настроить навигационную цепочку (Хлебные крошки, breadcrumb).
Перепробовал много модулей: custom_breadcrumbs, menu_breadcrumb, menutrails, node_breadcrumb, nodetrail, taxonomy_breadcrumb.
Из всех подошли только custom_breadcrumbs и menu_breadcrumb. (может не разобрался с остальными).
С помощью custom_breadcrumbs удается настроить хлебные крошки только для одного языка, т.е. если я настраиваю на русском - Главная - Новости - Статья_такаято, при переходе на английский, хлебный крошки остаются на русском, поскольку модуль не поддерживает вставки php кода.
Статьи вывожу с помощью views'ов и получается вот такой путь "mysite/ru(или en)/news/name_article" - в хлебных крошках должно быть так - "Главная (Home) - Новости (News) - Название статьи (Name article) "
Вот код который пишу custom_breadcrumbs, в поле "Заголовки" - "Новости [title-raw]", в поле "Пути" - "/news/ [node-path]".
Пробовал использовать вместо "Новости" [menu-raw] но не чего не возвращает
Комментарии
Вообще хлебные крошки довольно своеобразны... Мне удалось на одном три-язычном проекте победить путем перевода оных, но путь не из простых.
Попробуйте сделать так: файл template.php, в нем переопределить функцию вывода крошек. Разложить $breadcrumb на $breadcrumb_item'ы. Вместо $breadcrumb_item написать t($breadcrumb_item).
Сразу вам куча оговорок: подсмотреть как переопределить можно в каждой второй теме, потому код не привожу здесь; лучше крошки писать на англицком языке, потом переводить на русский и прочие (сами потом поймете почему) языки; много рутинной работы по вколачиванию каждого термина; автоматизировать не сумел.
К сожалению те примеры которые я нашел в темах, не решают проблем. Не могли бы вы привести пример функции которую вы используете?
t($breadcrumb_item)это пройдет только если это не термин а часть интерфейса, эта функция не переведет термин таксономии (
<?php
foreach($breadcrumb as $crumb){
preg_match_all("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $crumb, $matches);
//Выделяем текст крошки
$term = taxonomy_get_term_by_name($matches[3][0]);
//Пытаемся получить термин для перевода, но не срабатывает =(
if ($term == null) {
$translated = t($matches[3][0]); //Объект не термин
} else {
$translated = tt("term:$term->tid:name",$term->name,$lang); //Объект термин
}
$new[$i]=$matches[1][0].$translated.$matches[4][0];
$i++;
}
?>