Как создать представление, в котором отображаются другие узлы, имеющие ту же ссылку на сущность, что и текущая страница
У меня есть узлы заданий, которые связаны с организациями. Мне нужен блок боковой панели, в котором будут отображаться другие задания, связанные с той же организацией.
Я перепробовал множество различных перестановок контекстуальных фильтров и отношений, но до сих пор мне это не удавалось.
Я могу получить nid текущего узла только с помощью контекстного фильтра, но он фильтрует содержимое напрямую. Мне нужно просто получить указанный узел организации, а затем отфильтровать просмотр по этой ссылке, но я, кажется, не могу заставить ее работать.
(Этот вопрос относится к Drupal 7 со ссылкой на сущность. Тот же вопрос для Drupal 6 здесь).
3 answers
Я нашел другое (лучшее) решение, которое не требует написания PHP, если вы ссылаетесь на термины таксономии.
- Убедитесь, что вы фильтруете представление по типу контента, список которого хотите просмотреть, а не по тому, на который пытаетесь ссылаться.
- Добавьте контекстный фильтр, используя поле ссылки на сущность.
- Выберите "Указать значение по умолчанию" и выберите "Идентификатор термина таксономии из URL".
- Установите флажок "Загрузить фильтр по умолчанию со страницы узла, это хорошо для связанных блоки таксономии", а также любую другую конфигурацию, которую вы хотите.
- Сохраните представление и проверьте его.
Вот решение, использующее модуль Ссылка на сущность для отображения других узлов, которые ссылаются на тот же узел, на который ссылается текущий узел. Нет необходимости в отношениях, просто выполните следующие действия:
- Убедитесь, что вы фильтруете представление по типу контента, список которого хотите просмотреть, а не по тому, на который пытаетесь ссылаться.
- Добавьте контекстный фильтр, используя поле ссылки на сущность.
- Для поля ссылки на сущность выберите значение по умолчанию в PHP 1.
-
Адаптируйте следующий код к именам ваших полей 2 и сохраните контекстный фильтр:
$узел = menu_get_object();
$referenced_node = $узел->имя_поля_йоур_поля['und'][0]['идентификатор цели'];
возвращает $ссылочный_нод; Сохраните представление и проверьте его.
1disclaimer: PHP никогда не следует использовать в пользовательском интерфейсе из-за проблем с безопасностью, производительностью и отсутствием контроля версий. Как в результате правильный способ реализации этого решения включает написание собственного простого модуля, который создает блок, передающий аргумент в представление по мере его отображения в блоке. Я все еще включаю это, потому что независимо от того, игнорируют ли люди это предупреждение или используют его для написания модуля, надеюсь, это помогло.
РЕДАКТИРОВАТЬ: Если вы также хотите исключить текущий узел, вам нужно будет добавить дополнительный контекстный фильтр для NID и обязательно выбрать "исключить". вариант.
2 Не знаете, как называются ваши поля? Установите и включите модуль Devel и посетите узел. Перейдите на вкладку "Разработка" и перейдите по списку, чтобы найти нужное поле ссылки на сущность.
Попробуйте выбрать связь в контекстном фильтре.