Иерархические url

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

Аватар пользователя claster80 claster80 17 июня 2011 в 21:57

Уважаемое сообщество, обращаюсь так как мои попытки решить проблему ни к чему не приводят уже сутки.

Создаю первый сайт на Drupal. Создал словарь таксономии:

Разделы:
Косметология
- Уход за кожей
- Маски для лица и волос
....

Красивое тело
- Секреты красоты
- Красивая грудь
....

...

Установил pathauto, у каждого термина есть свой url алиас, каждому термину принадлежит по одной статье.

Проблема в следующем - я хочу чтобы у нод был Url по типу: {термин таксономии}/{дочерный термин таксономии}/{алиас ноды}

В настройках pathauto не нашел подходящей переменой из токена, чтобы можно было это реализовать, поэтому сейчас алиас это просто название ноды в транслите Sad

Пожалуйста подскажите каким образом это реализовать.

Кроме этого есть еще два вопроса, на которые очень хотелось бы узнать ответ:

1. По переходу на страницу термина таксономии не отображаются ноды, которые принадлежат дочерным терминам. Это можно решить без Views?
2. Каким модулем необходимо пользоваться чтобы создать многоязычность, построенную по принципу сайта - www.family-budget.su

Комментарии

Аватар пользователя k-s k-s 17 июня 2011 в 22:13

1. Ждать http://drupal.org/node/691078 или использовать патч оттуда, чтобы появились нужные токены
2. Можно к примеру сохранять в ноде не конечный термин, а всю цепочку, тогда нода будет и там и там, но для этого нужен Hierarchical Select, а он не готов
3. i18n / Internationalization

Аватар пользователя NightL NightL 18 июня 2011 в 0:38

Для отображения всех нод у дочерних терминов

taxonomy/term/N/all

N - id термина. либо выборочно вместо all - 1+2 и т.д

Аватар пользователя claster80 claster80 18 июня 2011 в 16:44

"Xermit" wrote:
Создайте свой токен и не мучайтесь, что то типа [full-term-path-with-alias-for-node-raw].

Спасибо за идею, сейчас попробую.
Дело в том что друпал только изучаю и хочется делать всё "правильно", не ломаю логику и т.п. ) Думаю токены не противоречат логике системы

Аватар пользователя misterBald misterBald 3 августа 2012 в 14:01

Теме уже больше года, но все равно напишу как я решил подобную проблему.

Итак, дано:

1) Словарь "Категории" со структурой:
- Пневматическое оружие (pnevmaticheskoe-orujie)
-- Винтовки (vintovki)
-- Пистолеты (pistoleti)
-- Пульки (pulki)
-- Прицелы (priceli)
- Травматическое оружие (travmaticheskoe-orujie)
-- Короткоствольное (korotkostvolnoe)
-- Бесствольное (besstvolnoe)
-- Патроны (patroni)
ну и так далее

2) Для материала типа "Статья" добавлено поле "Категория" с машинным именем "field_category" и типом хранения данных "Ссылка на термин". (При добавлении новой статьи соответственно необходимо будет указать к какой категории она принадлежит.)

Задача:

Создать трехуровневую структуру, то есть:

1) Для терминов словаря "Категории" добиться следующей структуры url:

а) http://www.site.ru/{Родительский термин}
Например: _http://www.site.ru/pnevmaticheskoe-orujie

б) http://www.site.ru/{Родительский термин}/{Дочерний термин}
Например: _http://www.site.ru/pnevmaticheskoe-orujie/vintovki

2) Для материалов типа "Статья", классифицированных по терминам словаря "Категория" добиться следующей структуры url: http://www.site.ru/{Родительский термин}/{Дочерний термин}/{Заголовок статьи}.html
Например: _http://www.site.ru/pnevmaticheskoe-orujie/vintovki/izh-60.html

Решение:

1) Потребуются следующие модули:
- Token (включает токены, необходим для работы Pathauto)
- Entity (дополнительные токены, состоит из Entity API и Entity tokens)
- Transliteration (транслитерация кириллических символов)
- Pathauto (собственно формирует url)
Как установить и настроить каждый из этих модулей писать не буду, ибо эту информацию найти достаточно просто.

2) В настройках Pathauto (вкладка "Шаблоны") необходимо с помощью токенов задать вид url для терминов таксономии и для материалов.

Для терминов таксономии прописываем: [term:parent]/[term:name]

Пример: _http://www.site.ru/pnevmaticheskoe-orujie/vintovki
[term:parent] = pnevmaticheskoe-orujie
[term:name] = vintovki

Для материалов решение тоже простое, но найти его труднее. Тут нам помогает модуль Entity (Entity API + Entity tokens), именно он добавляет дополнительные токены: [node:field-category:parent] и [node:field-category]. (Змаечание: "field-category" тут соответствует классификации материалов типа "Статья" с помощью поля "Категория" с машинным именем "field_category". Подчеркивание заменили на дефис.)

Таким образом для материалов прописываем: [node:field-category:parent]/[node:field-category]/[node:title].html

Пример: _http://www.site.ru/pnevmaticheskoe-orujie/vintovki/izh-60.html
[node:field-category:parent] = pnevmaticheskoe-orujie
[node:field-category] = vintovki
[node:title] = izh-60

Более сложная структура

В принципе, благодаря Entity можно реализовать и четырехуровневую структуру:

_http://www.site.ru/pnevmaticheskoe-orujie/vintovki/pruzinno-porshnevie/i...

Соответственно для терминов: [term:parent:parent]/[term:parent]/[term:name]

Для материалов: [node:field-category:parent:parent]/[node:field-category:parent]/[node:field-category]/[node:title].html

Аватар пользователя iNFerNo iNFerNo 3 августа 2012 в 14:02

а у вас можно выбрать Пневматическое оружие и не выбирать под уровни ?

пи.сэ. есть ли для 7ки решение что бы родителя неактивным сделать для выбора...

Аватар пользователя misterBald misterBald 3 августа 2012 в 14:22

Извиняюсь, если не совсем правильно понял вопрос, но попробую ответить.

Да, существует такой url: _http://www.site.ru/pnevmaticheskoe-orujie и в нем будут отображены все материалы классифицированные термином "Пневматическое оружие", но не будет материалов относящихся к терминам "Винтовки", "Пистолеты" и тд. Т.е. когда прописывается [term:parent]/[term:name] и оказывается что родительского термина [term:parent] нет, то выводится только /[term:name]

На счет того, чтобы сделать родительский термин неактивным - не могу сказать, с друпалом работаю чуть больше недели.