[Решено] Задаем URL ноды с помощью PathAuto и доп. CCK поля

Главные вкладки

Аватар пользователя Creed Creed 2 марта 2009 в 0:56

Имеется cck поле, куда вручную вводим синоним названия ноды на английском языке. Необходимо, чтобы если это поле не пустое, то в качестве URL aliasа ноды использовалось его содержимое, а если пустое то название ноды транслитом. Как сделать название транслитом или использовать в качестве названия CCK поле по отдельности я знаю. А не подскажете, как можно реализовать такой вот автоматический выбор? Заранее спасибо.
Версия Drupal 6.10

Комментарии

Аватар пользователя Creed Creed 2 марта 2009 в 11:39

Появилась идея как это можно сделать, но чтобы реализовать не хватает знаний PHP. Может кто поможет? Поидее всего пара строчек кода. В общем делаем некое поле computed field, где будет проверяется не пустое ли поле english_name, если не пустое, то нашему computed field полю присваивается его значение, а если пустое то присваивается значение nodetitle. Ну а в URL Aliasах в качестве URLа ноды используем значение computed fieldа.

Помогите, плз, написать код для этого computed fieldа.

Аватар пользователя Creed Creed 2 марта 2009 в 15:19

Распишу подробнее может кому пригодится. Я делаю сайт небольшой тематической электронной библиотеки. У меня есть тип контента Книга. Но книги есть как и изначально русские, так и переведенные. И я хотел чтобы в случае с переведенными книгами URL ноды выглядел не как русское название транслитом, а как оригинальное название книги. Поле оригинальное название (origtitle) у меня и так было, только в изначально русских книгах оно было пустое. Поэтому я создал дополнительное скрытое текстовое поле bookurlalias типа computed и в нем прописал:

$node_field[0]['value'] = ($node->field_origtitle[0][value])?$node->field_origtitle[0][value]:$node->title;

А в настройках модуля Pathauto в шаблоне адреса ноды типа Книга изпользовал токен [field_bookurlalias-raw].

С Друпалом я пока разбираться только начинаю, как и вообще с темой создания сайтов, так что пожалуйста поправьте если был какой-то более простой способ.