PathAuto + Taxonomy: УРЛ родительского термина с [termalias] + вывод по нему же и материалов дочерних под-терминов (/term/2/all)

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

Аватар пользователя SkyD SkyD 25 декабря 2009 в 21:21

Друзья!

Второй день думаю над решением задачи с PathAuto (6.x-1.2) и Taxonomy и, похоже, глаза у меня замылились совсем:

У меня есть словарь "Разделы сайта", одним из его терминов является "Встречи" (т.е. соотв-й раздел), он является родительским для ещё двух терминов: "Игры" и "Посиделки", т.е.:
...
Встречи (раздел сайта), URL алиас термина [синоним] - /events
— Игры (подраздел "Встреч"), URL алиас - /games
— Посиделки (подраздел "Встреч"), URL алиас - /talks
...

Я установил и настроил PathAuto и задал следующий шаблон для адреса материалов:
[termalias]/[title-raw]-[nid].

И всё работает отлично, НО:
- в разделе "Встречи" будут материалы, которые НЕ попадают в подразделы (не относятся ни к Играм, ни к Посиделкам - просто Встречи);
- при этом я хочу, чтобы при заходе на mysite.ru/events выводились материалы и из самих "Встреч" и из его подразделов (Игры/Посиделки).

Во что упираюсь:
Чтобы выводить материалы, относящиеся и к термину и к его дочерним под-терминам, надо делать /events синонимом (алиасом) не taxonomy/term/2 (термин "Встречи"), а taxonomy/term/2/all.
Но тогда перестаёт работать шаблон PathAuto с [termalias], т.к. у термина "Встречи" исчезает алиас.

P.S.
Если что-то написал непонятно - смело спрашивайте, ибо у меня есть подозрение, что я "передумал" и не замечаю какого-то простого решения.

P.P.S.
И заранее благодарю за помощь Smile

Комментарии

Аватар пользователя oboroten oboroten 25 декабря 2009 в 22:32

Если это не критично, почему бы не использовать views и его стандартное представление taxonomy_term задав нужную глубину погружения в аргументах?
Тогда в родительском термине будут отображаться материалы дочерных терминов.

Аватар пользователя SkyD SkyD 27 декабря 2009 в 6:34

"oboroten" wrote:
почему бы не использовать views и его стандартное представление taxonomy_term

Я знаю, что при помощи Views выводят термины таксономии разным нестандартным образом (по алфавиту и т.п.), но я никогда не использовал Вьюс именно с этой целью.

"oboroten" wrote:
Если это не критично

А вкратце, чем это может быть критично?
Много больше запросов к базе по сравнению со стандартным способом?

Кстати, если есть хороший линк про связку Views+Taxonomy, с удовольствием почитаю (в т.ч. английский) [сам нашёл только какие-то урывки].

P.S.
А в целом, думаю, использование Views вполне возможно, хотя в первую очередь, я конечно, ищу какой-то более стандартный вариант.

Аватар пользователя DennisVV DennisVV 27 декабря 2009 в 18:46

если я правильно понял задачу, то делается вьюсом и в нем фильтры настраиваются, вот и все...
ну это для тех, кто совсем со вьюс дела не имел
вьюс

Аватар пользователя oboroten oboroten 28 декабря 2009 в 20:16

я имел в виду что иногда заказчик/хозяин сайта просит обойтись без views ну и несколько возрастает нагрузка на хост. правда на более менее нормальном хосте это незаметно.
К сожалению нормальной документации я и сам не находил.

А кто сказал что views это не стандартный вариант?
Ваша задача требует показать материалы из подкатегорий. Этого таксономия сама по себе не может сделать. Отсюда вывод - писать модуль, писать какой-нибудь снипет или использовать views.

Если использовать views для этой задачи то можно обойтись без особого углубления в изучение. Установите модуль, а потом включите taxonomy_term (default) теперь все категории будут отображаться через вювс. Для того чтобы отобразить дочерние категории выберите изменить и в Аргументах (Таксономия: ID Термина (с глубиной)) выставте нужную глубину.

Аватар пользователя SkyD SkyD 29 декабря 2009 в 13:30

"DennisVV" wrote:
ну это для тех, кто совсем со вьюс дела не имел
вьюс

Спасибо, с первого взгляда выглядит подробно. Вечером обязательно почитаю.

"oboroten" wrote:
Установите модуль, а потом включите taxonomy_term (default) теперь все категории будут отображаться через вювс.

Да, я уже сам поопробовал и вернулся сюда как раз с этим вопросом.

А можно ли как-то сделать так, чтобы через Views выводился только отдельный термин/-ы таксономии?
А остальные работали как раньше, стандартным образом?

Аватар пользователя DennisVV DennisVV 29 декабря 2009 в 17:18

"SkyD" wrote:
чтобы через Views выводился только отдельный термин/-ы таксономии?

можно
настраивается через фильтр

Аватар пользователя oboroten oboroten 30 декабря 2009 в 19:50

там где путь для страницы стоит taxonomy/term/% изменить на taxonomy/term/(номер терма) тогда вювс перепишет отображение только указанного термина

