Drupal и переводы. Модуль Internationalization (I18n). Алиасы и меню. Hierarchical Select
Это как бы продолжение поста Модули Path, Pathauto и i18n Drupal.
На мультиязычном сайте, при добавлении перевода в тип материала, который имеет иерархию в меню и берет алиасы из меню (например, /menu1/menu1_1/material1) портятся алиасы, так как при добавлении перевода мы не можем выбрать в меню пункт меню на нужном языке (языке добавляемого перевода), потому что модуль подставляет наш, текущий язык. Для иерархического выбора меню используется модуль Hierarchical Select.
Не знаю, может быть, решение неверно, но мне оно помогло:
Правим модуль Internationalization (I18n):
Идем в директория_вашего_сайта\www\sites\all\modules\i18n\, открываем файл i18n.pages.inc
Находим там строчку 53:
if (node_access('create', $node)) {
И правим:
if (node_access('create', $node)) {
/* ^patch^ Меняем пути для переводов. При добавлении нового перевода портятся алиасы,
* если алиасы настроены именно на путь меню
* (из-за того, что не дает выбрать нужный пункт меню для языка, на каоторый переводим, так
* как текущий язык - не тот, на который мы переводим). Меняем текущий язык в пути на язык нужного перевода
* */
/*-*/// $options[] = l(t('add translation'), 'node/add/'. str_replace('_', '-', $node->type), array('query' => "translation=$node->nid&language=$language->language") + $params);
/*+*/ $data_lang = l(t('add translation'), 'node/add/'. str_replace('_', '-', $node->type), array('query' => "translation=$node->nid&language=$language->language") + $params);
/*+*/ $options[] = str_replace ("/".$node->language."/", "/".$language->language."/", $data_lang);
/*^patch^*/
}
$status = t('Not translated');
}
Мы просто поменяли текущий язык в пути.
Благодарю за ответ! 🙂
Про файл и вправду не написала))). Этот i18n.pages.inc. Исправила в тексте.
с
А какой файл править нужно, подскажите пожалуйста.