Контекстный фильтр по аргументу, которого нет в URL
Добрый день. Такой вопрос: как вывести на странице ноды в блоке список всех схожих с ней по некому полю других нод? Например, на странице фильма все фильмы того же режиссера? Понятно, что надо использовать контекстный фильтр во views. Вопрос: откуда брать аргумент в таком случае? Если только через PHP-код, то какой шаблон этого кода? Понимаю, что там всего пару строк, но я в программировании не разбираюсь, а все нагугленные решения не работают.
Если вы хотите связать два типа материала, то лучше всего использовать references (связи):
http://drupal.org/project/references
Вы добавляете поля связи в тип материала Фильм, где будет связь с Режиссером. Потом эти связи можно будет использовать в связях Views:
Views contextual filters, relationships - аргументы и отношения (связи)
Спасибо за ответ, Иван, но вы меня не поняли. Типы фильмы и режиссеры у меня уже связаны, через Entity Reference. И, например, у меня получилось вывести на странице режиссера все его фильмы в блоке, потому что аргумент для контекстного фильтра берется из URL. А что делать, если нужно вывести то же самое на странице конкретного фильма? В URL нужного аргумента нет, но он есть в поле "режиссер" ноды, которая выведена.
Аналогичный вопрос задавался и решение ему предлагалось здесь http://www.drupal.ru/node/67914 , но у меня это решение не сработало. Я понимаю, что через php нужную функцию легко можно состряпать, но сам не разбираюсь в программировании совершенно.
Ну и конечно (это же Друпал) есть модуль вроде как раз для этого, но он плохо развивается и поэтому не работает с entity reference. Это модуль views_arguments_extras. Судя по всему, он будет работать с node reference, но хотелось бы найти решение именно для entity reference.
Добрый день. Такой вопрос: как вывести на странице ноды в блоке список всех схожих с ней по некому полю других нод? Например, на странице фильма все фильмы того же режиссера?
Вот у вас есть нода фильма, вы создаете view с аргументом по nid, дальше вы добавляете связь с режиссером, потом вам нужно добавить еще вторую связь reverse referencing (или что-то около того, чтобы вывести все материалы в которых есть связь на нужного режиссера) причем вторая связь зависить должна от первой (зависимость выбирается в самом верху в редактирование связи) и уже вторую связь вы выставляете в аргумент nid (контекстный фильтр). Ну как-то так, нужно просто через две связи делать, решение будет простое, но будет кушать ресурсы сервера.
Да, у меня первая мысль была в том же ключе - контекстный фильтр по nid из url'a, но с установкой связи и подключением это связи в настройках фильтра. Но у меня это не сработало. Насчет двойной связи я если честно не очень понял, тоже думал в этом направлении, но решение и в правду будет нелогичным и нагруженным. На самом деле странно, что во views нет нормального решения из коробки, чтобы аргумент брался из заданного поля ноды. Т.е. оно есть, но для тех, кто знает php и друпаловский api. Ладно, не буду мучиться и вас мучить - буду использовать что-то из готовых модулей (http://drupal.org/node/323329).