Как заставить дружить Pathauto, Conditional Fields и Fieldgroup?

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

Аватар пользователя MITSUFAN MITSUFAN 7 августа 2008 в 0:37

Постараюсь максимально четко сформулировать задачу-проблему.
Есть определенный набор ССК полей (Select text), которые объеденены в группу (Fieldgroup) и связаны между собой (Conditional Fields) по принципу:

МОДЕЛЬ 1
поколение модели 1.1
поколение модели 1.2
поколение модели 1.3

МОДЕЛЬ 2 (не имеет поколений)

МОДЕЛЬ 3
поколение модели 3.1
поколение модели 3.2
поколение модели 3.3

и т.д.

Адрес ноды, точнее его синоним, формирую при помощи Pathauto по шаблону [МОДЕЛЬ] / [ПОКОЛЕНИЯ МОДЕЛИ] / [АВТОР НОДЫ].

Всё бы хорошо, но сразу столкнулся с проблемой, а именно "модели" у меня - это поле ССК типа select text, "поколения" для конкретных "моделей" - это отдельные поля типа select text, с указанными зависимостями от значений поля "модели" и чтобы сформировался правильно путь мне нужно составить шаблон типа:
[МОДЕЛЬ] / [ПОКОЛЕНИЯ МОДЕЛИ 1] / [ПОКОЛЕНИЯ МОДЕЛИ 3] / [ПОКОЛЕНИЯ МОДЕЛИ n] / [АВТОР НОДЫ],
предполагая, что если автор выбрал какое-то значение из списка "поколения модели 1" для конкретной "модели 1", то все остальные поколения для других моделей проигнорируются и путь сформируется правильно:
[МОДЕЛЬ 1] / [ПОКОЛЕНИЕ МОДЕЛИ 1.1] / [АВТОР НОДЫ].

Но на деле оказывается всё не так гладко и получается такая вот ромашка:
[МОДЕЛЬ 1] / [ПОКОЛЕНИЕ МОДЕЛИ 1.1] / [ПОКОЛЕНИЕ МОДЕЛИ 3.1] / [ПОКОЛЕНИЕ МОДЕЛИ n.1] / [АВТОР НОДЫ]

Причина тому значения полей "поколение модели" по умолчанию - это первое значение из списка. И Pathauto логично подсасывает все их значения, т.к. я их указал в шаблоне, наивно предполагая, что они проигнорируются, т.к. на деле они не активированы автором.

Решил эту проблему следующим образом:
в каждое поле "поколение" первым значением в списке выставил сочетание <>, которое Pathauto при формировании пути по шаблону просто удаляет, как запрещенные символы. И было мне счастье, но не долго. Читаем дальше.

Например автору нужно сформировать рассказ о своей машине модели 1 -> поколения 1.3
Если вдруг автор оказался любопытным человеком или просто сутра после хорошей вечерины вместо нужной ему модели 1 выбрал другую, например, модель 3 и более того понажимал на списке значений её поколений (т.е. сбил значение по умолчанию мои <>), а потом одумался и выбрал нужную ему модель 1 и её поколение 1.3, то Pathauto сформирует вот такой неправильный (не такой, как я хочу) путь:
[МОДЕЛЬ 1] / [ПОКОЛЕНИЕ МОДЕЛИ 1.1] / [ПОКОЛЕНИЕ МОДЕЛИ 3.1] / [АВТОР НОДЫ]

Решение этой проблемы мой мозг в тандеме с уровнем моих познаний друпала пока не придумал. Лишь есть смутные представления о том, что можно ли в шаблонах Pathauto проставлять что-то типа OR между [ПОКОЛЕНИЯ МОДЕЛИ] или как-то в полях ССК, в частности Conditional Fields, указать, что если выбрано значение в одном из зависимых от "МОДЕЛИ" поле, то все остальные поля "ПОКОЛЕНИЯ n" вернуть в "значение по умолчанию", а не запоминать случайно (или умышленно) сделанный в них выбор.

Буду ОООЧЕНЬ признателен за всяческое содействие в решение этой проблемы.
Спасибо всем не безучастным.

Комментарии

Аватар пользователя MITSUFAN MITSUFAN 7 августа 2008 в 16:29

Возможно было бы эту задачу решить средствами таксономии, но заголовок той самой ноды у меня формируется модулем Automatic Nodetitles, который при использовании ССК зависимых полей чудесно формирует заголовок из них по указанному шаблону, а вот с терминами таксономии у него гибкости не хватает и он учитывает только последний выбранный термин из словаря.
Т.е. если я использую поля

МОДЕЛЬ 1
поколение модели 1.1
поколение модели 1.2
поколение модели 1.3

МОДЕЛЬ 2 (не имеет поколений)

МОДЕЛЬ 3
поколение модели 3.1
поколение модели 3.2
поколение модели 3.3

и т.д.

я запросто могу собрать заголовок вида [МОДЕЛЬ] [ПОКОЛЕНИЕ],
а если я использую древовидный словарь, для выбора модели и её поколения, то при формировании заголовка мне доступно только [ПОКОЛЕНИЕ].
Если использовать в шаблоне [termpath-raw], то заголовок выглядит не совсем эстетично: МОДЕЛЬ//ПОКОЛЕНИЕ
Но при всем при этом при использовании варианта с таксономией, pathauto выстраивает пути правильно.

В моем случае реализация задачи средствами ССК более предпочтительна.
Замкнутый круг.