Добрый день.
Такой вопрос.
Допустим, происходит заполнение многоязычного сайта, у которого есть русская версия (по умолчанию) и английская.
Для этого используется модуль i18n.
К примеру, ввели русскую версию страницы "Контакты", прописали у нее алиас как contacts. Затем выбирается вкладка "Перевод" и добавляется перевод - английская версия этой страницы.
Скажите пожалуйста, как проще всего сделать, чтобы при открытии формы добавления этой ноды с английской версией страницы поле алиаса автоматически устанавливалось бы также в "contacts" ?
Причем, не после того, как англоязычная нода сохранится, а именно при открытии формы добавления этой ноды.
Написать хук или есть модуль, который это делает ?
Комментарии
Скажите пожалуйста, Вам удалось решить эту проблему?
В случае использования Entity Translation эту проблему можно решить следующим образом.
Допустим, у нас уже введена русская версия страницы "Контакты" и её алиас мы назвали contacts.
Нам нужно, чтобы при редактировании английской версии этой страницы также был прописан алиас contacts.
Это можно сделать таким образом.
Перехватывается function hook_form_BASE_FORM_ID_alter и в тот элемент формы, куда будет вводиться алиас (при том, что алиас туда еще не введен), записать алиас, взятый из русской версии страницы.
Алиас можно получить с помощью SQL-запроса к таблице url_alias, nid данной ноды мы знаем.
Как добраться для элемента формы, хранящей алиас - можно это посмотреть, используя функцию kpr($form); из devel внутри этого хука.
уже 5-раз пересматриваю то что возвращает kpr($form) - и не могу найти этот инпут хранящий алиас
Вот здесь это хранится
А так устанавливается внутри хука
странно, у меня не показывало вообще алиас в объекте, но когда написал вашу строку
<?php$form['path']['alias']['#default_value']='new-alias';?>
то и kpr($form) начал его отображать. Спасибо за помощь, этот способ работает. я в модуле так сделал (может кому-то пригодится)<?php
«...»
if($form_id == 'page_node_form')
{
$mytnid = $form['#node']->tnid;
$res = db_query('SELECT alias FROM {url_alias} WHERE source = :source',
array(':source' => 'node/' . $mytnid))->fetchField();
$form['path']['alias']['#default_value']='' . $res;
}
?>
в результате при создании перевода урл автоматом вписывается такой же как и у базовой страницы (которую переводили), осталось только добавить проверки, если ее еще нету (то есть создается не перевод, а сама страница)
Ребята по сей день нет стандартного решения для этого?
UPD
Используйте для базового языка токен [node:title], а для остальных языков токен [node:source:title]. Все это для шаблонов url admin/config/search/path/patterns