Когда я делаю многоязычный сайт, мне хочется сделать адреса страниц симметричными по языковому префиксу, так чтобы перевод en/smth был виден по адресу ru/smth, и так далее.
Зачем? "Во-первых, это красиво!", как говорится в старом еврейском анекдоте :)).
Во-вторых, это минимизирует проблемы с внутренними ссылками: при переводе материалов не нужно каждый раз исправлять "dogs" на "sobaki" или "node/374" на "node/395", и всё равно попадёшь по внутренней ссылке куда надо.
Как это сделать? Если сайт состоит из пары десятков нод, то легко прописать все адреса вручную. Но как автоматизировать этот процесс, если нод много? Как настроить pathauto, чтобы при создании перевода сохранялся url_alias оригинальной ноды? Поле, которое связывает перевод с оригиналом - это поле "tnid" (=nid_оригинала) в таблице "node", поэтому напрашивается идея создать [tnid] token (тем более что теперь есть субмодуль "tokenSTARTER", предназначенный для дописывания собственных токенов). Сделать это тупо навскидку у меня не получилось - может, кто-нибудь подскажет, в чём грабли, может, tnid нужно доставать не через $node->tnid, а как-то более хитро?
Или у кого есть другие варианты решения? (Вводить дополнительные "технические" поля только для синхронизации адресов не хочется).
Зачем? "Во-первых, это красиво!", как говорится в старом еврейском анекдоте :)).
Во-вторых, это минимизирует проблемы с внутренними ссылками: при переводе материалов не нужно каждый раз исправлять "dogs" на "sobaki" или "node/374" на "node/395", и всё равно попадёшь по внутренней ссылке куда надо.
Как это сделать? Если сайт состоит из пары десятков нод, то легко прописать все адреса вручную. Но как автоматизировать этот процесс, если нод много? Как настроить pathauto, чтобы при создании перевода сохранялся url_alias оригинальной ноды? Поле, которое связывает перевод с оригиналом - это поле "tnid" (=nid_оригинала) в таблице "node", поэтому напрашивается идея создать [tnid] token (тем более что теперь есть субмодуль "tokenSTARTER", предназначенный для дописывания собственных токенов). Сделать это тупо навскидку у меня не получилось - может, кто-нибудь подскажет, в чём грабли, может, tnid нужно доставать не через $node->tnid, а как-то более хитро?
Или у кого есть другие варианты решения? (Вводить дополнительные "технические" поля только для синхронизации адресов не хочется).
- Блог
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии