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');
    }

Мы просто поменяли текущий язык в пути.

Рекомендовать в Социальных сетях:
 

Комментариев 4 на “Drupal и переводы. Модуль Internationalization (I18n). Алиасы и меню. Hierarchical Select

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *