Как работают relationships (связи, отношения) во Views? На примере Views + i18n

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

Аватар пользователя Lex-DRL Lex-DRL 11 марта 2010 в 12:42

Посмотрел уже несколько туторов по views, прочитал оф.справку, погуглил по друпал.ру и .орг, но всё никак не могу понять одного: что такое связи (отношения, relationships) и как они работают?
Методом тыка кое-где они у меня даже задействованы. Но тот факт, что принцип их работы я не понимаю до конца, удручает.

В частности, сейчас сделал на сайте мультиязычность - теперь ломаю голову, как отфильтровать во вьюсах выводимые ноды, чтоб отображались только те, которые либо на нейтральном языке, либо на текущем языке просмотра.
В фильтрах есть только "жёсткие" варианты (дефолтный язык, язык юзера, конкретный язык).
В "отношениях" нашёл "Node translation: Translations" с вариантом "Current language". Вот только к какому фильтру это цеплять - ума не приложу. Метод тыка уже не помогает.

Если не трудно, объясните, пожалуйста, принцип функционирования связей "на пальцах". Или на вышеозначенном примере.

Буду также признателен за отсыл к толковому тутору, где досканально разъясняются relationships.

Комментарии

Аватар пользователя Lex-DRL Lex-DRL 12 марта 2010 в 20:47

Вторую ссылку уже читал - ничего не понял. За первую ссылку - благодарю, вроде немного прояснилось.
Уточнение: я правильно понимаю, что связи как бы сообщают Вьюшкам "вместо вывода значений из самого полученного результата бери их вот из этого у полученного результата"?
И всё равно небольшая путаница по поводу того, как именно работают связи с аргументами, фильтрами и сортировкой.

Аватар пользователя Crea Crea 12 марта 2010 в 21:10

Грубо говоря, relationship - инструкция, как подключить дополнительную таблицу на основе данных базовой.

Аватар пользователя stddos stddos 13 марта 2010 в 7:19

Допустим мы передаем аргумент id термина таксономии, по сути должны выбраться все ноды с этим термином, но если использовать зависимость (relationship) например parent term (родительский термин) к этому аргументу, то выберутся ноды у которых id родительского термина тот который мы передали как аргумент.

Аватар пользователя Lex-DRL Lex-DRL 13 марта 2010 в 9:56

Большое спасибо и нижайший поклон - вот теперь разобрался. Меняется не само значение аргумента/фильтра/поля - а то, к чему оно применяется.
Возник встречный вопрос: на этом примере - как при передаваемом этом же id отобразить ноды родительского термина? Т.е. по ходу дела id должен как-то преобразоваться в родительский.
Или:
Если в аргумент передаётся id текущей ноды, как отобразить другие ноды, связанные не с ней самой, а с её переводом на текущий язык (скажем, через nodereference - хотя у меня немного др. задача)?

Аватар пользователя stddos stddos 14 марта 2010 в 14:47

"Lex-DRL" wrote:
как при передаваемом этом же id отобразить ноды родительского термина?

просто использовать в качестве аргумента не taxonomy term id а taxonomy parent term
По второму что-то я с переводами дела не имел пока, даже и не отвечу точно.

Аватар пользователя Lex-DRL Lex-DRL 14 марта 2010 в 20:30

ОК. Значит, как я понял, средствами Views - никак. Либо самому писать дополнительный аргумент для Views на php (что в моём случае не подходит, т.к. нее умею), либо ставить модуль, который этот аргумент добавит (что опять же не подходит, т.к. разработчик модуля не включил такую возможность).
Благодарю за помощь.

Аватар пользователя anzurat anzurat 10 апреля 2014 в 8:49

"nabusi" wrote:
Делаешь несколько views, для каждого языка свой и выводешь

Вопрос. Сделала 2 отдельных Views на Рус и Eng, но название полей типа материала который сделан на 2х языках, отображается только на русском, а контент выводится на соответствующих языках. Как быть в таком случии?