Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Контекстный фильтр по аргументу, которого нет в URL

Контекстный фильтр по аргументу, которого нет в URL
, by

Добрый день. Такой вопрос: как вывести на странице ноды в блоке список всех схожих с ней по некому полю других нод? Например, на странице фильма все фильмы того же режиссера? Понятно, что надо использовать контекстный фильтр во views. Вопрос: откуда брать аргумент в таком случае? Если только через PHP-код, то какой шаблон этого кода? Понимаю, что там всего пару строк, но я в программировании не разбираюсь, а все нагугленные решения не работают.

1 answer
votes: 915
Answer

Если вы хотите связать два типа материала, то лучше всего использовать 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).