Как создать представление, в котором отображаются другие узлы, имеющие ту же ссылку на сущность, что и текущая страница


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

Я перепробовал множество различных перестановок контекстуальных фильтров и отношений, но до сих пор мне это не удавалось.

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

(Этот вопрос относится к Drupal 7 со ссылкой на сущность. Тот же вопрос для Drupal 6 здесь).

Author: Community, 2012-06-14

3 answers

Я нашел другое (лучшее) решение, которое не требует написания PHP, если вы ссылаетесь на термины таксономии.

  1. Убедитесь, что вы фильтруете представление по типу контента, список которого хотите просмотреть, а не по тому, на который пытаетесь ссылаться.
  2. Добавьте контекстный фильтр, используя поле ссылки на сущность.
  3. Выберите "Указать значение по умолчанию" и выберите "Идентификатор термина таксономии из URL".
  4. Установите флажок "Загрузить фильтр по умолчанию со страницы узла, это хорошо для связанных блоки таксономии", а также любую другую конфигурацию, которую вы хотите.
  5. Сохраните представление и проверьте его.
 3
Author: davidneedham, 2016-04-07 11:47:10

Вот решение, использующее модуль Ссылка на сущность для отображения других узлов, которые ссылаются на тот же узел, на который ссылается текущий узел. Нет необходимости в отношениях, просто выполните следующие действия:

  1. Убедитесь, что вы фильтруете представление по типу контента, список которого хотите просмотреть, а не по тому, на который пытаетесь ссылаться.
  2. Добавьте контекстный фильтр, используя поле ссылки на сущность.
  3. Для поля ссылки на сущность выберите значение по умолчанию в PHP 1.
  4. Адаптируйте следующий код к именам ваших полей 2 и сохраните контекстный фильтр:

    $узел = menu_get_object();
    $referenced_node = $узел->имя_поля_йоур_поля['und'][0]['идентификатор цели'];
    возвращает $ссылочный_нод;

  5. Сохраните представление и проверьте его.

1disclaimer: PHP никогда не следует использовать в пользовательском интерфейсе из-за проблем с безопасностью, производительностью и отсутствием контроля версий. Как в результате правильный способ реализации этого решения включает написание собственного простого модуля, который создает блок, передающий аргумент в представление по мере его отображения в блоке. Я все еще включаю это, потому что независимо от того, игнорируют ли люди это предупреждение или используют его для написания модуля, надеюсь, это помогло.

РЕДАКТИРОВАТЬ: Если вы также хотите исключить текущий узел, вам нужно будет добавить дополнительный контекстный фильтр для NID и обязательно выбрать "исключить". вариант.

2 Не знаете, как называются ваши поля? Установите и включите модуль Devel и посетите узел. Перейдите на вкладку "Разработка" и перейдите по списку, чтобы найти нужное поле ссылки на сущность.

 3
Author: davidneedham, 2016-04-08 17:02:53

Попробуйте выбрать связь в контекстном фильтре.

 1
Author: Luiz Guilherme, 2012-06-14 13:46:55