Аватар пользователя SkyD SkyD 9 января 2010 в 19:14

Прошу прощения за столь поздний ответ, но раньше ответить не получилось - новогодняя поездка + подготовка к ней.

Сразу скажу, что самостоятельно вывести через Views только отдельный термин/-ы я пытался (долго - несколькими способами; это здесь я стараюсь писать кратко), однако, в т.ч. и из-за весьма скудной документации, у меня это сделать пока не получилось.

"DennisVV" wrote:
настраивается через фильтр

Я добавил для типа Page в "блоке настроек" "Фильтры" (нижний в правой из трёх колонок) следующий фильтр:
Groups: Таксономия: Term (это выбирается при создании),
оператор: "Is one of" и рядом выбрал в списке нужные мне термины.

Однако, похоже, это не сработало, т.е. и другие термины таксономии продолжают выводиться через Views. Я это определяю по тому, что не отображается текст из поля "Описание", имеющегося в свойствах термина.

"oboroten" wrote:
taxonomy/term/% изменить на taxonomy/term/(номер терма)

Собственно, я это в первую очередь попробовал Smile

Исправлено 09.12: сначала у меня после этого действия перестали работать вообще все термины, сейчас - только тот, который пытаюсь выводить через Views.
При запросе site.ru/alias или site.ru/taxonomy/term/N (N - номер родительского термина, который хочу выводить) выдаётся ошибка "Запрашиваемая страница не найдена".

Этот знак процента, как я понимаю, представляет собой параметр, принимаемый при выполнении кода созданного вьюса, а тут мы его так брутально выносим.

Аватар пользователя oboroten oboroten 11 января 2010 в 19:45

"SkyD" wrote:
Исправлено 09.12: сначала у меня после этого действия перестали работать вообще все термины, сейчас - только тот, который пытаюсь выводить через Views.
При запросе site.ru/alias или site.ru/taxonomy/term/N (N - номер родительского термина, который хочу выводить) выдаётся ошибка "Запрашиваемая страница не найдена".

Этот знак процента, как я понимаю, представляет собой параметр, принимаемый при выполнении кода созданного вьюса, а тут мы его так брутально выносим.

А вы не пробовали создать новый вювс по примеру стандартного и ему задать taxonomy/term/N стандартный вообще отключить?
Так же можно добавить в стандартный отображение страница и уже ей указать конкретный термин (taxonomy/term/N).
Ещё вариант отключить стандартный после чего создать новый вювс типа страница, задать ему путь taxonomy/term/N, и задать фильтр Taxonomy: Term ID (with depth) где указать нужный термин и глубину погружения.

Аватар пользователя SkyD SkyD 15 января 2010 в 1:29

"oboroten" wrote:
не пробовали создать новый вювс по примеру стандартного и ему задать taxonomy/term/N стандартный вообще отключить?

С самого начала так и делаю - включаю стандартный, делаю "Clone" и выключаю. Редактирую уже копию. (хотя, судя по длкам, это должно происходить и автоматически, т.к. "встроенные" вьюсы хранятся в коде и не могут изменяться).

"oboroten" wrote:
можно добавить в стандартный отображение страница и уже ей указать конкретный термин (taxonomy/term/N)

Эммм... Я с самого начала перед любым редактированием работал с "Page" (выбирается при редактировании вьюса слева, там еще Defaults и Feed). Соответсвенно, я думал, что мы уже об этом и говорим Smile

"oboroten" wrote:
создать новый вювс типа страница, задать ему путь taxonomy/term/N, и задать фильтр Taxonomy: Term ID (with depth)

Опытным путём я понял, что фильтры работают иначе - они фильтруют вывод, в то время как мне надо фильтровать ввод.
Если добавить фильтр, то вьюс всё ещё будет отрабатывать на всех страницах (терминах), но выводиться что-то будет только на указанной в фильтре (остальные будут пустыми).

Summary:
Большое спасибо всем, кто откликнулся, за помощь, дальше я буду разбираться сам.

Эту тему я создал рассчитывая, что кто-то уже решал подобную (и, как мне казалось, распространённую) задачу и может поделиться конкретными советами из собственного опыта.

Но, похоже, что все либо напрямую включают Views для всех терминов таксономии, либо не хотят рассказывать о своих наработках. Видимо и мне придётся постичь тайное знание самому, чтобы потом молча сидеть с ним, раздуваясь от гордости Smile
Ну или смириться с тем, что вся моя Taxonomy плавно превратилась в Views 2 Smile

Аватар пользователя oboroten oboroten 17 января 2010 в 22:58

"oboroten" wrote:
Ещё вариант отключить стандартный после чего создать новый вювс типа страница, задать ему путь taxonomy/term/N, и задать фильтр Taxonomy: Term ID (with depth) где указать нужный термин и глубину погружения.

Эммм вы невнимательно прочли... для этого решения нужно вообще отключить стандартный вювс для таксономии и любой его клон тогда таксономия будет отображаться стандартно кроме термина определённого во вювс..